github.com/ader1990/go@v0.0.0-20140630135419-8c24447fa791/src/pkg/syscall/asm_nacl_amd64p32.s (about) 1 // Copyright 2013 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 #include "../../cmd/ld/textflag.h" 6 #include "../runtime/syscall_nacl.h" 7 8 // 9 // System call support for amd64, Native Client 10 // 11 12 #define NACL_SYSCALL(code) \ 13 MOVL $(0x10000 + ((code)<<5)), AX; CALL AX 14 15 #define NACL_SYSJMP(code) \ 16 MOVL $(0x10000 + ((code)<<5)), AX; JMP AX 17 18 TEXT syscall·Syscall(SB),NOSPLIT,$0-28 19 CALL runtime·entersyscall(SB) 20 MOVL trap+0(FP), AX 21 MOVL a1+4(FP), DI 22 MOVL a2+8(FP), SI 23 MOVL a3+12(FP), DX 24 // more args would use CX, R8, R9 25 SHLL $5, AX 26 ADDL $0x10000, AX 27 CALL AX 28 CMPL AX, $0 29 JGE ok 30 MOVL $-1, r1+16(FP) 31 MOVL $-1, r2+20(FP) 32 NEGL AX 33 MOVL AX, err+24(FP) 34 CALL runtime·exitsyscall(SB) 35 RET 36 ok: 37 MOVL AX, r1+16(FP) 38 MOVL DX, r2+20(FP) 39 MOVL $0, err+24(FP) 40 CALL runtime·exitsyscall(SB) 41 RET