Romatom 发表于 2012-11-12 14:13:33

U-BOOT堆栈设置疑问


操作系统移植之前,bootloader的移植或编写是不可逾越的一步。但是我查阅了不少的资料,包括我阅读源码(本人是个初学者)。我发现:
1、TQ2440给test2440试验中的启动代码对栈的初始化,其完成了对6中处理器工作模式下的栈区的初始化,代码如下:
;function initializing stacks
InitStacks
;Do not use DRAM,such as stmfd,ldmfd......
;SVCstack is initialized before
;Under toolkit ver 2.5, 'msr cpsr,r1' can be used instead of 'msr cpsr_cxsf,r1'
mrs r0,cpsr
bic r0,r0,#MODEMASK
orr r1,r0,#UNDEFMODE|NOINT
msr cpsr_cxsf,r1;UndefMode
ldr sp,=UndefStack; UndefStack=0x33FF_5C00
orr r1,r0,#ABORTMODE|NOINT
msr cpsr_cxsf,r1;AbortMode
ldr sp,=AbortStack; AbortStack=0x33FF_6000
orr r1,r0,#IRQMODE|NOINT
msr cpsr_cxsf,r1;IRQMode
ldr sp,=IRQStack; IRQStack=0x33FF_7000
orr r1,r0,#FIQMODE|NOINT
msr cpsr_cxsf,r1;FIQMode
ldr sp,=FIQStack; FIQStack=0x33FF_8000
bic r0,r0,#MODEMASK|NOINT
orr r1,r0,#SVCMODE
msr cpsr_cxsf,r1;SVCMode
ldr sp,=SVCStack; SVCStack=0x33FF_5800
;USER mode has not be initialized.
mov pc,lr
;The LR register will not be valid if the current mode is not SVC mode.
LTORG

注释说 “ SVCstack is initialized before ” 可是我好想没有看到。

问题2:在u-boot中,源码和资料好想都显示,在u-boot中没有对每一种工作模式下的栈区和堆栈指针进行初始化,好想是只对IRQ和FRQ下的SP进行了初始化,都不知道到底是怎么回事儿了?

大侠们,初学者,说错话了或问题,原谅了,万谢!!!!!!!
页: [1]
查看完整版本: U-BOOT堆栈设置疑问