// A simple program that sets up a stack and calls main. | |
.section .text | |
.globl _start | |
.org 0x80 | |
_start: | |
// Set up the stack pointer | |
la sp, _stack_start | |
// Clear registers | |
mv tp, zero | |
mv t1, zero | |
mv t2, zero | |
mv s0, zero | |
mv s1, zero | |
mv a1, zero | |
mv a2, zero | |
mv a3, zero | |
mv a4, zero | |
mv a5, zero | |
mv a6, zero | |
mv a7, zero | |
mv s2, zero | |
mv s3, zero | |
mv s4, zero | |
mv s5, zero | |
mv s6, zero | |
mv s7, zero | |
mv s8, zero | |
mv s9, zero | |
mv s10, zero | |
mv s11, zero | |
mv t3, zero | |
mv t4, zero | |
mv t5, zero | |
mv t6, zero | |
// Call main | |
call main | |
// Wait for interrupt | |
wfi | |
// Infinite loop | |
_hang: | |
j _hang |