On Tue, Sep 2, 2008 at 5:39 AM, Avi Kivity <address@hidden> wrote:
Glauber Costa wrote:
diff --git a/target-i386/op_helper.c b/target-i386/op_helper.c
index 0b5fdc0..433aa3f 100644
--- a/target-i386/op_helper.c
+++ b/target-i386/op_helper.c
@@ -600,7 +600,7 @@ do {\
#define PUSHL(ssp, sp, sp_mask, val)\
{\
sp -= 4;\
- stl_kernel((ssp) + (sp & (sp_mask)), (val));\
+ stl_kernel((uint32_t)((ssp) + (sp & (sp_mask))), (uint32_t)(val));\
}
Surly it is better to push this into the underlying virtual->physical
translation functions, so it applies everywhere?
btw, the cast is wrong for x86-64, so it must be qualified for 32-bit
operating modes.
The tests were all done with x86_64. This is a PUSHL macro, so it's
32-bit anyway.
A x86_64-only PUSHQ seems to do the right thing.