aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2013-09-18 08:38:01 -0400
committerVineet Gupta <vgupta@synopsys.com>2013-11-06 00:11:39 -0500
commit07ba69a46c3394fe6675483275337e5a79a959e0 (patch)
treec5c75c669193afb6ac315a5588f8b6666318ae1f
parent21a63b56044706aa37637315dd27d9d465bbd5c4 (diff)
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>
-rw-r--r--arch/arc/include/asm/unaligned.h3
-rw-r--r--arch/arc/kernel/entry.S4
-rw-r--r--arch/arc/kernel/traps.c3
3 files changed, 3 insertions, 7 deletions
diff --git a/arch/arc/include/asm/unaligned.h b/arch/arc/include/asm/unaligned.h
index 60702f3751d2..3e5f071bc00c 100644
--- a/arch/arc/include/asm/unaligned.h
+++ b/arch/arc/include/asm/unaligned.h
@@ -22,7 +22,8 @@ static inline int
22misaligned_fixup(unsigned long address, struct pt_regs *regs, 22misaligned_fixup(unsigned long address, struct pt_regs *regs,
23 struct callee_regs *cregs) 23 struct callee_regs *cregs)
24{ 24{
25 return 0; 25 /* Not fixed */
26 return 1;
26} 27}
27#endif 28#endif
28 29
diff --git a/arch/arc/kernel/entry.S b/arch/arc/kernel/entry.S
index eb3f3c5a700a..daa0e7990270 100644
--- a/arch/arc/kernel/entry.S
+++ b/arch/arc/kernel/entry.S
@@ -366,7 +366,6 @@ ARC_ENTRY EV_TLBProtV
366 ;========== (6b) Non aligned access ============ 366 ;========== (6b) Non aligned access ============
3674: 3674:
368 368
369#ifdef CONFIG_ARC_MISALIGN_ACCESS
370 SAVE_CALLEE_SAVED_USER 369 SAVE_CALLEE_SAVED_USER
371 mov r2, sp ; callee_regs 370 mov r2, sp ; callee_regs
372 371
@@ -375,9 +374,6 @@ ARC_ENTRY EV_TLBProtV
375 ; TBD: optimize - do this only if a callee reg was involved 374 ; TBD: optimize - do this only if a callee reg was involved
376 ; either a dst of emulated LD/ST or src with address-writeback 375 ; either a dst of emulated LD/ST or src with address-writeback
377 RESTORE_CALLEE_SAVED_USER 376 RESTORE_CALLEE_SAVED_USER
378#else
379 bl do_misaligned_error
380#endif
381 377
382 b ret_from_exception 378 b ret_from_exception
383 379
diff --git a/arch/arc/kernel/traps.c b/arch/arc/kernel/traps.c
index e21692d2fdab..3eadfdabc322 100644
--- a/arch/arc/kernel/traps.c
+++ b/arch/arc/kernel/traps.c
@@ -84,19 +84,18 @@ DO_ERROR_INFO(SIGBUS, "Invalid Mem Access", do_memory_error, BUS_ADRERR)
84DO_ERROR_INFO(SIGTRAP, "Breakpoint Set", trap_is_brkpt, TRAP_BRKPT) 84DO_ERROR_INFO(SIGTRAP, "Breakpoint Set", trap_is_brkpt, TRAP_BRKPT)
85DO_ERROR_INFO(SIGBUS, "Misaligned Access", do_misaligned_error, BUS_ADRALN) 85DO_ERROR_INFO(SIGBUS, "Misaligned Access", do_misaligned_error, BUS_ADRALN)
86 86
87#ifdef CONFIG_ARC_MISALIGN_ACCESS
88/* 87/*
89 * Entry Point for Misaligned Data access Exception, for emulating in software 88 * Entry Point for Misaligned Data access Exception, for emulating in software
90 */ 89 */
91int do_misaligned_access(unsigned long address, struct pt_regs *regs, 90int do_misaligned_access(unsigned long address, struct pt_regs *regs,
92 struct callee_regs *cregs) 91 struct callee_regs *cregs)
93{ 92{
93 /* If emulation not enabled, or failed, kill the task */
94 if (misaligned_fixup(address, regs, cregs) != 0) 94 if (misaligned_fixup(address, regs, cregs) != 0)
95 return do_misaligned_error(address, regs); 95 return do_misaligned_error(address, regs);
96 96
97 return 0; 97 return 0;
98} 98}
99#endif
100 99
101/* 100/*
102 * Entry point for miscll errors such as Nested Exceptions 101 * Entry point for miscll errors such as Nested Exceptions