summaryrefslogtreecommitdiffstats
path: root/arch/arc/kernel/entry-compact.S
Commit message (Collapse)AuthorAgeFilesLines
* ARC: [arcompact] Handle bus error from userspace as Interrupt not exceptionVineet Gupta2015-11-141-4/+25
| | | | | | | | | | | | | | | | | Bus errors from userspace on ARCompact based cores are handled by core as a high priority L2 interrupt but current code treated it as interrupt Handling an interrupt like exception is certainly not going to go unnoticed. (and it worked so far as we never saw a Bus error from userspace until IPPK guys tested a DDR controller with ECC error detection etc hence needed to explicitly trigger/handle such errors) - So move mem_service exception handler from common code into ARCv2 code. - In ARCompact code, define mem_service as L2 interrupt handler which just drops down to pure kernel mode and goes of to enqueue SIGBUS Reported-by: Nelson Pereira <npereira@synopsys.com> Tested-by: Ana Martins <amartins@synopsys.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
* ARC: boot: Support Halt-on-reset and Run-on-reset SMP booting modesVineet Gupta2015-10-281-7/+3
| | | | | | | | | | | For Run-on-reset, non masters need to spin wait. For Halt-on-reset they can jump to entry point directly. Also while at it, made reset vector handler as "the" entry point for kernel including host debugger based boot (which uses the ELF header entry point) Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
* ARC: [arcompact] entry.S: Elide extra check/branch in exception ret pathVineet Gupta2015-10-171-12/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* ARC: [arcompact] entry.S: Document preemption games for L2 intrVineet Gupta2015-10-171-1/+14
| | | | Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
* ARC: entry.S: use single EXCEPTION_PROLOGUEVineet Gupta2015-06-191-8/+6
| | | | | | | 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>
* ARC: entry.S: move some code around for cache locality in return pathVineet Gupta2015-06-191-0/+2
| | | | Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
* ARC: entry.S: split into ARCompact ISA specific, common bitsVineet Gupta2015-06-191-0/+393
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
OpenPOWER on IntegriCloud