RSP update fix for x86_64 in iret
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1548 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
81eea5ebb6
commit
2c8e030185
@ -2012,7 +2012,6 @@ static inline void helper_ret_protected(int shift, int is_iret, int addend)
|
|||||||
#endif
|
#endif
|
||||||
sp_mask = get_sp_mask(env->segs[R_SS].flags);
|
sp_mask = get_sp_mask(env->segs[R_SS].flags);
|
||||||
sp = ESP;
|
sp = ESP;
|
||||||
/* XXX: ssp is zero in 64 bit ? */
|
|
||||||
ssp = env->segs[R_SS].base;
|
ssp = env->segs[R_SS].base;
|
||||||
new_eflags = 0; /* avoid warning */
|
new_eflags = 0; /* avoid warning */
|
||||||
#ifdef TARGET_X86_64
|
#ifdef TARGET_X86_64
|
||||||
@ -2145,7 +2144,7 @@ static inline void helper_ret_protected(int shift, int is_iret, int addend)
|
|||||||
cpu_x86_set_cpl(env, rpl);
|
cpu_x86_set_cpl(env, rpl);
|
||||||
sp = new_esp;
|
sp = new_esp;
|
||||||
#ifdef TARGET_X86_64
|
#ifdef TARGET_X86_64
|
||||||
if (shift == 2)
|
if (env->hflags & HF_CS64_MASK)
|
||||||
sp_mask = -1;
|
sp_mask = -1;
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user