// Copyright 2009 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.

/*
 * Apple still insists on underscore prefixes for C function names.
 */
#if defined(__APPLE__) || defined(_WIN32)
#define EXT(s) _##s
#else
#define EXT(s) s
#endif

/*
 * void crosscall_amd64(void (*fn)(void))
 *
 * Calling into the 6c tool chain, where all registers are caller save.
 * Called from standard x86-64 ABI, where %rbx, %rbp, %r12-%r15
 * are callee-save so they must be saved explicitly.
 * The standard x86-64 ABI passes the three arguments m, g, fn
 * in %rdi, %rsi, %rdx.
 *
 * Also need to set %r15 to g and %r14 to m (see ../pkg/runtime/mkasmh.sh)
 * during the call.
 */
.globl EXT(crosscall_amd64)
EXT(crosscall_amd64):
	pushq %rbx
	pushq %rbp
	pushq %r12
	pushq %r13
	pushq %r14
	pushq %r15

	call *%rdi	/* fn */

	popq %r15
	popq %r14
	popq %r13
	popq %r12
	popq %rbp
	popq %rbx
	ret

/*
 * void crosscall2(void (*fn)(void*, int32), void *arg, int32 argsize)
 *
 * Save registers and call fn with two arguments.  fn is a Go function
 * which takes parameters on the stack rather than in registers.
 */
.globl EXT(crosscall2)
EXT(crosscall2):
	subq  $0x58, %rsp	/* keeps stack pointer 32-byte aligned */
	movq  %rbx, 0x10(%rsp)
	movq  %rbp, 0x18(%rsp)
	movq  %r12, 0x20(%rsp)
	movq  %r13, 0x28(%rsp)
	movq  %r14, 0x30(%rsp)
	movq  %r15, 0x38(%rsp)

	movq  %rsi, 0(%rsp)	/* arg */
	movq  %rdx, 8(%rsp)	/* argsize (includes padding) */

	call *%rdi	/* fn */

	movq  0x10(%rsp), %rbx
	movq  0x18(%rsp), %rbp
	movq  0x20(%rsp), %r12
	movq  0x28(%rsp), %r13
	movq  0x30(%rsp), %r14
	movq  0x38(%rsp), %r15
	addq  $0x58, %rsp
	ret
