aboutsummaryrefslogtreecommitdiff
path: root/cpu-exec.c
diff options
context:
space:
mode:
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2009-04-04 07:41:20 +0000
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2009-04-04 07:41:20 +0000
commit9ddff3d2c44ceeba8dcbb5294183404ce73448c2 (patch)
treea796c9399056a9e82753ca18e2fa186d62867d8c /cpu-exec.c
parent679dee3c6ca84c9111087808d3bfeb768d402566 (diff)
downloadqemu-9ddff3d2c44ceeba8dcbb5294183404ce73448c2.zip
qemu-9ddff3d2c44ceeba8dcbb5294183404ce73448c2.tar.gz
qemu-9ddff3d2c44ceeba8dcbb5294183404ce73448c2.tar.bz2
Make i386-softmmu boot on Sparc host
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6971 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'cpu-exec.c')
-rw-r--r--cpu-exec.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/cpu-exec.c b/cpu-exec.c
index cf7c1fb..0ce3f98 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -253,6 +253,11 @@ int cpu_exec(CPUState *env1)
/* prepare setjmp context for exception handling */
for(;;) {
if (setjmp(env->jmp_env) == 0) {
+#if defined(__sparc__) && !defined(HOST_SOLARIS)
+#undef env
+ env = cpu_single_env;
+#define env cpu_single_env
+#endif
env->current_tb = NULL;
/* if an exception is pending, we execute it here */
if (env->exception_index >= 0) {
@@ -390,6 +395,11 @@ int cpu_exec(CPUState *env1)
env->interrupt_request &= ~(CPU_INTERRUPT_HARD | CPU_INTERRUPT_VIRQ);
intno = cpu_get_pic_interrupt(env);
qemu_log_mask(CPU_LOG_TB_IN_ASM, "Servicing hardware INT=0x%02x\n", intno);
+#if defined(__sparc__) && !defined(HOST_SOLARIS)
+#undef env
+ env = cpu_single_env;
+#define env cpu_single_env
+#endif
do_interrupt(intno, 0, 0, 0, 1);
/* ensure that no TB jump will be modified as
the program flow was changed */