From 7d307e9edc944e255fc3462ff536ffeb78ac2c68 Mon Sep 17 00:00:00 2001 From: ths Date: Tue, 23 Oct 2007 23:23:43 +0000 Subject: [PATCH] Enforce proper sign extension for lwl/lwr on MIPS64. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3430 c046a42c-6fe2-441c-8c8c-71466251a162 --- target-mips/op_mem.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target-mips/op_mem.c b/target-mips/op_mem.c index d402d616b..42f5e2ba3 100644 --- a/target-mips/op_mem.c +++ b/target-mips/op_mem.c @@ -89,7 +89,7 @@ void glue(op_lwl, MEMSUFFIX) (void) target_ulong tmp; tmp = glue(ldub, MEMSUFFIX)(T0); - T1 = (int32_t)((T1 & 0x00FFFFFF) | (tmp << 24)); + T1 = (T1 & 0x00FFFFFF) | (tmp << 24); if (GET_LMASK(T0) <= 2) { tmp = glue(ldub, MEMSUFFIX)(GET_OFFSET(T0, 1)); @@ -105,6 +105,7 @@ void glue(op_lwl, MEMSUFFIX) (void) tmp = glue(ldub, MEMSUFFIX)(GET_OFFSET(T0, 3)); T1 = (T1 & 0xFFFFFF00) | tmp; } + T1 = (int32_t)T1; RETURN(); } @@ -129,6 +130,7 @@ void glue(op_lwr, MEMSUFFIX) (void) tmp = glue(ldub, MEMSUFFIX)(GET_OFFSET(T0, -3)); T1 = (T1 & 0x00FFFFFF) | (tmp << 24); } + T1 = (int32_t)T1; RETURN(); }