Revision 0d1a29f9 cpu-exec.c
b/cpu-exec.c | ||
---|---|---|
123 | 123 |
#if defined(TARGET_I386) |
124 | 124 |
#ifdef reg_EAX |
125 | 125 |
saved_EAX = EAX; |
126 |
EAX = env->regs[R_EAX]; |
|
127 | 126 |
#endif |
128 | 127 |
#ifdef reg_ECX |
129 | 128 |
saved_ECX = ECX; |
130 |
ECX = env->regs[R_ECX]; |
|
131 | 129 |
#endif |
132 | 130 |
#ifdef reg_EDX |
133 | 131 |
saved_EDX = EDX; |
134 |
EDX = env->regs[R_EDX]; |
|
135 | 132 |
#endif |
136 | 133 |
#ifdef reg_EBX |
137 | 134 |
saved_EBX = EBX; |
138 |
EBX = env->regs[R_EBX]; |
|
139 | 135 |
#endif |
140 | 136 |
#ifdef reg_ESP |
141 | 137 |
saved_ESP = ESP; |
142 |
ESP = env->regs[R_ESP]; |
|
143 | 138 |
#endif |
144 | 139 |
#ifdef reg_EBP |
145 | 140 |
saved_EBP = EBP; |
146 |
EBP = env->regs[R_EBP]; |
|
147 | 141 |
#endif |
148 | 142 |
#ifdef reg_ESI |
149 | 143 |
saved_ESI = ESI; |
150 |
ESI = env->regs[R_ESI]; |
|
151 | 144 |
#endif |
152 | 145 |
#ifdef reg_EDI |
153 | 146 |
saved_EDI = EDI; |
154 |
EDI = env->regs[R_EDI]; |
|
155 | 147 |
#endif |
156 |
|
|
148 |
|
|
149 |
env_to_regs(); |
|
157 | 150 |
/* put eflags in CPU temporary format */ |
158 | 151 |
CC_SRC = env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C); |
159 | 152 |
DF = 1 - (2 * ((env->eflags >> 10) & 1)); |
... | ... | |
353 | 346 |
spin_lock(&tb_lock); |
354 | 347 |
|
355 | 348 |
tb_invalidated_flag = 0; |
349 |
|
|
350 |
regs_to_env(); /* XXX: do it just before cpu_gen_code() */ |
|
356 | 351 |
|
357 | 352 |
/* find translated block using physical mappings */ |
358 | 353 |
phys_pc = get_phys_addr_code(env, (unsigned long)pc); |
... | ... | |
556 | 551 |
#endif |
557 | 552 |
} |
558 | 553 |
} else { |
554 |
env_to_regs(); |
|
559 | 555 |
} |
560 | 556 |
} /* for(;;) */ |
561 | 557 |
|
Also available in: Unified diff