Commit 07ba69a4 authored by Vineet Gupta's avatar Vineet Gupta

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: default avatarVineet Gupta <vgupta@synopsys.com>
parent 21a63b56
...@@ -22,7 +22,8 @@ static inline int ...@@ -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 ...@@ -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 ...@@ -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) ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment