209 |
#endif |
#endif |
210 |
} |
} |
211 |
env->exception_index = -1; |
env->exception_index = -1; |
212 |
|
} |
213 |
|
#ifdef USE_KQEMU |
214 |
|
if (kqemu_is_ok(env) && env->interrupt_request == 0) { |
215 |
|
int ret; |
216 |
|
env->eflags = env->eflags | cc_table[CC_OP].compute_all() | (DF & DF_MASK); |
217 |
|
ret = kqemu_cpu_exec(env); |
218 |
|
/* put eflags in CPU temporary format */ |
219 |
|
CC_SRC = env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C); |
220 |
|
DF = 1 - (2 * ((env->eflags >> 10) & 1)); |
221 |
|
CC_OP = CC_OP_EFLAGS; |
222 |
|
env->eflags &= ~(DF_MASK | CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C); |
223 |
|
if (ret == 1) { |
224 |
|
/* exception */ |
225 |
|
longjmp(env->jmp_env, 1); |
226 |
|
} else if (ret == 2) { |
227 |
|
/* softmmu execution needed */ |
228 |
|
} else { |
229 |
|
if (env->interrupt_request != 0) { |
230 |
|
/* hardware interrupt will be executed just after */ |
231 |
|
} else { |
232 |
|
/* otherwise, we restart */ |
233 |
|
longjmp(env->jmp_env, 1); |
234 |
|
} |
235 |
|
} |
236 |
} |
} |
237 |
|
#endif |
238 |
|
|
239 |
T0 = 0; /* force lookup of first TB */ |
T0 = 0; /* force lookup of first TB */ |
240 |
for(;;) { |
for(;;) { |
241 |
#ifdef __sparc__ |
#ifdef __sparc__ |