aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2013-05-20 14:39:41 +0100
committerPeter Maydell <peter.maydell@linaro.org>2013-05-20 19:13:22 +0100
commit5efb0993b82177b96dd07549a342dfe28b88f260 (patch)
tree3fa887e5ab8f48a3854590fb6e51c44c224a15e8
parentff404779ecdfe7399e495a5c21c85274efe84238 (diff)
downloadqemu-arm-aarch64-busted.tar.gz
random build hacksaarch64-busted
-rw-r--r--default-configs/aarch64-softmmu.mak0
-rw-r--r--linux-user/main.c9
-rw-r--r--linux-user/qemu.h4
-rw-r--r--qapi-schema.json3
-rw-r--r--target-arm/translate.c2
5 files changed, 16 insertions, 2 deletions
diff --git a/default-configs/aarch64-softmmu.mak b/default-configs/aarch64-softmmu.mak
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/default-configs/aarch64-softmmu.mak
diff --git a/linux-user/main.c b/linux-user/main.c
index 539d45b7b2..4fbc6fb644 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 b10e9572a9..d51d82704b 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
diff --git a/qapi-schema.json b/qapi-schema.json
index a8d361e262..272948f28c 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -3018,7 +3018,8 @@
# Since: 1.2.0
##
{ 'enum': 'TargetType',
- 'data': [ 'alpha',
+ 'data': [ 'aarch64',
+ 'alpha',
'arm',
'cris',
'i386',
diff --git a/target-arm/translate.c b/target-arm/translate.c
index bb139e79bd..75abab9ea9 100644
--- a/target-arm/translate.c
+++ b/target-arm/translate.c
@@ -10086,10 +10086,12 @@ void cpu_dump_state(CPUARMState *env, FILE *f, fprintf_function cpu_fprintf,
int i;
uint32_t psr;
+#if 0
if (is_a64(env)) {
cpu_dump_state_a64(env, f, cpu_fprintf, flags);
return;
}
+#endif
for(i=0;i<16;i++) {
cpu_fprintf(f, "R%02d=%08x", i, env->regs[i]);