打印

u-boot 启动

[复制链接]
1612|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
makearm|  楼主 | 2010-7-23 17:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 makearm 于 2010-7-23 17:10 编辑

reset:
/*stack setup for each mode*/
/* SVC32 mode*/
mrs r0,cpsr
bic r0,r0,#0x1f
orr r0,r0,#0x13    //进入svc模式
msr cpsr,r0
ldr r0, _TEXT_BASE
sub r0, r0, #CFG_MALLOC_LEN   //预留空间
sub r0, r0, #CFG_GBL_DATA_SIZE
#ifdef CONFIG_USE_IRQ
sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
#endif
sub sp, r0, #12    //再预留3word,设置堆栈
#ifdef CONFIG_USE_IRQ     //如果使用IRQ,
/* IRQ mode*/
mov R4, #0xD2
    msr cpsr, R4       //进入IRQ模式,禁止IRQ和FRQ
ldr r0, _TEXT_BASE
sub r0, r0, #CFG_MALLOC_LEN
sub r0, r0, #CFG_GBL_DATA_SIZE
sub r0, r0, #(CONFIG_STACKSIZE_FIQ)
sub sp, r0, #12    //设置IRQ堆栈

/* FIQ mode*/
mov R4, #0xD1    //设置FIQ堆栈
    msr cpsr, R4       //进入FRQ模式,禁止IRQ和FRQ
ldr r0, _TEXT_BASE
sub r0, r0, #CFG_MALLOC_LEN
sub r0, r0, #CFG_GBL_DATA_SIZE
sub sp, r0, #12
#endif
/* ABORT mode*/
mov R4, #0xD7    //设置ABORT堆栈
    msr cpsr, R4       //进入ABORT模式,禁止IRQ和FRQ
ldr r0, _TEXT_BASE
sub r0, r0, #CFG_MALLOC_LEN
sub r0, r0, #CFG_GBL_DATA_SIZE
sub sp, r0, #8    //预留2word
/* UNDEFINE mode*/
mov R4, #0xDB    //设置UNDEFINE堆栈
    msr cpsr, R4   
ldr r0, _TEXT_BASE
sub r0, r0, #CFG_MALLOC_LEN
sub r0, r0, #CFG_GBL_DATA_SIZE
sub sp, r0, #4
/* SYSTEM mode*/
mov R4, #0xDF    //设置SYSTEM堆栈
    msr cpsr, R4   
ldr r0, _TEXT_BASE
sub r0, r0, #CFG_MALLOC_LEN
sub sp, r0, #CFG_GBL_DATA_SIZE
/*Return to SVC mode 返回SVC模式*/
mov R4, #0xD3
    msr cpsr, R4

我想问一下``这样做的目的是什么,我个人觉得没什么意思``
启动的时候只要在set the cpu to SVC32 mode模式申请一次就可以了! 因为根本不会出现什么异常,技术有异常,这样的申请方式会不会冲突了呢? 还请高手指点!

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

13

帖子

2

粉丝