crt0.s

来自「C语言编写的监控中心终端程序。基于GPRS上传收发数据功能」· S 代码 · 共 80 行

S
80
字号

#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 + =
减小字号Ctrl + -
显示快捷键?