#include "go_asm.h"
#include "textflag.h"

TEXT _rt0_ppc64le_linux(SB),NOSPLIT,$0
	BR _main<>(SB)

TEXT _rt0_ppc64le_linux_lib(SB),NOSPLIT,$-8
	// Start with standard C stack frame layout and linkage.
	MOVD	LR, R0
	MOVD	R0, 16(R1) // Save LR in caller's frame.
	MOVD	R2, 24(R1) // Save TOC in caller's frame.
	MOVDU	R1, -320(R1) // Allocate frame.
	
	// Preserve callee-save registers.
	MOVD	R14, 24(R1)
	MOVD	R15, 32(R1)
	MOVD	R16, 40(R1)
	MOVD	R17, 48(R1)
	MOVD	R18, 56(R1)
	MOVD	R19, 64(R1)
	MOVD	R20, 72(R1)
	MOVD	R21, 80(R1)
	MOVD	R22, 88(R1)
	MOVD	R23, 96(R1)
	MOVD	R24, 104(R1)
	MOVD	R25, 112(R1)
	MOVD	R26, 120(R1)
	MOVD	R27, 128(R1)
	MOVD	R28, 136(R1)
	MOVD	R29, 144(R1)
	MOVD	g, 152(R1) // R30
	MOVD	R31, 160(R1)
	FMOVD	F14, 168(R1)
	FMOVD	F15, 176(R1)
	FMOVD	F16, 184(R1)
	FMOVD	F17, 192(R1)
	FMOVD	F18, 200(R1)
	FMOVD	F19, 208(R1)
	FMOVD	F20, 216(R1)
	FMOVD	F21, 224(R1)
	FMOVD	F22, 232(R1)
	FMOVD	F23, 240(R1)
	FMOVD	F24, 248(R1)
	FMOVD	F25, 256(R1)
	FMOVD	F26, 264(R1)
	FMOVD	F27, 272(R1)
	FMOVD	F28, 280(R1)
	FMOVD	F29, 288(R1)
	FMOVD	F30, 296(R1)
	FMOVD	F31, 304(R1)

	MOVD	R3, _rt0_ppc64le_linux_lib_argc<>(SB)
	MOVD	R4, _rt0_ppc64le_linux_lib_argv<>(SB)

	// Synchronous initialization.
	MOVD	$runtime·libpreinit(SB), R12
	MOVD	R12, CTR
	BL	(CTR)

	// Create a new thread to do the runtime initialization and return.
	MOVD	_cgo_sys_thread_create(SB), R12
	CMP	$0, R12
	BEQ	nocgo
	MOVD	$_rt0_ppc64le_linux_lib_go(SB), R3
	MOVD	$0, R4
	MOVD	R12, CTR
	BL	(CTR)
	BR	done

nocgo:
	MOVD	$0x800000, R12                     // stacksize = 8192KB
	MOVD	R12, 8(R1)
	MOVD	$_rt0_ppc64le_linux_lib_go(SB), R12
	MOVD	R12, 16(R1)
	MOVD	$runtime·newosproc0(SB),R12
	MOVD	R12, CTR
	BL	(CTR)

done:
	// Restore saved registers.
	MOVD	24(R1), R14
	MOVD	32(R1), R15
	MOVD	40(R1), R16
	MOVD	48(R1), R17
	MOVD	56(R1), R18
	MOVD	64(R1), R19
	MOVD	72(R1), R20
	MOVD	80(R1), R21
	MOVD	88(R1), R22
	MOVD	96(R1), R23
	MOVD	104(R1), R24
	MOVD	112(R1), R25
	MOVD	120(R1), R26
	MOVD	128(R1), R27
	MOVD	136(R1), R28
	MOVD	144(R1), R29
	MOVD	152(R1), g // R30
	MOVD	160(R1), R31
	FMOVD	168(R1), F14
	FMOVD	176(R1), F15
	FMOVD	184(R1), F16
	FMOVD	192(R1), F17
	FMOVD	200(R1), F18
	FMOVD	208(R1), F19
	FMOVD	216(R1), F20
	FMOVD	224(R1), F21
	FMOVD	232(R1), F22
	FMOVD	240(R1), F23
	FMOVD	248(R1), F24
	FMOVD	256(R1), F25
	FMOVD	264(R1), F26
	FMOVD	272(R1), F27
	FMOVD	280(R1), F28
	FMOVD	288(R1), F29
	FMOVD	296(R1), F30
	FMOVD	304(R1), F31

	ADD	$320, R1
	MOVD	24(R1), R2
	MOVD	16(R1), R0
	MOVD	R0, LR
	RET

TEXT _rt0_ppc64le_linux_lib_go(SB),NOSPLIT,$0
	MOVD	_rt0_ppc64le_linux_lib_argc<>(SB), R3
	MOVD	_rt0_ppc64le_linux_lib_argv<>(SB), R4
	MOVD	$runtime·rt0_go(SB), R12
	MOVD	R12, CTR
	BR	(CTR)

DATA _rt0_ppc64le_linux_lib_argc<>(SB)/8, $0
GLOBL _rt0_ppc64le_linux_lib_argc<>(SB),NOPTR, $8
DATA _rt0_ppc64le_linux_lib_argv<>(SB)/8, $0
GLOBL _rt0_ppc64le_linux_lib_argv<>(SB),NOPTR, $8

TEXT _main<>(SB),NOSPLIT,$-8
	// In a statically linked binary, the stack contains argc,
	// argv as argc string pointers followed by a NULL, envv as a
	// sequence of string pointers followed by a NULL, and auxv.
	// There is no TLS base pointer.
	//
	// In a dynamically linked binary, r3 contains argc, r4
	// contains argv, r5 contains envp, r6 contains auxv, and r13
	// contains the TLS pointer.
	//
	// Figure out which case this is by looking at r4: if it's 0,
	// we're statically linked; otherwise we're dynamically
	// linked.
	CMP	R0, R4
	BNE	dlink

	// Statically linked
	MOVD	0(R1), R3 // argc
	ADD	$8, R1, R4 // argv
	MOVD	$runtime·m0+m_tls(SB), R13 // TLS
	ADD	$0x7000, R13

dlink:
	BR	main(SB)

TEXT main(SB),NOSPLIT,$-8
	MOVD	$runtime·rt0_go(SB), R12
	MOVD	R12, CTR
	BR	(CTR)
