123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #include "sys.h"
- #include "picorv32.h"
- #define GP_IS_ZERO 1
-
-
- .option norvc
-
-
-
-
-
-
-
- .section ".null","a"
- .globl _NULL
- _NULL:
- .space 8
- .type _NULL, @object
- .size _NULL, . - _NULL
- .globl __dram_checksum
- __dram_checksum:
- .long 0
- .type __dram_checksum, @object
- .size __dram_checksum, . - __dram_checksum
- .globl __rom_offset
- __rom_offset:
- .long ROM_OFFSET
- .type __rom_offset, @object
- .size __rom_offset, . - __rom_offset
-
- .section ".init.reset","ax"
- .globl _reset
- _reset:
- rdtime s0
- li sp,STACK_TOP
- j __start
- .type _reset, @function
- .size _reset, . - _reset
- .section ".init","ax"
- .globl __start
- __start:
- not t0,zero
- maskirq zero,t0,zero
- #if !GP_IS_ZERO
- .option push
- .option norelax
- la gp, __global_pointer$
- .option pop
- #else
-
- li gp,0
- #endif
- addqxi gp,gp,0
-
- la a0,__BSS_START__
- la a1,__BSS_END__
- .L_clear_bss_loop:
- sw zero,(a0)
- sw zero,4(a0)
- sw zero,8(a0)
- sw zero,12(a0)
- sw zero,16(a0)
- sw zero,20(a0)
- sw zero,24(a0)
- sw zero,28(a0)
- addi a0,a0,32
- bltu a0,a1,.L_clear_bss_loop
- sw s0, time_zero, t0
- j main
- .type __start, @function
- .size __start, . - __start
- __sbss
- .balign 4
- .globl time_zero
- time_zero:
- .space 4
- .type time_zero, @object
- .size time_zero, . - time_zero
- .popsection
-
- .section ".datestamp","a"
- .globl __datestamp
- __datestamp:
- .space 32
- .type __datestamp, @object
- .size __datestamp, . - __datestamp
-
- .section ".stack","aw",@nobits
- .balign 4
- .globl ___stack_bottom
- ___stack:
- .space STACK_SIZE
- .type ___stack, @object
- .size ___stack, STACK_SIZE
- .globl ___stack_top
- ___stack_top:
|