Commit 62fb6403 authored by Vineet Gupta's avatar Vineet Gupta
Browse files

ARC: entry.S: micro-optimize Trap handler



Elide the need to re-read ECR in Trap handler by ensuring that
EXCEPTION_PROLOGUE does that at the very end just before returning
to Trap handler

ARCv2 EXCEPTION_PROLOGUE already did that, so same for ARcompact and the
common trap handler adjusted to use cached ECR

Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
parent c7e6d792
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -181,8 +181,6 @@
	/* ARC700 doesn't provide auto-stack switching */
	SWITCH_TO_KERNEL_STK

	lr	r9, [ecr]
	st      r9, [sp, 8]    /* ECR */
	st      r0, [sp, 4]    /* orig_r0, needed only for sys calls */

	/* Restore r9 used to code the early prologue */
@@ -198,6 +196,9 @@
	PUSHAX	lp_end
	PUSHAX	lp_start
	PUSHAX	erbta

	lr	r9, [ecr]
	st      r9, [sp, PT_event]    /* EV_Trap expects r9 to have ECR */
.endm

/*--------------------------------------------------------------
+2 −2
Original line number Diff line number Diff line
@@ -258,8 +258,8 @@ ENTRY(EV_Trap)
	EXCEPTION_PROLOGUE

	;============ TRAP 1   :breakpoints
	lr     r10, [ecr]
	bmsk.f 0, r10, 7
	; Check ECR for trap with arg (PROLOGUE ensures r9 has ECR)
	bmsk.f 0, r9, 7
	bnz    trap_with_param

	;============ TRAP  (no param): syscall top level