Commit 9ddff3d2c44ceeba8dcbb5294183404ce73448c2
1 parent
679dee3c
Make i386-softmmu boot on Sparc host
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6971 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
10 additions
and
0 deletions
cpu-exec.c
| @@ -253,6 +253,11 @@ int cpu_exec(CPUState *env1) | @@ -253,6 +253,11 @@ int cpu_exec(CPUState *env1) | ||
| 253 | /* prepare setjmp context for exception handling */ | 253 | /* prepare setjmp context for exception handling */ |
| 254 | for(;;) { | 254 | for(;;) { |
| 255 | if (setjmp(env->jmp_env) == 0) { | 255 | if (setjmp(env->jmp_env) == 0) { |
| 256 | +#if defined(__sparc__) && !defined(HOST_SOLARIS) | ||
| 257 | +#undef env | ||
| 258 | + env = cpu_single_env; | ||
| 259 | +#define env cpu_single_env | ||
| 260 | +#endif | ||
| 256 | env->current_tb = NULL; | 261 | env->current_tb = NULL; |
| 257 | /* if an exception is pending, we execute it here */ | 262 | /* if an exception is pending, we execute it here */ |
| 258 | if (env->exception_index >= 0) { | 263 | if (env->exception_index >= 0) { |
| @@ -390,6 +395,11 @@ int cpu_exec(CPUState *env1) | @@ -390,6 +395,11 @@ int cpu_exec(CPUState *env1) | ||
| 390 | env->interrupt_request &= ~(CPU_INTERRUPT_HARD | CPU_INTERRUPT_VIRQ); | 395 | env->interrupt_request &= ~(CPU_INTERRUPT_HARD | CPU_INTERRUPT_VIRQ); |
| 391 | intno = cpu_get_pic_interrupt(env); | 396 | intno = cpu_get_pic_interrupt(env); |
| 392 | qemu_log_mask(CPU_LOG_TB_IN_ASM, "Servicing hardware INT=0x%02x\n", intno); | 397 | qemu_log_mask(CPU_LOG_TB_IN_ASM, "Servicing hardware INT=0x%02x\n", intno); |
| 398 | +#if defined(__sparc__) && !defined(HOST_SOLARIS) | ||
| 399 | +#undef env | ||
| 400 | + env = cpu_single_env; | ||
| 401 | +#define env cpu_single_env | ||
| 402 | +#endif | ||
| 393 | do_interrupt(intno, 0, 0, 0, 1); | 403 | do_interrupt(intno, 0, 0, 0, 1); |
| 394 | /* ensure that no TB jump will be modified as | 404 | /* ensure that no TB jump will be modified as |
| 395 | the program flow was changed */ | 405 | the program flow was changed */ |