Browse Source

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>
Vineet Gupta 12 years ago
parent
commit
ce147c7445
1 changed files with 3 additions and 1 deletions
  1. 3 1
      arch/arc/kernel/entry.S

+ 3 - 1
arch/arc/kernel/entry.S

@@ -396,7 +396,9 @@ ARC_ENTRY EV_TLBProtV
 
 	bl  do_misaligned_access
 
-	DISCARD_CALLEE_SAVED_USER
+	; TBD: optimize - do this only if a callee reg was involved
+	; either a dst of emulated LD/ST or src with address-writeback
+	RESTORE_CALLEE_SAVED_USER
 #else
 	bl  do_misaligned_error
 #endif