rename examples
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
.section .vector,"ax",@progbits
|
||||
.align 1
|
||||
|
||||
.global _start
|
||||
_start:
|
||||
// Set up global pointer
|
||||
.option push
|
||||
.option norelax
|
||||
la gp, __global_pointer$
|
||||
.option pop
|
||||
|
||||
// Load data section from flash to RAM
|
||||
la a0, _data_lma
|
||||
la a1, _data_vma
|
||||
la a2, _edata
|
||||
bgeu a1, a2, 2f
|
||||
1:
|
||||
lw t0, (a0)
|
||||
sw t0, (a1)
|
||||
addi a0, a0, 4
|
||||
addi a1, a1, 4
|
||||
bltu a1, a2, 1b
|
||||
2:
|
||||
// Load stack pointer
|
||||
la sp, _eusrstack
|
||||
|
||||
// Clear bss section
|
||||
la a0, _sbss
|
||||
la a1, _ebss
|
||||
bgeu a0, a1, 2f
|
||||
1:
|
||||
sw zero, (a0)
|
||||
addi a0, a0, 4
|
||||
bltu a0, a1, 1b
|
||||
2:
|
||||
|
||||
// Call preinit array functions
|
||||
la s0, __preinit_array_start
|
||||
la s1, __preinit_array_end
|
||||
bgeu s0, s1, 2f
|
||||
1:
|
||||
lw t0, (s0)
|
||||
jalr t0
|
||||
addi s0, s0, 4
|
||||
bltu s0, s1, 1b
|
||||
2:
|
||||
|
||||
// Call init array functions
|
||||
la s0, __init_array_start
|
||||
la s1, __init_array_end
|
||||
bgeu s0, s1, 2f
|
||||
1:
|
||||
lw t0, (s0)
|
||||
jalr t0
|
||||
addi s0, s0, 4
|
||||
bltu s0, s1, 1b
|
||||
2:
|
||||
|
||||
// Invoke main with a possible mode switch
|
||||
la ra, 1f
|
||||
la t0, main
|
||||
csrw mepc, t0
|
||||
mret
|
||||
|
||||
1:
|
||||
// Return from main, call fini array functions
|
||||
la s0, __fini_array_start
|
||||
la s1, __fini_array_end
|
||||
bgeu s0, s1, 2f
|
||||
1:
|
||||
lw t0, (s0)
|
||||
jalr t0
|
||||
addi s0, s0, 4
|
||||
bltu s0, s1, 1b
|
||||
2:
|
||||
|
||||
// Finally, loop infinitely
|
||||
wfi
|
||||
j 2b
|
||||
Reference in New Issue
Block a user