ARC: Reduce #ifdef'ery for unaligned access emulation
Emulation not enabled is treated as if the fixup failed, so no need for special #ifdef checks. Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
This commit is contained in:
Родитель
21a63b5604
Коммит
07ba69a46c
|
@ -22,7 +22,8 @@ static inline int
|
||||||
misaligned_fixup(unsigned long address, struct pt_regs *regs,
|
misaligned_fixup(unsigned long address, struct pt_regs *regs,
|
||||||
struct callee_regs *cregs)
|
struct callee_regs *cregs)
|
||||||
{
|
{
|
||||||
return 0;
|
/* Not fixed */
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -366,7 +366,6 @@ ARC_ENTRY EV_TLBProtV
|
||||||
;========== (6b) Non aligned access ============
|
;========== (6b) Non aligned access ============
|
||||||
4:
|
4:
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_MISALIGN_ACCESS
|
|
||||||
SAVE_CALLEE_SAVED_USER
|
SAVE_CALLEE_SAVED_USER
|
||||||
mov r2, sp ; callee_regs
|
mov r2, sp ; callee_regs
|
||||||
|
|
||||||
|
@ -375,9 +374,6 @@ ARC_ENTRY EV_TLBProtV
|
||||||
; TBD: optimize - do this only if a callee reg was involved
|
; TBD: optimize - do this only if a callee reg was involved
|
||||||
; either a dst of emulated LD/ST or src with address-writeback
|
; either a dst of emulated LD/ST or src with address-writeback
|
||||||
RESTORE_CALLEE_SAVED_USER
|
RESTORE_CALLEE_SAVED_USER
|
||||||
#else
|
|
||||||
bl do_misaligned_error
|
|
||||||
#endif
|
|
||||||
|
|
||||||
b ret_from_exception
|
b ret_from_exception
|
||||||
|
|
||||||
|
|
|
@ -84,19 +84,18 @@ DO_ERROR_INFO(SIGBUS, "Invalid Mem Access", do_memory_error, BUS_ADRERR)
|
||||||
DO_ERROR_INFO(SIGTRAP, "Breakpoint Set", trap_is_brkpt, TRAP_BRKPT)
|
DO_ERROR_INFO(SIGTRAP, "Breakpoint Set", trap_is_brkpt, TRAP_BRKPT)
|
||||||
DO_ERROR_INFO(SIGBUS, "Misaligned Access", do_misaligned_error, BUS_ADRALN)
|
DO_ERROR_INFO(SIGBUS, "Misaligned Access", do_misaligned_error, BUS_ADRALN)
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_MISALIGN_ACCESS
|
|
||||||
/*
|
/*
|
||||||
* Entry Point for Misaligned Data access Exception, for emulating in software
|
* Entry Point for Misaligned Data access Exception, for emulating in software
|
||||||
*/
|
*/
|
||||||
int do_misaligned_access(unsigned long address, struct pt_regs *regs,
|
int do_misaligned_access(unsigned long address, struct pt_regs *regs,
|
||||||
struct callee_regs *cregs)
|
struct callee_regs *cregs)
|
||||||
{
|
{
|
||||||
|
/* If emulation not enabled, or failed, kill the task */
|
||||||
if (misaligned_fixup(address, regs, cregs) != 0)
|
if (misaligned_fixup(address, regs, cregs) != 0)
|
||||||
return do_misaligned_error(address, regs);
|
return do_misaligned_error(address, regs);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Entry point for miscll errors such as Nested Exceptions
|
* Entry point for miscll errors such as Nested Exceptions
|
||||||
|
|
Загрузка…
Ссылка в новой задаче