瀏覽代碼

microblaze: Fix unaligned exception for little endian platform

Half word unaligned accesses need to be fixed.

Signed-off-by: Michal Simek <monstr@monstr.eu>
Michal Simek 15 年之前
父節點
當前提交
e3288f3101
共有 1 個文件被更改,包括 9 次插入0 次删除
  1. 9 0
      arch/microblaze/kernel/hw_exception_handler.S

+ 9 - 0
arch/microblaze/kernel/hw_exception_handler.S

@@ -945,11 +945,20 @@ store3:	sbi	r3, r4, 2;
 store4:	sbi	r3, r4, 3;	/* Delay slot */
 ex_shw_vm:
 	/* Store the lower half-word, byte-by-byte into destination address */
+#ifdef __MICROBLAZEEL__
+	lbui	r3, r5, 0;
+store5:	sbi	r3, r4, 0;
+	lbui	r3, r5, 1;
+	brid	ret_from_exc;
+store6:	sbi	r3, r4, 1;	/* Delay slot */
+#else
 	lbui	r3, r5, 2;
 store5:	sbi	r3, r4, 0;
 	lbui	r3, r5, 3;
 	brid	ret_from_exc;
 store6:	sbi	r3, r4, 1;	/* Delay slot */
+#endif
+
 ex_sw_end_vm:			/* Exception handling of store word, ends. */
 
 /* We have to prevent cases that get/put_user macros get unaligned pointer