cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

switch_to.h (866B)


      1/*
      2 * Copyright (C) 2004 Microtronix Datacom Ltd.
      3 *
      4 * This file is subject to the terms and conditions of the GNU General Public
      5 * License. See the file "COPYING" in the main directory of this archive
      6 * for more details.
      7 */
      8#ifndef _ASM_NIOS2_SWITCH_TO_H
      9#define _ASM_NIOS2_SWITCH_TO_H
     10
     11/*
     12 * switch_to(n) should switch tasks to task ptr, first checking that
     13 * ptr isn't the current task, in which case it does nothing.  This
     14 * also clears the TS-flag if the task we switched to has used the
     15 * math co-processor latest.
     16 */
     17#define switch_to(prev, next, last)			\
     18{							\
     19	void *_last;					\
     20	__asm__ __volatile__ (				\
     21		"mov	r4, %1\n"			\
     22		"mov	r5, %2\n"			\
     23		"call	resume\n"			\
     24		"mov	%0,r4\n"			\
     25		: "=r" (_last)				\
     26		: "r" (prev), "r" (next)		\
     27		: "r4", "r5", "r7", "r8", "ra");	\
     28	(last) = _last;					\
     29}
     30
     31#endif /* _ASM_NIOS2_SWITCH_TO_H */