浏览代码

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 年之前
父节点
当前提交
ce147c7445
共有 1 个文件被更改,包括 3 次插入1 次删除
  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