aboutsummaryrefslogtreecommitdiffstats
path: root/target-arm
diff options
context:
space:
mode:
authorDavid 'Digit' Turner <digit@google.com>2009-09-20 13:10:19 -0700
committerDavid 'Digit' Turner <digit@google.com>2009-09-20 13:10:19 -0700
commit238b4b0ef1a01afa66ef267dae4a96401ad386db (patch)
treed6cab191674a2141c5adc12d5becb488f89b7e7e /target-arm
parent060749410208cd5a0e25faacdd6a5ef1ae8cf6d5 (diff)
downloadexternal_qemu-238b4b0ef1a01afa66ef267dae4a96401ad386db.zip
external_qemu-238b4b0ef1a01afa66ef267dae4a96401ad386db.tar.gz
external_qemu-238b4b0ef1a01afa66ef267dae4a96401ad386db.tar.bz2
Fix ARMv7 emulation by disabling CPU alignment exceptions
Disable alignment CPU exceptions to be able to boot an ARMv7 system image. This is because 4.4.0 emits a machine code sequence that stores an 8-bytes double on a 4-byte aligned address on the stack in the implementation of cvt() in the C library (see the disassembly for bionic/libc/stdio/vfprintf.c). It is uncertain that this is a compiler bug at this point, but the upstream QEMU sources don't have alignment exceptions enabled for any ARM target anyway. Also, add a check to force CPU emulation to "cortex-a8" if the kernel file name ends in "-armv7". This is a poor man's approach to hardware configuration that will be replaced by a more sophisticated solution in the future. Right now, we just want to be able to build -user system images with the dex preopt pass running in the emulator with the minimum amount of fuss.
Diffstat (limited to 'target-arm')
-rw-r--r--target-arm/op_helper.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/target-arm/op_helper.c b/target-arm/op_helper.c
index 64bab2b..05eb558 100644
--- a/target-arm/op_helper.c
+++ b/target-arm/op_helper.c
@@ -70,7 +70,7 @@ uint32_t HELPER(neon_tbl)(uint32_t ireg, uint32_t def,
static void do_unaligned_access (target_ulong addr, int is_write, int is_user, void *retaddr);
#define MMUSUFFIX _mmu
-#define ALIGNED_ONLY 1
+//#define ALIGNED_ONLY 1
#define SHIFT 0
#include "softmmu_template.h"