标题:mips64引导问题(1)
只看楼主
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
结帖率:100%
已结贴  问题点数:20 回复次数:2 
mips64引导问题(1)
程序代码:
    .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执行(地址怎么计算的)?目的是什么?
搜索更多相关主题的帖子: 地址 start stack 执行 计算 
2020-06-25 18:12
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:337
专家分:2462
注 册:2016-5-15
得分:20 
bal是无条件跳,目的是清空预取指令和流水线的指令,也就是说,cpu不要猜了,直接跳去吧.
uncached的地址是编译器计算的
2020-06-26 05:54
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 
V版,目的不太可能跟指令队列和流水线有关吧,我认为那只是个硬件运作。压入返回地址后进行的或操作,0xBFC000XX | 0xA0000000还是原地址0xBFC000XX,这条指令完全没有意义?

梦想拥有一台龙芯3A-4000
2020-06-26 17:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502284-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.142454 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved