/*
 * Copyright (c) 2021 Antony Pavlov <antonynpavlov@gmail.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <toolchain.h>
#include <linker/sections.h>
#include <mips/regdef.h>
#include <mips/mipsregs.h>

GTEXT(__initialize)
GTEXT(__stack)
GTEXT(_PrepC)

/*
 * Remainder of asm-land initialization code before we can jump into
 * the C domain.
 */
SECTION_FUNC(TEXT, __initialize)
	.set noreorder

	mtc0 zero, CP0_CAUSE
	ehb

	mfc0 k0, CP0_STATUS
	li k1, ~(ST0_ERL | ST0_IE)
	and k0, k1
	mtc0 k0, CP0_STATUS
	ehb

#ifdef CONFIG_INIT_STACKS
	/* Pre-populate all bytes in z_interrupt_stacks with 0xAA */
	la t0, z_interrupt_stacks
	li t1, CONFIG_ISR_STACK_SIZE
	add t1, t1, t0

	/* Populate z_interrupt_stacks with 0xaaaaaaaa */
	li t2, 0xaaaaaaaa
aa_loop:
	sw t2, 0(t0)
	addi t0, t0, 4
	blt t0, t1, aa_loop
	nop /* delay slot */
#endif

	/*
	 * Setup stack pointer.
	 */
	la sp, __stack

	/*
	 * Jump into C domain.
	 */
	la v0, _PrepC
	jal v0
	nop /* delay slot */
