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 ag...@suse.de
---
linux-user/main.c |3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/linux-user/main.c b/linux-user/main.c
index 191b750..a7fefe7 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];
--
1.6.0.2