⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 start.s

📁 lwip在ucos上的移植
💻 S
字号:
/*
 *  startup.S 
 *  the very beginning code for ARM 7TDMI 
 *
 *  Bugs Report:  li ming (lmcs00@mails.tsinghua.edu.cn)
 *  Release:      2003-02-02 11:05:52 
 */
 

	
.text
	.align 4
	.global begin
	.type begin, function

begin:
	@set up irq stack
	mov 	r0, #0xd2                @ make irq mode with all irqs disabled
	msr 	cpsr, r0
	ldr 	sp, =irq_stack           @ set sp_irq = irq_stack
	
	@set up svc stack
        mov	r0, #0xd3                @ make svc mode with all irqs disabled
	msr	cpsr, r0		 
	ldr	sp, =svc_stack           @ set sp_svc = svc_stack

	@ here irq enabled	
	mov 	r0, #0x13
	msr	cpsr, r0
	b 	start_kernel             @ jump to hello.c

	.align  2
        .global  system_isr
        .type    system_isr,function
system_isr:
	SUB	lr, lr, #4            
	STMFD	sp!, {r0-r12, lr}      @ push r0-r12 register file and lr( pc return address )
        MRS 	r4, spsr        
	STMFD 	sp!, {r4}              @ push current spsr_irq

	BL	do_irq                 @ here do_irq is used to clear some virtual-hardware flags
			
        LDMFD 	sp!, {r4}              @ get cpsr_svc from stack to r4
	MSR     spsr, r4               @ prepare spsr to return svc mode
	LDMFD	sp!, {r0-r12, pc}^     @ recover r0-r12 from stack


.data
	.align  4
irq_stack:
	.word	0
	.space	4096
svc_stack:
	.word	0
	.space	4096

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -