summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2015-03-27 20:59:34 +0530
committerVineet Gupta <vgupta@synopsys.com>2015-06-19 18:09:39 +0530
commitc80417b61200072968225e2bed71ed699859a4a3 (patch)
treedff19d1c1a958d875be660220e3e32113c003be2 /arch
parent62fb64034d30293448de10a48c7ee47ee978e338 (diff)
ARC: entry.S: use single EXCEPTION_PROLOGUE
Returning from pure kernel mode and exception mode use the same code anyways. Remove one the duplicate blocks Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arc/kernel/entry-compact.S14
1 files changed, 6 insertions, 8 deletions
diff --git a/arch/arc/kernel/entry-compact.S b/arch/arc/kernel/entry-compact.S
index abc62cd10a8c..15d457b4403a 100644
--- a/arch/arc/kernel/entry-compact.S
+++ b/arch/arc/kernel/entry-compact.S
@@ -321,14 +321,11 @@ END(call_do_page_fault)
; decide that.
; if Returning from Exception
- bbit0 r10, STATUS_AE_BIT, not_exception
- EXCEPTION_EPILOGUE
- rtie
+ btst r10, STATUS_AE_BIT
+ bnz .Lexcep_ret
; Not Exception so maybe Interrupts (Level 1 or 2)
-not_exception:
-
#ifdef CONFIG_ARC_COMPACT_IRQ_LEVELS
; Level 2 interrupt return Path - from hardware standpoint
@@ -377,16 +374,17 @@ not_level2_interrupt:
#endif
- bbit0 r10, STATUS_A1_BIT, not_level1_interrupt
+ bbit0 r10, STATUS_A1_BIT, .Lpure_k_mode_ret
;return from level 1
INTERRUPT_EPILOGUE 1
debug_marker_l1:
rtie
-not_level1_interrupt:
+.Lexcep_ret:
+.Lpure_k_mode_ret:
- ;this case is for syscalls or Exceptions (with fake rtie)
+ ;this case is for syscalls or Exceptions or pure kernel mode
EXCEPTION_EPILOGUE
debug_marker_syscall: