#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.
	MOVW	CR, R0     // Save CR in caller's frame
	MOVD	R0, 8(R1)
	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·reginit(SB), R12
	MOVD	R12, CTR
	BL	(CTR)
	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	8(R1), R0
	MOVFL	R0, $0xff
	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)
