mirror of https://github.com/xemu-project/xemu.git
target/i386: tcg: fix switching from 16-bit to 32-bit tasks or vice versa
The format of the task state segment is governed by bit 3 in the descriptor type field. On a task switch, the format for saving is given by the current value of TR's type field, while the format for loading is given by the new descriptor. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
a5505f6b5b
commit
1b627f389f
|
@ -319,7 +319,7 @@ static void switch_tss_ra(CPUX86State *env, int tss_selector,
|
|||
}
|
||||
|
||||
/* save the current state in the old TSS */
|
||||
if (type & 8) {
|
||||
if (old_type & 8) {
|
||||
/* 32 bit */
|
||||
cpu_stl_kernel_ra(env, env->tr.base + 0x20, next_eip, retaddr);
|
||||
cpu_stl_kernel_ra(env, env->tr.base + 0x24, old_eflags, retaddr);
|
||||
|
|
Loading…
Reference in New Issue