ARCv2: entry: rewrite to enable use of double load/stores LDD/STD
- the motivation was to be remove blatent copy-paste due to hasty support of CONFIG_ARC_IRQ_NO_AUTOSAVE support - but with refactoring we could use LDD/STD to greatly optimize the code Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
This commit is contained in:
@@ -55,7 +55,14 @@ int main(void)
|
||||
DEFINE(PT_r5, offsetof(struct pt_regs, r5));
|
||||
DEFINE(PT_r6, offsetof(struct pt_regs, r6));
|
||||
DEFINE(PT_r7, offsetof(struct pt_regs, r7));
|
||||
DEFINE(PT_r8, offsetof(struct pt_regs, r8));
|
||||
DEFINE(PT_r10, offsetof(struct pt_regs, r10));
|
||||
DEFINE(PT_r26, offsetof(struct pt_regs, r26));
|
||||
DEFINE(PT_ret, offsetof(struct pt_regs, ret));
|
||||
DEFINE(PT_blink, offsetof(struct pt_regs, blink));
|
||||
DEFINE(PT_lpe, offsetof(struct pt_regs, lp_end));
|
||||
DEFINE(PT_lpc, offsetof(struct pt_regs, lp_count));
|
||||
DEFINE(PT_user_r25, offsetof(struct pt_regs, user_r25));
|
||||
|
||||
DEFINE(SZ_CALLEE_REGS, sizeof(struct callee_regs));
|
||||
DEFINE(SZ_PT_REGS, sizeof(struct pt_regs));
|
||||
|
@@ -67,7 +67,7 @@ reserved:
|
||||
|
||||
ENTRY(handle_interrupt)
|
||||
|
||||
INTERRUPT_PROLOGUE irq
|
||||
INTERRUPT_PROLOGUE
|
||||
|
||||
# irq control APIs local_irq_save/restore/disable/enable fiddle with
|
||||
# global interrupt enable bits in STATUS32 (.IE for 1 prio, .E[] for 2 prio)
|
||||
@@ -223,7 +223,7 @@ debug_marker_l1:
|
||||
bset.nz r11, r11, AUX_IRQ_ACT_BIT_U ; NZ means U
|
||||
sr r11, [AUX_IRQ_ACT]
|
||||
|
||||
INTERRUPT_EPILOGUE irq
|
||||
INTERRUPT_EPILOGUE
|
||||
rtie
|
||||
|
||||
;####### Return from Exception / pure kernel mode #######
|
||||
|
Reference in New Issue
Block a user