github.com/ader1990/go@v0.0.0-20140630135419-8c24447fa791/src/pkg/syscall/asm_nacl_386.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 386, 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,$12-28 19 CALL runtime·entersyscall(SB) 20 MOVL trap+0(FP), AX 21 MOVL a1+4(FP), BX 22 MOVL BX, 0(SP) 23 MOVL a2+8(FP), BX 24 MOVL BX, 4(SP) 25 MOVL a3+12(FP), BX 26 MOVL BX, 8(SP) 27 SHLL $5, AX 28 ADDL $0x10000, AX 29 CALL AX 30 CMPL AX, $0 31 JGE ok 32 MOVL $-1, r1+16(FP) 33 MOVL $-1, r2+20(FP) 34 NEGL AX 35 MOVL AX, err+24(FP) 36 CALL runtime·exitsyscall(SB) 37 RET 38 ok: 39 MOVL AX, r1+16(FP) 40 MOVL DX, r2+20(FP) 41 MOVL $0, err+24(FP) 42 CALL runtime·exitsyscall(SB) 43 RET