]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: android/arm64 support
authorDavid Crawshaw <crawshaw@golang.org>
Tue, 27 Oct 2015 23:46:49 +0000 (19:46 -0400)
committerDavid Crawshaw <crawshaw@golang.org>
Tue, 17 Nov 2015 16:28:18 +0000 (16:28 +0000)
Not all tests passing yet, but a good chunk are.

Change-Id: I5daebaeabf3aecb380674ece8830a86751a8d139
Reviewed-on: https://go-review.googlesource.com/16458
Reviewed-by: Rahul Chaudhry <rahulchaudhry@google.com>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
src/runtime/defs_linux_arm64.go
src/runtime/os_android.go [moved from src/runtime/os_android_arm.go with 100% similarity]
src/runtime/rt0_android_arm64.s [new file with mode: 0644]
src/runtime/sys_linux_arm64.s
src/runtime/tls_arm64.h

index 1a4d8846e37fa6b386b31130ed04696898b04de6..d1b1a3677f5bdce4ff356c527c1adffdc881c22b 100644 (file)
@@ -87,6 +87,10 @@ const (
        _EPOLL_CTL_ADD = 0x1
        _EPOLL_CTL_DEL = 0x2
        _EPOLL_CTL_MOD = 0x3
+
+       _AF_UNIX    = 0x1
+       _F_SETFL    = 0x4
+       _SOCK_DGRAM = 0x2
 )
 
 type timespec struct {
@@ -167,6 +171,11 @@ type sigcontext struct {
        __reserved [4096]byte
 }
 
+type sockaddr_un struct {
+       family uint16
+       path   [108]byte
+}
+
 type ucontext struct {
        uc_flags    uint64
        uc_link     *ucontext
diff --git a/src/runtime/rt0_android_arm64.s b/src/runtime/rt0_android_arm64.s
new file mode 100644 (file)
index 0000000..7291476
--- /dev/null
@@ -0,0 +1,13 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#include "textflag.h"
+
+TEXT _rt0_arm64_android(SB),NOSPLIT,$-8
+       MOVD    $_rt0_arm64_linux(SB), R4
+       B       (R4)
+
+TEXT _rt0_arm64_android_lib(SB),NOSPLIT,$-8
+       MOVD    $_rt0_arm64_linux_lib(SB), R4
+       B       (R4)
index 7b58d67305bc782e0740b19f5708dcdc7e6c36d0..ca0e07aaa4cda043d976bbdc9ed6f6606f23be95 100644 (file)
@@ -43,6 +43,9 @@
 #define SYS_epoll_ctl          21
 #define SYS_epoll_pwait                22
 #define SYS_clock_gettime      113
+#define SYS_faccessat          48
+#define SYS_socket             198
+#define SYS_connect            203
 
 TEXT runtime·exit(SB),NOSPLIT,$-8-4
        MOVW    code+0(FP), R0
@@ -445,3 +448,33 @@ TEXT runtime·closeonexec(SB),NOSPLIT,$-8
        MOVD    $SYS_fcntl, R8
        SVC
        RET
+
+// int access(const char *name, int mode)
+TEXT runtime·access(SB),NOSPLIT,$0-20
+       MOVD    $AT_FDCWD, R0
+       MOVD    name+0(FP), R1
+       MOVW    mode+8(FP), R2
+       MOVD    $SYS_faccessat, R8
+       SVC
+       MOVW    R0, ret+16(FP)
+       RET
+
+// int connect(int fd, const struct sockaddr *addr, socklen_t len)
+TEXT runtime·connect(SB),NOSPLIT,$0-28
+       MOVW    fd+0(FP), R0
+       MOVD    addr+8(FP), R1
+       MOVW    len+16(FP), R2
+       MOVD    $SYS_connect, R8
+       SVC
+       MOVW    R0, ret+24(FP)
+       RET
+
+// int socket(int domain, int typ, int prot)
+TEXT runtime·socket(SB),NOSPLIT,$0-20
+       MOVW    domain+0(FP), R0
+       MOVW    typ+4(FP), R1
+       MOVW    prot+8(FP), R2
+       MOVD    $SYS_socket, R8
+       SVC
+       MOVW    R0, ret+16(FP)
+       RET
index d5676aba34f94d1072be38c6ae9c484a3e28bd5a..0fdc750d0f9ddca05f63b597afeac9fba7588072 100644 (file)
@@ -2,7 +2,13 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+#ifdef GOOS_android
+#define TLS_linux
+#endif
 #ifdef GOOS_linux
+#define TLS_linux
+#endif
+#ifdef TLS_linux
 #define TPIDR TPIDR_EL0
 #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0
 #endif