github.com/hbdrawn/golang@v0.0.0-20141214014649-6b835209aba2/src/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 "textflag.h" 6 #include "funcdata.h" 7 #include "../runtime/syscall_nacl.h" 8 9 // 10 // System call support for 386, Native Client 11 // 12 13 #define NACL_SYSCALL(code) \ 14 MOVL $(0x10000 + ((code)<<5)), AX; CALL AX 15 16 #define NACL_SYSJMP(code) \ 17 MOVL $(0x10000 + ((code)<<5)), AX; JMP AX 18 19 TEXT syscall·Syscall(SB),NOSPLIT,$12-28 20 CALL runtime·entersyscall(SB) 21 MOVL trap+0(FP), AX 22 MOVL a1+4(FP), BX 23 MOVL BX, 0(SP) 24 MOVL a2+8(FP), BX 25 MOVL BX, 4(SP) 26 MOVL a3+12(FP), BX 27 MOVL BX, 8(SP) 28 SHLL $5, AX 29 ADDL $0x10000, AX 30 CALL AX 31 CMPL AX, $0 32 JGE ok 33 MOVL $-1, r1+16(FP) 34 MOVL $-1, r2+20(FP) 35 NEGL AX 36 MOVL AX, err+24(FP) 37 CALL runtime·exitsyscall(SB) 38 RET 39 ok: 40 MOVL AX, r1+16(FP) 41 MOVL DX, r2+20(FP) 42 MOVL $0, err+24(FP) 43 CALL runtime·exitsyscall(SB) 44 RET