注册 登录
编程论坛 汇编论坛

mips64引导问题(1)

ditg 发布于 2020-06-25 18:12, 4330 次点击
程序代码:
    .set    noreorder
    .globl    _start
    .globl    start
_start:
start:
    .globl    stack
stack = start - 0x4000   

    mtc0    zero, COP_0_STATUS_REG
    mtc0    zero, COP_0_CAUSE_REG
    li    t0, SR_BOOT_EXC_VEC   
    mtc0    t0, COP_0_STATUS_REG
    la    sp, stack

    bal    uncached        /* Switch to uncached address space */
    nop

uncached:
    or    ra, UNCACHED_MEMORY_ADDR
    j    ra
    nop


引导代码bal为什么能够跳转到uncached执行(地址怎么计算的)?目的是什么?
2 回复
#2
Valenciax2020-06-26 05:54
bal是无条件跳,目的是清空预取指令和流水线的指令,也就是说,cpu不要猜了,直接跳去吧.
uncached的地址是编译器计算的
#3
ditg2020-06-26 17:17
V版,目的不太可能跟指令队列和流水线有关吧,我认为那只是个硬件运作。压入返回地址后进行的或操作,0xBFC000XX | 0xA0000000还是原地址0xBFC000XX,这条指令完全没有意义?
1