// 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	
