|
@@ -16,6 +16,9 @@
|
|
|
|
|
|
#include <asm/asm-offsets.h>
|
|
|
#include <linux/sched.h>
|
|
|
+#ifdef CONFIG_ARC_PLAT_EZNPS
|
|
|
+#include <plat/ctop.h>
|
|
|
+#endif
|
|
|
|
|
|
#define KSP_WORD_OFF ((TASK_THREAD + THREAD_KSP) / 4)
|
|
|
|
|
@@ -66,10 +69,17 @@ __switch_to(struct task_struct *prev_task, struct task_struct *next_task)
|
|
|
*/
|
|
|
#ifndef CONFIG_SMP
|
|
|
"st %2, [@_current_task] \n\t"
|
|
|
+#else
|
|
|
+#ifdef CONFIG_ARC_PLAT_EZNPS
|
|
|
+ "lr r24, [%4] \n\t"
|
|
|
+#ifndef CONFIG_EZNPS_MTM_EXT
|
|
|
+ "lsr r24, r24, 4 \n\t"
|
|
|
+#endif
|
|
|
#else
|
|
|
"lr r24, [identity] \n\t"
|
|
|
"lsr r24, r24, 8 \n\t"
|
|
|
"bmsk r24, r24, 7 \n\t"
|
|
|
+#endif
|
|
|
"add2 r24, @_current_task, r24 \n\t"
|
|
|
"st %2, [r24] \n\t"
|
|
|
#endif
|
|
@@ -107,6 +117,9 @@ __switch_to(struct task_struct *prev_task, struct task_struct *next_task)
|
|
|
|
|
|
: "=r"(tmp)
|
|
|
: "n"(KSP_WORD_OFF), "r"(next), "r"(prev)
|
|
|
+#ifdef CONFIG_ARC_PLAT_EZNPS
|
|
|
+ , "i"(CTOP_AUX_LOGIC_GLOBAL_ID)
|
|
|
+#endif
|
|
|
: "blink"
|
|
|
);
|
|
|
|