aboutsummaryrefslogtreecommitdiffstats
path: root/arch/nios2/include/asm/switch_to.h
diff options
context:
space:
mode:
authorLey Foon Tan <lftan@altera.com>2014-11-06 15:19:47 +0800
committerLey Foon Tan <lftan@altera.com>2014-12-08 12:55:53 +0800
commit71995e4d004f6afbc86cc4a80c4a281f6c00b07f (patch)
tree68139e7bb9dfee02e23384224e2fa20082e55653 /arch/nios2/include/asm/switch_to.h
parentnios2: Page table management (diff)
downloadlinux-dev-71995e4d004f6afbc86cc4a80c4a281f6c00b07f.tar.xz
linux-dev-71995e4d004f6afbc86cc4a80c4a281f6c00b07f.zip
nios2: Process management
This patch adds support for thread creation and context switching. Signed-off-by: Ley Foon Tan <lftan@altera.com>
Diffstat (limited to 'arch/nios2/include/asm/switch_to.h')
-rw-r--r--arch/nios2/include/asm/switch_to.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/arch/nios2/include/asm/switch_to.h b/arch/nios2/include/asm/switch_to.h
new file mode 100644
index 000000000000..c47b3f4afbcd
--- /dev/null
+++ b/arch/nios2/include/asm/switch_to.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2004 Microtronix Datacom Ltd.
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+#ifndef _ASM_NIOS2_SWITCH_TO_H
+#define _ASM_NIOS2_SWITCH_TO_H
+
+/*
+ * switch_to(n) should switch tasks to task ptr, first checking that
+ * ptr isn't the current task, in which case it does nothing. This
+ * also clears the TS-flag if the task we switched to has used the
+ * math co-processor latest.
+ */
+#define switch_to(prev, next, last) \
+{ \
+ void *_last; \
+ __asm__ __volatile__ ( \
+ "mov r4, %1\n" \
+ "mov r5, %2\n" \
+ "call resume\n" \
+ "mov %0,r4\n" \
+ : "=r" (_last) \
+ : "r" (prev), "r" (next) \
+ : "r4", "r5", "r7", "r8", "ra"); \
+ (last) = _last; \
+}
+
+#endif /* _ASM_NIOS2_SWITCH_TO_H */