📄 crt0.s
字号:
#include "regdef.h"
.text
.global start
.global __main
.global s_gp
.extern _stkbtm
.text
.ent start
start:
/*
** ENABLE COP0/3
*/
mfc0 t1, C0_STATUS
li t0, STATUS_COP3|STATUS_COP0|STATUS_BEV
// li t0, STATUS_COP3|STATUS_COP0|STATUS_ENDIAN_BIG|STATUS_BEV
li t0, STATUS_COP3|STATUS_COP0|STATUS_ENDIAN_LITTLE|STATUS_BEV
or t1, t0
#ifdef USE_BEV1
li t0, STATUS_BEV
xor t1, t0
#endif
mtc0 t1, C0_STATUS
nop
nop
nop
/*
** Adjust DRAM address
*/
li t0, 0x02000000
mtc3 t0, C3_DW_BASE
li t1, 0x020003ff
mtc3 t1, C3_DW_TOP
/*
** Adjust IRAM address
*/
//remarked by jjding
//For Nes Games
// li t0, 0x01000000
// mtc3 t0, C3_IW_BASE
// li t1, 0x010003ff
// mtc3 t1, C3_IW_TOP
/*
** reset STK buffer
*/
la sp, _stkptr // set up stack pointer
la t0, _stkbtm
lui v0, 0xfade
ori v0, 0xfade
__clrstk:
sw v0, 0(t0) // writing initial value
addiu t0, 4
bne t0, sp, __clrstk
/*
** setup others variables.
*/
lw gp, s_gp // set up GP
lw t0, s_rominit // init ROM image of data section
jalr t0
j csvcd_main
.end start
__main:
lw gp, s_gp
jr ra
.rdata
s_gp: .word _gp
s_rominit: .word rominit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -