diff options
author | Noam Camus <noamc@ezchip.com> | 2017-06-15 11:43:59 +0300 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2017-08-29 01:17:36 +0300 |
commit | 5b2189ab6ee0717babac912f779dcd440e942173 (patch) | |
tree | bbca2deb857ba309aa67aa71d7d74700d823290a /arch/arc/include/asm/switch_to.h | |
parent | 3f9cd874dcc8705b53c03431f0ae46c94e572349 (diff) | |
download | linux-5b2189ab6ee0717babac912f779dcd440e942173.tar.xz |
ARC: [plat-eznps] handle extra aux regs #1: save/restore on context switch
save EFLAGS, and GPA1 auxiliary registers during context switch,
since they may be changed by the new task in kernel mode, while using atomic
ops e.g. cmpxchg.
Signed-off-by: Noam Camus <noamc@ezchip.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc/include/asm/switch_to.h')
-rw-r--r-- | arch/arc/include/asm/switch_to.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/arc/include/asm/switch_to.h b/arch/arc/include/asm/switch_to.h index 1b171ab5fec0..f7d07feeea61 100644 --- a/arch/arc/include/asm/switch_to.h +++ b/arch/arc/include/asm/switch_to.h @@ -26,10 +26,19 @@ extern void fpu_save_restore(struct task_struct *p, struct task_struct *n); #endif /* !CONFIG_ARC_FPU_SAVE_RESTORE */ +#ifdef CONFIG_ARC_PLAT_EZNPS +extern void dp_save_restore(struct task_struct *p, struct task_struct *n); +#define ARC_EZNPS_DP_PREV(p, n) dp_save_restore(p, n) +#else +#define ARC_EZNPS_DP_PREV(p, n) + +#endif /* !CONFIG_ARC_PLAT_EZNPS */ + struct task_struct *__switch_to(struct task_struct *p, struct task_struct *n); #define switch_to(prev, next, last) \ do { \ + ARC_EZNPS_DP_PREV(prev, next); \ ARC_FPU_PREV(prev, next); \ last = __switch_to(prev, next);\ ARC_FPU_NEXT(next); \ |