shithub: riscv

ref: d5f2d2cc3fc7c2d3701e906df5d2d53781c4ee9c
dir: /sys/src/9/teg2/init9.s/

View raw version
/*
 * This is the same as the C programme:
 *
 *	void
 *	main(char* argv0)
 *	{
 *		startboot(argv0, &argv0);
 *	}
 *
 * It is in assembler because SB needs to be
 * set and doing this in C drags in too many
 * other routines.
 */
TEXT main(SB), 1, $8
	MOVW	$setR12(SB), R12		/* load the SB */
	MOVW	$boot(SB), R0

	ADD	$12, R13, R1			/* pointer to 0(FP) */

	MOVW	R0, 4(R13)			/* pass argc, argv */
	MOVW	R1, 8(R13)

	BL	startboot(SB)
_loop:
	B	_loop