Commit ce8f49f4 authored by David Crawshaw's avatar David Crawshaw

runtime: android/arm64 support

Not all tests passing yet, but a good chunk are.

Change-Id: I5daebaeabf3aecb380674ece8830a86751a8d139
Reviewed-on: https://go-review.googlesource.com/16458Reviewed-by: default avatarRahul Chaudhry <rahulchaudhry@google.com>
Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
parent babdb383
...@@ -87,6 +87,10 @@ const ( ...@@ -87,6 +87,10 @@ const (
_EPOLL_CTL_ADD = 0x1 _EPOLL_CTL_ADD = 0x1
_EPOLL_CTL_DEL = 0x2 _EPOLL_CTL_DEL = 0x2
_EPOLL_CTL_MOD = 0x3 _EPOLL_CTL_MOD = 0x3
_AF_UNIX = 0x1
_F_SETFL = 0x4
_SOCK_DGRAM = 0x2
) )
type timespec struct { type timespec struct {
...@@ -167,6 +171,11 @@ type sigcontext struct { ...@@ -167,6 +171,11 @@ type sigcontext struct {
__reserved [4096]byte __reserved [4096]byte
} }
type sockaddr_un struct {
family uint16
path [108]byte
}
type ucontext struct { type ucontext struct {
uc_flags uint64 uc_flags uint64
uc_link *ucontext uc_link *ucontext
......
// 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)
...@@ -43,6 +43,9 @@ ...@@ -43,6 +43,9 @@
#define SYS_epoll_ctl 21 #define SYS_epoll_ctl 21
#define SYS_epoll_pwait 22 #define SYS_epoll_pwait 22
#define SYS_clock_gettime 113 #define SYS_clock_gettime 113
#define SYS_faccessat 48
#define SYS_socket 198
#define SYS_connect 203
TEXT runtime·exit(SB),NOSPLIT,$-8-4 TEXT runtime·exit(SB),NOSPLIT,$-8-4
MOVW code+0(FP), R0 MOVW code+0(FP), R0
...@@ -445,3 +448,33 @@ TEXT runtime·closeonexec(SB),NOSPLIT,$-8 ...@@ -445,3 +448,33 @@ TEXT runtime·closeonexec(SB),NOSPLIT,$-8
MOVD $SYS_fcntl, R8 MOVD $SYS_fcntl, R8
SVC SVC
RET 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
...@@ -2,7 +2,13 @@ ...@@ -2,7 +2,13 @@
// Use of this source code is governed by a BSD-style // Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file. // license that can be found in the LICENSE file.
#ifdef GOOS_android
#define TLS_linux
#endif
#ifdef GOOS_linux #ifdef GOOS_linux
#define TLS_linux
#endif
#ifdef TLS_linux
#define TPIDR TPIDR_EL0 #define TPIDR TPIDR_EL0
#define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0 #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment