diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2013-04-06 07:41:58 -0400 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2013-05-07 04:13:55 -0400 |
commit | ce147c7445c28fcf38813f62b2a2bb1266db9ef4 (patch) | |
tree | 6c55d139cd6b38ba3368e18b326c0304216f6f4a /arch/arc | |
parent | c723ea4620a67fb0dbed5f5c33183543799e2177 (diff) |
ARC: unaligned access emulation broken if callee-reg dest of LD/ST
The fixup code correctly updates the callee-regs on stack, but
fails to unwind it into actual register file. Thus userspace won't see
the update.
Reported-by: Noam Camus <noamc@ezchip.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc')
-rw-r--r-- | arch/arc/kernel/entry.S | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/arc/kernel/entry.S b/arch/arc/kernel/entry.S index 666a486f1e7b..0c6d664d4a83 100644 --- a/arch/arc/kernel/entry.S +++ b/arch/arc/kernel/entry.S | |||
@@ -396,7 +396,9 @@ ARC_ENTRY EV_TLBProtV | |||
396 | 396 | ||
397 | bl do_misaligned_access | 397 | bl do_misaligned_access |
398 | 398 | ||
399 | DISCARD_CALLEE_SAVED_USER | 399 | ; TBD: optimize - do this only if a callee reg was involved |
400 | ; either a dst of emulated LD/ST or src with address-writeback | ||
401 | RESTORE_CALLEE_SAVED_USER | ||
400 | #else | 402 | #else |
401 | bl do_misaligned_error | 403 | bl do_misaligned_error |
402 | #endif | 404 | #endif |