diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2013-05-20 13:36:09 -0600 |
---|---|---|
committer | John Rigby <john.rigby@linaro.org> | 2013-05-24 10:50:04 -0600 |
commit | bd4f4da18811fc45f684f33fdd9030a39b7d0b78 (patch) | |
tree | 9564f2e93e97d4f211b105a6c26641c3f8102671 | |
parent | 0aa888afe73373e0e9511bfeb79e93b70475f2cf (diff) |
linux-user: no fpe with aarch64kvm-aarch64-wip
From Peter Maydell, quick work around
for missing linux-user/aarch64/nwfpe
This needs to be squashed with one of the
earlier linux-user commits.
Signed-off-by: John Rigby <john.rigby@linaro.org>
-rw-r--r-- | linux-user/main.c | 9 | ||||
-rw-r--r-- | linux-user/qemu.h | 4 |
2 files changed, 12 insertions, 1 deletions
diff --git a/linux-user/main.c b/linux-user/main.c index 539d45b7b..4fbc6fb64 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -713,6 +713,14 @@ void cpu_loop(CPUARMState *env) switch(trapnr) { case EXCP_UDEF: { +#ifdef TARGET_AARCH64 + /* obvious rubbish. aarch64 probably needs its own top loop */ + info.si_signo = SIGILL; + info.si_errno = 0; + info.si_code = TARGET_ILL_ILLOPN; + info._sifields._sigfault._addr = env->regs[15]; + queue_signal(env, info.si_signo, &info); +#else TaskState *ts = env->opaque; uint32_t opcode; int rc; @@ -780,6 +788,7 @@ void cpu_loop(CPUARMState *env) /* increment PC */ env->regs[15] += 4; } +#endif /* not AArch64 */ } break; case EXCP_SWI: diff --git a/linux-user/qemu.h b/linux-user/qemu.h index b10e9572a..5d27d0d1e 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -79,7 +79,7 @@ struct vm86_saved_state { }; #endif -#ifdef TARGET_ARM +#if defined(TARGET_ARM) && defined(TARGET_ABI32) /* FPU emulator */ #include "nwfpe/fpa11.h" #endif @@ -103,8 +103,10 @@ struct emulated_sigtable { typedef struct TaskState { pid_t ts_tid; /* tid (or pid) of this task */ #ifdef TARGET_ARM +# ifdef TARGET_ABI32 /* FPA state */ FPA11 fpa; +#endif int swi_errno; #endif #ifdef TARGET_UNICORE32 |