uboot 2013.01.01 start.S部分分析

来源:互联网 发布:java外包公司 编辑:程序博客网 时间:2024/06/10 21:16

uboot 2013.01.01 start.S部分分析

#if !(defined(CONFIG_OMAP44XX) && defined(CONFIG_SPL_BUILD))    /* Set V=0 in CP15 SCTRL register - for VBAR to point to vector */    mrc p15, 0, r0, c1, c0, 0   @ Read CP15 SCTRL Register    bic r0, #CR_V       @ V = 0    mcr p15, 0, r0, c1, c0, 0   @ Write CP15 SCTRL Register    /* Set vector address in CP15 VBAR register */    ldr r0, =_start    mcr p15, 0, r0, c12, c0, 0  @Set VBAR#endif

这是对cp15寄存器的操作

这一句:mrc p15, 0, r0, c1, c0, 0   @ Read CP15 SCTRL Register

就是把cp15的c1 c0中的值放到 r0寄存器中

#define CR_V    (1 << 13)   /* Vectors relocated to 0xffff0000  */bic r0, #CR_V       @ V = 0

就是把r0的第13位清零

mcr p15, 0, r0, c1, c0, 0   @ Write CP15 SCTRL Register

然后再写回c1 c0寄存器

我们看一下手册中的c1 c0的第13位清零是什么作用

这里写图片描述

这里写图片描述

这个寄存器对异常向量起作用,描述上大概是第13位为0 异常向量地址会被映射到0x00000000 如果为1 会被映射到0xffff0000

个人记录使用

0 0
原创粉丝点击