Revision d80c7d1c target-i386/helper.c
b/target-i386/helper.c | ||
---|---|---|
977 | 977 |
cpu_x86_set_cpl(env, 0); |
978 | 978 |
cpu_x86_load_seg_cache(env, R_CS, selector & 0xfffc, |
979 | 979 |
0, 0xffffffff, |
980 |
DESC_G_MASK | DESC_B_MASK | DESC_P_MASK |
|
|
980 |
DESC_G_MASK | DESC_P_MASK | |
|
981 | 981 |
DESC_S_MASK | |
982 | 982 |
DESC_CS_MASK | DESC_R_MASK | DESC_A_MASK | DESC_L_MASK); |
983 | 983 |
cpu_x86_load_seg_cache(env, R_SS, (selector + 8) & 0xfffc, |
... | ... | |
1028 | 1028 |
if (dflag == 2) { |
1029 | 1029 |
cpu_x86_load_seg_cache(env, R_CS, (selector + 16) | 3, |
1030 | 1030 |
0, 0xffffffff, |
1031 |
DESC_G_MASK | DESC_B_MASK | DESC_P_MASK |
|
|
1031 |
DESC_G_MASK | DESC_P_MASK | |
|
1032 | 1032 |
DESC_S_MASK | (3 << DESC_DPL_SHIFT) | |
1033 | 1033 |
DESC_CS_MASK | DESC_R_MASK | DESC_A_MASK | |
1034 | 1034 |
DESC_L_MASK); |
... | ... | |
2422 | 2422 |
if ((new_ss & 0xfffc) == 0) { |
2423 | 2423 |
#ifdef TARGET_X86_64 |
2424 | 2424 |
/* NULL ss is allowed in long mode if cpl != 3*/ |
2425 |
/* XXX: test CS64 ? */ |
|
2425 | 2426 |
if ((env->hflags & HF_LMA_MASK) && rpl != 3) { |
2426 | 2427 |
cpu_x86_load_seg_cache(env, R_SS, new_ss, |
2427 | 2428 |
0, 0xffffffff, |
2428 | 2429 |
DESC_G_MASK | DESC_B_MASK | DESC_P_MASK | |
2429 | 2430 |
DESC_S_MASK | (rpl << DESC_DPL_SHIFT) | |
2430 | 2431 |
DESC_W_MASK | DESC_A_MASK); |
2432 |
ss_e2 = DESC_B_MASK; /* XXX: should not be needed ? */ |
|
2431 | 2433 |
} else |
2432 | 2434 |
#endif |
2433 | 2435 |
{ |
... | ... | |
3716 | 3718 |
|
3717 | 3719 |
void helper_monitor(void) |
3718 | 3720 |
{ |
3719 |
if (ECX != 0) |
|
3721 |
if ((uint32_t)ECX != 0)
|
|
3720 | 3722 |
raise_exception(EXCP0D_GPF); |
3721 | 3723 |
/* XXX: store address ? */ |
3722 | 3724 |
} |
3723 | 3725 |
|
3724 | 3726 |
void helper_mwait(void) |
3725 | 3727 |
{ |
3726 |
if (ECX != 0) |
|
3728 |
if ((uint32_t)ECX != 0)
|
|
3727 | 3729 |
raise_exception(EXCP0D_GPF); |
3728 | 3730 |
/* XXX: not complete but not completely erroneous */ |
3729 | 3731 |
if (env->cpu_index != 0 || env->next_cpu != NULL) { |
Also available in: Unified diff