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

/*
 * void crosscall1(void (*fn)(void), void (*setg_gcc)(void *g), void *g)
 *
 * Calling into the gc tool chain, where all registers are caller save.
 * Called from standard lp64d ABI, where $r1, $r3, $r23-$r30, and $f24-$f31
 * are callee-save, so they must be saved explicitly, along with $r1 (LR).
 */
.globl crosscall1
crosscall1:
	addi.d	$r3, $r3, -160
	st.d	$r1, $r3, 0
	st.d	$r23, $r3, 8
	st.d	$r24, $r3, 16
	st.d	$r25, $r3, 24
	st.d	$r26, $r3, 32
	st.d	$r27, $r3, 40
	st.d	$r28, $r3, 48
	st.d	$r29, $r3, 56
	st.d	$r30, $r3, 64
	st.d	$r2, $r3, 72
	st.d	$r22, $r3, 80
	fst.d	$f24, $r3, 88
	fst.d	$f25, $r3, 96
	fst.d	$f26, $r3, 104
	fst.d	$f27, $r3, 112
	fst.d	$f28, $r3, 120
	fst.d	$f29, $r3, 128
	fst.d	$f30, $r3, 136
	fst.d	$f31, $r3, 144

	move	$r18, $r4 // save R4
	move	$r19, $r6
	jirl	$r1, $r5, 0	// call setg_gcc (clobbers R4)
	jirl	$r1, $r18, 0	// call fn

	ld.d	$r23, $r3, 8
	ld.d	$r24, $r3, 16
	ld.d	$r25, $r3, 24
	ld.d	$r26, $r3, 32
	ld.d	$r27, $r3, 40
	ld.d	$r28, $r3, 48
	ld.d	$r29, $r3, 56
	ld.d	$r30, $r3, 64
	ld.d	$r2, $r3, 72
	ld.d	$r22, $r3, 80
	fld.d	$f24, $r3, 88
	fld.d	$f25, $r3, 96
	fld.d	$f26, $r3, 104
	fld.d	$f27, $r3, 112
	fld.d	$f28, $r3, 120
	fld.d	$f29, $r3, 128
	fld.d	$f30, $r3, 136
	fld.d	$f31, $r3, 144
	ld.d	$r1, $r3, 0
	addi.d	$r3, $r3, 160
	jirl	$r0, $r1, 0


#ifdef __ELF__
.section .note.GNU-stack,"",%progbits
#endif
