【问题标题】:How to map reset vector in xtensa architecture?如何在 xtensa 架构中映射重置向量?
【发布时间】:2019-01-27 11:40:31
【问题描述】:

我是 xtensa 架构的新手,第一步尝试映射重置向量。谷歌搜索带我到xtensa的Uboot端口(@98​​7654321@),下面是代码;

.section .ResetVector.text, "awx"
.global _ResetVector
   _ResetVector:

 j  1f
.align 4
    2:  .long   _start
    1:  l32r    a2, 2b
       jx   a2

我从链接中获得了 xtensa ISA https://0x04.net/~mwk/doc/xtensa.pdf(跳转指令第3.8.4节)

这是我的问题;

    j  1f   

应该将pc移动'1f',那之后的代码有什么用呢?
标签 2: 和 1: 有什么用?

这使我无法进一步理解代码的其余部分。我提前感谢任何帮助以更好地理解代码以及有关如何在 xtensa 中映射向量的任何其他参考。我不确定标签是否合适,但我无法创建标签 xtensa,所以我选择了最接近的标签。

【问题讨论】:

    标签: assembly osdev xtensa


    【解决方案1】:

    1f 不是十六进制值,它是本地标签引用。请参阅manual。作者只是懒惰或认为选择更好的标签名称不够重要。代码相当于:

        j  skip
    .align 4
     addr:
        .long   _start
     skip:
        l32r    a2, addr
        jx   a2
    

    因此,第一个 j 用于跳过 l32r 随后加载和 jx 跳转到的嵌入数据。

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      相关资源
      最近更新 更多