diff options
author | Kai Backman <kaib@golang.org> | 2009-11-05 22:53:08 -0800 |
---|---|---|
committer | Kai Backman <kaib@golang.org> | 2009-11-05 22:53:08 -0800 |
commit | 52c549fc9be7baef252448b3f6c18070d445cebf (patch) | |
tree | 55e9491110d8ffcd325ff6ff32f5621df5ab1b80 | |
parent | 054354ebd410d14c023cc21d011d1bd6632f91f3 (diff) | |
download | go-52c549fc9be7baef252448b3f6c18070d445cebf.tar.gz go-52c549fc9be7baef252448b3f6c18070d445cebf.zip |
make 5g executables run on android/arm hardware. change OABI
usage to EABI.
go/test: passes 85% (296/347) on random android phone.
R=rsc
http://go/go-review/1024003
-rwxr-xr-x | src/cmd/gotest/gotest | 2 | ||||
-rw-r--r-- | src/pkg/runtime/linux/arm/sys.s | 28 | ||||
-rwxr-xr-x | test/run | 2 |
3 files changed, 22 insertions, 10 deletions
diff --git a/src/cmd/gotest/gotest b/src/cmd/gotest/gotest index e274ef9b81..4f6c6c2783 100755 --- a/src/cmd/gotest/gotest +++ b/src/cmd/gotest/gotest @@ -25,7 +25,7 @@ esac # TODO(kaib): proper emulator strategy case x"$GOARCH" in xarm) - E="qemu-arm -cpu cortex-a8" + export E=${EMU_arm:-qemu-arm -cpu cortex-a8} esac # Allow overrides diff --git a/src/pkg/runtime/linux/arm/sys.s b/src/pkg/runtime/linux/arm/sys.s index 2d70adf827..00472ef79c 100644 --- a/src/pkg/runtime/linux/arm/sys.s +++ b/src/pkg/runtime/linux/arm/sys.s @@ -8,7 +8,12 @@ #include "arm/asm.h" -#define SYS_BASE 0x00900000 +// OABI +//#define SYS_BASE 0x00900000 + +// EABI +#define SYS_BASE 0x0 + #define SYS_exit (SYS_BASE + 1) #define SYS_write (SYS_BASE + 4) #define SYS_clone (SYS_BASE + 120) @@ -21,19 +26,22 @@ TEXT write(SB),7,$0 MOVW 0(FP), R0 MOVW 4(FP), R1 MOVW 8(FP), R2 - SWI $SYS_write + MOVW $SYS_write, R7 + SWI $0 RET TEXT exit(SB),7,$-4 MOVW 0(FP), R0 - SWI $SYS_exit_group + MOVW $SYS_exit_group, R7 + SWI $0 MOVW $1234, R0 MOVW $1002, R1 MOVW R0, (R1) // fail hard TEXT exit1(SB),7,$-4 MOVW 0(FP), R0 - SWI $SYS_exit + MOVW $SYS_exit, R7 + SWI $0 MOVW $1234, R0 MOVW $1003, R1 MOVW R0, (R1) // fail hard @@ -45,7 +53,8 @@ TEXT runtime·mmap(SB),7,$0 MOVW 12(FP), R3 MOVW 16(FP), R4 MOVW 20(FP), R5 - SWI $SYS_mmap2 + MOVW $SYS_mmap2, R7 + SWI $0 RET // int32 futex(int32 *uaddr, int32 op, int32 val, @@ -57,7 +66,8 @@ TEXT futex(SB),7,$0 MOVW 16(SP), R3 MOVW 20(SP), R4 MOVW 24(SP), R5 - SWI $SYS_futex + MOVW $SYS_futex, R7 + SWI $0 RET @@ -82,7 +92,8 @@ TEXT clone(SB),7,$0 MOVW $1234, R6 MOVW R6, 12(R1) - SWI $SYS_clone + MOVW $SYS_clone, R7 + SWI $0 // In parent, return. CMP $0, R0 @@ -106,7 +117,8 @@ TEXT clone(SB),7,$0 BL emptyfunc(SB) // fault if stack check is wrong // Initialize m->procid to Linux tid - SWI $SYS_gettid + MOVW $SYS_gettid, R7 + SWI $0 MOVW R0, m_procid(m) // Call fn @@ -13,7 +13,7 @@ X386) ;; Xarm) export A=5 - export E="qemu-arm -cpu cortex-a8 " + export E=${EMU_arm:-qemu-arm -cpu cortex-a8} ;; *) echo 1>&2 run: unsupported '$GOARCH' |