diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2015-10-08 14:22:27 +0200 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2015-10-17 14:18:23 +0200 |
commit | 9fabcc636bf57dcb9c6fc5b1f34861c548944fd4 (patch) | |
tree | a3924e140769864304736e3f8354e62761bf693c /arch/arc/include/asm | |
parent | ARC: [arcompact] entry.S: Document preemption games for L2 intr (diff) | |
download | linux-9fabcc636bf57dcb9c6fc5b1f34861c548944fd4.tar.xz linux-9fabcc636bf57dcb9c6fc5b1f34861c548944fd4.zip |
ARC: [arcompact] entry.S: Elide extra check/branch in exception ret path
This is done by improving the laddering logic !
Before:
if Exception
goto excep_or_pure_k_ret
if !Interrupt(L2)
goto l1_chk
else
INTERRUPT_EPILOGUE 2
l1_chk:
if !Interrupt(L1) (i.e. pure kernel mode)
goto excep_or_pure_k_ret
else
INTERRUPT_EPILOGUE 1
excep_or_pure_k_ret:
EXCEPTION_EPILOGUE
Now:
if !Interrupt(L1 or L2) (i.e. exception or pure kernel mode)
goto excep_or_pure_k_ret
; guaranteed to be an interrupt
if !Interrupt(L2)
goto l1_ret
else
INTERRUPT_EPILOGUE 2
; by virtue of above, no need to chk for L1 active
l1_ret:
INTERRUPT_EPILOGUE 1
excep_or_pure_k_ret:
EXCEPTION_EPILOGUE
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc/include/asm')
0 files changed, 0 insertions, 0 deletions