# initialize stack pointer
la sp, stack_top
+ # Clear all hardware triggers
+ li t0, ~0
+1:
+ addi t0, t0, 1
+ csrw CSR_TSELECT, t0
+ csrw CSR_TDATA1, zero
+ csrr t1, CSR_TSELECT
+ beq t0, t1, 1b
+
# perform the rest of initialization in C
j _init
addi sp, sp, 32*REGBYTES
mret
+loop_forever:
+ j loop_forever
+
// Fill the stack with data so we can see if it was overrun.
.align 4
stack_bottom:
.fill STACK_SIZE/4, 4, 0x22446688
stack_top:
+ // Prevent stack_top from being identical to next symbol, which may cause gdb
+ // to report we're halted at stack_top which happens to be the same address
+ // as main.
+ .word 0
#endif