aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2012-05-29 05:30:26 +0000
committerPeter Maydell <peter.maydell@linaro.org>2012-08-13 13:57:02 +0100
commitfd59216d03dc507f6678383a2175af412c99aff9 (patch)
tree8868bfbea0b2555013a43ba2125545e9685dc5a6
parenta6fe7684dfa37af7a9f72fc53be60796fb88defb (diff)
downloadqemu-arm-linux-user.tar.gz
linux-user: ARM: Ignore immediate value for svc in thumb modelinux-user
When running in thumb mode, Linux doesn't evaluate the immediate value of the svc instruction, but instead just always assumes the syscall number to be in r7. This fixes executing go_bootstrap while building go for me. Signed-off-by: Alexander Graf <agraf@suse.de> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--linux-user/main.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/linux-user/main.c b/linux-user/main.c
index 63c1249576..7dea084873 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -822,8 +822,7 @@ void cpu_loop(CPUARMState *env)
} else if (n == ARM_NR_semihosting
|| n == ARM_NR_thumb_semihosting) {
env->regs[0] = do_arm_semihosting (env);
- } else if (n == 0 || n >= ARM_SYSCALL_BASE
- || (env->thumb && n == ARM_THUMB_SYSCALL)) {
+ } else if (n == 0 || n >= ARM_SYSCALL_BASE || env->thumb) {
/* linux syscall */
if (env->thumb || n == 0) {
n = env->regs[7];