root/src/pkg/syscall/asm_nacl_amd64p32.s

/* [<][>][^][v][top][bottom][index][help] */
// Copyright 2013 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 "../../cmd/ld/textflag.h"
#include "../runtime/syscall_nacl.h"

//
// System call support for amd64, Native Client
//

#define NACL_SYSCALL(code) \
        MOVL $(0x10000 + ((code)<<5)), AX; CALL AX

#define NACL_SYSJMP(code) \
        MOVL $(0x10000 + ((code)<<5)), AX; JMP AX

TEXT syscall·Syscall(SB),NOSPLIT,$0-28
        CALL    runtime·entersyscall(SB)
        MOVL    trap+0(FP), AX
        MOVL    a1+4(FP), DI
        MOVL    a2+8(FP), SI
        MOVL    a3+12(FP), DX
        // more args would use CX, R8, R9
        SHLL    $5, AX
        ADDL    $0x10000, AX
        CALL    AX
        CMPL    AX, $0
        JGE     ok
        MOVL    $-1, r1+16(FP)
        MOVL    $-1, r2+20(FP)
        NEGL    AX
        MOVL    AX, err+24(FP)
        CALL    runtime·exitsyscall(SB)
        RET
ok:
        MOVL    AX, r1+16(FP)
        MOVL    DX, r2+20(FP)
        MOVL    $0, err+24(FP)
        CALL    runtime·exitsyscall(SB)
        RET     

/* [<][>][^][v][top][bottom][index][help] */