sh: remove EXPEVT vector from stack on sh3/sh4/sh4a
Remove EXPEVT vector from the stack, lookup_exception_vector() for sh3/sh4/sh4a is already using k2 to get the vector. Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
@@ -122,14 +122,12 @@ extern void user_disable_single_step(struct task_struct *);
|
|||||||
#ifdef CONFIG_SH_DSP
|
#ifdef CONFIG_SH_DSP
|
||||||
#define task_pt_regs(task) \
|
#define task_pt_regs(task) \
|
||||||
((struct pt_regs *) (task_stack_page(task) + THREAD_SIZE \
|
((struct pt_regs *) (task_stack_page(task) + THREAD_SIZE \
|
||||||
- sizeof(struct pt_dspregs) - sizeof(unsigned long)) - 1)
|
- sizeof(struct pt_dspregs)) - 1)
|
||||||
#define task_pt_dspregs(task) \
|
#define task_pt_dspregs(task) \
|
||||||
((struct pt_dspregs *) (task_stack_page(task) + THREAD_SIZE \
|
((struct pt_dspregs *) (task_stack_page(task) + THREAD_SIZE) - 1)
|
||||||
- sizeof(unsigned long)) - 1)
|
|
||||||
#else
|
#else
|
||||||
#define task_pt_regs(task) \
|
#define task_pt_regs(task) \
|
||||||
((struct pt_regs *) (task_stack_page(task) + THREAD_SIZE \
|
((struct pt_regs *) (task_stack_page(task) + THREAD_SIZE) - 1)
|
||||||
- sizeof(unsigned long)) - 1)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline unsigned long profile_pc(struct pt_regs *regs)
|
static inline unsigned long profile_pc(struct pt_regs *regs)
|
||||||
|
@@ -312,7 +312,6 @@ skip_restore:
|
|||||||
mov #0, k1
|
mov #0, k1
|
||||||
mov.b k1, @k0
|
mov.b k1, @k0
|
||||||
#endif
|
#endif
|
||||||
mov.l @r15+, k2 ! restore EXPEVT
|
|
||||||
mov k4, r15
|
mov k4, r15
|
||||||
rte
|
rte
|
||||||
nop
|
nop
|
||||||
@@ -487,20 +486,18 @@ handle_exception_special:
|
|||||||
.align L1_CACHE_SHIFT
|
.align L1_CACHE_SHIFT
|
||||||
|
|
||||||
! save_regs()
|
! save_regs()
|
||||||
! - save vector, default tra, macl, mach, gbr, ssr, pr* and spc on the stack
|
! - save default tra, macl, mach, gbr, ssr, pr* and spc on the stack
|
||||||
! - save r15*, r14, r13, r12, r11, r10, r9, r8 on the stack
|
! - save r15*, r14, r13, r12, r11, r10, r9, r8 on the stack
|
||||||
! - switch bank
|
! - switch bank
|
||||||
! - save r7, r6, r5, r4, r3, r2, r1, r0 on the stack
|
! - save r7, r6, r5, r4, r3, r2, r1, r0 on the stack
|
||||||
! k0 contains original stack pointer*
|
! k0 contains original stack pointer*
|
||||||
! k1 trashed
|
! k1 trashed
|
||||||
! k2 passes vector (EXPEVT)
|
|
||||||
! k3 passes original pr*
|
! k3 passes original pr*
|
||||||
! k4 trashed
|
! k4 trashed
|
||||||
! BL=1 on entry, on exit BL=0.
|
! BL=1 on entry, on exit BL=0.
|
||||||
|
|
||||||
save_regs:
|
save_regs:
|
||||||
mov #-1, r1
|
mov #-1, r1
|
||||||
mov.l k2, @-r15 ! vector in k2
|
|
||||||
mov.l k1, @-r15 ! set TRA (default: -1)
|
mov.l k1, @-r15 ! set TRA (default: -1)
|
||||||
sts.l macl, @-r15
|
sts.l macl, @-r15
|
||||||
sts.l mach, @-r15
|
sts.l mach, @-r15
|
||||||
|
Reference in New Issue
Block a user