如何在 xtensa 架构中映射复位向量?
How to map reset vector in xtensa architecture?
我是 xtensa 架构的新手,第一步是尝试映射重置向量。 Google搜索到xtensa的Uboot端口(https://github.com/jcmvbkbc/u-boot-tensa/blob/master/arch/xtensa/cpu/start.S),代码如下;
.section .ResetVector.text, "awx"
.global _ResetVector
_ResetVector:
j 1f
.align 4
2: .long _start
1: l32r a2, 2b
jx a2
我从 link 那里得到了 xtensa ISA
https://0x04.net/~mwk/doc/xtensa.pdf(跳转指令3.8.4节)
这是我的问题;
j 1f
应该把pc移动'1f',那后面的代码有什么用?
标签 2: 和 1: 有什么用?
这阻止了我进一步尝试理解其余代码。我提前感谢任何有助于更好地理解代码的帮助,以及任何关于如何在 xtensa 中映射向量的额外参考。我不确定标签是否合适,但我无法创建标签 xtensa,所以我选择了最接近的标签。
1f
不是十六进制值,它是本地标签引用。参见manual。作者只是懒惰或认为选择更好的标签名称不够重要。代码相当于:
j skip
.align 4
addr:
.long _start
skip:
l32r a2, addr
jx a2
因此,第一个 j
用于跳过 l32r
随后加载的嵌入数据,jx
跳转到。
我是 xtensa 架构的新手,第一步是尝试映射重置向量。 Google搜索到xtensa的Uboot端口(https://github.com/jcmvbkbc/u-boot-tensa/blob/master/arch/xtensa/cpu/start.S),代码如下;
.section .ResetVector.text, "awx"
.global _ResetVector
_ResetVector:
j 1f
.align 4
2: .long _start
1: l32r a2, 2b
jx a2
我从 link 那里得到了 xtensa ISA https://0x04.net/~mwk/doc/xtensa.pdf(跳转指令3.8.4节)
这是我的问题;
j 1f
应该把pc移动'1f',那后面的代码有什么用?
标签 2: 和 1: 有什么用?
这阻止了我进一步尝试理解其余代码。我提前感谢任何有助于更好地理解代码的帮助,以及任何关于如何在 xtensa 中映射向量的额外参考。我不确定标签是否合适,但我无法创建标签 xtensa,所以我选择了最接近的标签。
1f
不是十六进制值,它是本地标签引用。参见manual。作者只是懒惰或认为选择更好的标签名称不够重要。代码相当于:
j skip
.align 4
addr:
.long _start
skip:
l32r a2, addr
jx a2
因此,第一个 j
用于跳过 l32r
随后加载的嵌入数据,jx
跳转到。