ARMV8_AARCH64裸机启动流程分析
本篇针对于ARMV8架构下64位模式的裸机启动代码流程分析,重点介绍裸机启动代码bootcode.s。
重点了解ARM处理器从上电到跳转到main函数的过程!!!
1、寄存器初始化
首先我们需要初始化相关寄存器:
通用寄存器;SP寄存器(stack pointer);System control registers.(控制寄存器)。
1.1、初始化通用寄存器
ARM处理器使用一些非复位触发器。这可能会导致模拟中出现X传播问题。寄存器初始化有助于减少问题的可能性。寄存器的低32位用w来表示。
注:由于X状态仅存在于硬件模拟中,因此在硅芯片上不需要此初始化。
对寄存器的初始化代码如代码1-1所示:
/*code1-1: Initialize the stack pointer.*/
MOV X0, XZR
…………………
MOV X30, XZR
如果处理器实现NEON和FP扩展功能,浮点寄
共有 0 条评论