Revision 06c2f506 target-i386/helper.c
b/target-i386/helper.c | ||
---|---|---|
934 | 934 |
env->eflags &= ~(TF_MASK | VM_MASK | RF_MASK | NT_MASK); |
935 | 935 |
} |
936 | 936 |
|
937 |
void helper_syscall(void)
|
|
937 |
void helper_syscall(int next_eip_addend)
|
|
938 | 938 |
{ |
939 | 939 |
int selector; |
940 | 940 |
|
... | ... | |
943 | 943 |
} |
944 | 944 |
selector = (env->star >> 32) & 0xffff; |
945 | 945 |
if (env->hflags & HF_LMA_MASK) { |
946 |
ECX = env->eip; |
|
946 |
ECX = env->eip + next_eip_addend;
|
|
947 | 947 |
env->regs[11] = compute_eflags(); |
948 | 948 |
|
949 | 949 |
cpu_x86_set_cpl(env, 0); |
... | ... | |
963 | 963 |
else |
964 | 964 |
env->eip = env->cstar; |
965 | 965 |
} else { |
966 |
ECX = (uint32_t)env->eip;
|
|
966 |
ECX = (uint32_t)(env->eip + next_eip_addend);
|
|
967 | 967 |
|
968 | 968 |
cpu_x86_set_cpl(env, 0); |
969 | 969 |
cpu_x86_load_seg_cache(env, R_CS, selector & 0xfffc, |
... | ... | |
1119 | 1119 |
fprintf(logfile, " EAX=" TARGET_FMT_lx, EAX); |
1120 | 1120 |
} |
1121 | 1121 |
fprintf(logfile, "\n"); |
1122 |
cpu_dump_state(env, logfile, fprintf, X86_DUMP_CCOP); |
|
1123 | 1122 |
#if 0 |
1123 |
cpu_dump_state(env, logfile, fprintf, X86_DUMP_CCOP); |
|
1124 | 1124 |
{ |
1125 | 1125 |
int i; |
1126 | 1126 |
uint8_t *ptr; |
Also available in: Unified diff