62 lines
1.1 KiB
ArmAsm
62 lines
1.1 KiB
ArmAsm
.section .text
|
|
.globl _start
|
|
_start:
|
|
li x1, 0x0
|
|
li x2, 0x0
|
|
li x3, 0x0
|
|
li x4, 0x0
|
|
li x5, 0x0
|
|
li x6, 0x0
|
|
li x7, 0x0
|
|
li x8, 0x0
|
|
li x9, 0x0
|
|
li x10, 0x0
|
|
li x11, 0x0
|
|
li x12, 0x0
|
|
li x13, 0x0
|
|
li x14, 0x0
|
|
li x15, 0x0
|
|
li x16, 0x0
|
|
li x17, 0x0
|
|
li x18, 0x0
|
|
li x19, 0x0
|
|
li x20, 0x0
|
|
li x21, 0x0
|
|
li x22, 0x0
|
|
li x23, 0x0
|
|
li x24, 0x0
|
|
li x25, 0x0
|
|
li x26, 0x0
|
|
li x27, 0x0
|
|
li x28, 0x0
|
|
li x29, 0x0
|
|
li x30, 0x0
|
|
li x31, 0x0
|
|
|
|
li t0, 0x10000000 # UART base address
|
|
li t1, 'E' # Character to print
|
|
sb t1, 0(t0)
|
|
li t1, 'n'
|
|
sb t1, 0(t0)
|
|
li t1, 't'
|
|
sb t1, 0(t0)
|
|
li t1, 'r'
|
|
sb t1, 0(t0)
|
|
li t1, 'y'
|
|
sb t1, 0(t0)
|
|
li t1, '\n'
|
|
sb t1, 0(t0)
|
|
|
|
# Set up a stack for C.
|
|
la sp, stack0
|
|
li a0, 1024*4 # a0 = 4096
|
|
csrr a1, mhartid # a1 = hart id
|
|
addi a1, a1, 1 # hartid + 1
|
|
mul a0, a0, a1 # a0 *= hartid+1
|
|
add sp, sp, a0 # sp += a0
|
|
|
|
# Jump to start() in start.c
|
|
call start
|
|
|
|
1:
|
|
j 1b # Infinite loop
|