// disable interrupts before pulling preserveddata off the stack disable_irq kernel_exit 1 //异常返回,把全部压入栈中的寄存器弹出。 相应于kernel_entry。 el1_sp_pc: /* *Stack or PC alignment exception handling */ mrs x0,far_el1 mov x1,x25 mov x2,sp b do_sp_pc_abort el1_undef: /...
在ARM状态下,寄存器R7 ~ R0称之为Lo-registers;寄存器R15 ~ R8称之为Hi-registers。R13通常作为Stack Pointer(SP),R14用作Link Register(LR),R15作为Program Counter(PC)。 Thumb状态下的SP对应ARM状态下的R13,LR对应ARM状态下的R14,PC对应ARM状态下的R15。 ARM处理器的存储器组织结构 ARM的数据类型 ARM体系...
除了irq mode,linux kernel在处理abt mode(当发生data abort exception或者prefetch abort exception的时候进入的模式)和und mode(处理器遇到一个未定义的指令的时候进入的异常模式)的时候也是采用了相同的策略。也就是经过一个简短的abt或者und mode之后,stack切换到svc mode的栈上,这个栈就是发生异常那个时间点current...
首先启用名为 CONFIG_DEBUG_UNCOMPRESS 的 Kconfig 选项。这是为了在解压内核之前打印“Uncompressing Linux...”的短消息,在解压后打印“done, booting the kernel”。这是一个很好的烟雾测试,表明 CONFIG_DEBUG_LL 已设置且 DEBUG_UART_PHYS 正确且解压工作正常,但仅此而已,不提供任何底层调试。 通过在 arch/arm...
//去掉vmlinux调试信息 Arch/arm/boot/Image ——> //lzma压缩末尾4个字节代表Image大小,汇编代码通过input_data_end获取 Arch/arm/boot/compressed/piggy.lzma——> //根据vmlinux.lds,将压缩内核、引导代码、自解压代码等重新组成新的vmlinux Arch/arm/boot/compressed/piggy.lzma.o+head.o+misc.o+ decompres...
文章目录一、堆栈Stack1.堆栈的概念2.堆栈的作用3.堆栈指针寄存器Stack Pointer4.举例二、ARMCortex M0+ CPU(32bits)1. 基本指令2. 举例 一、堆栈Stack1.堆栈的概念堆栈是一段连续的存储器空间,堆栈按照后入先出的方式工作(Last In First Out),只能向/从堆栈的顶部加入或取出数据,即堆栈能够保持数据的顺序。
sp(Stack pointer) EL1t: t表示选择SP_EL0EL1h:h表示选择SP_ELx(x>0) PC(Program Counter)在armv7上PC是一个通用寄存器R15,在armv8上PC不在是一个寄存器,它不能直接被修改。必需使用一些隐式的指令来改变,如PC-relative load SPSR PSTATE (Processor state)在aarch64中,调用ERET从一个异常返回时,会将...
ARM Linux启动分析---head-armv.S内幕 Linux启动后执行的第一个文件是arch/arm/kernel下的head-($PROCESSOR).S文件,processor代表的是该cpu的类型。ARM 6及其以后的处理器核心支持32位地址空间。这些处理器可以在26位和 32位PC的模式下操作。在26位PC模式下,R15寄存器的表现如同在以前的处理器上,代码只能运行在...
R13,栈指针(Stack Pointer) R13寄存器中存放的是栈顶指针,M3/M4 的栈是向下生长的,入栈的时候地址是往下减少的。 裸机程序不会用到PSP,只用到MSP,需要运行RTOS的时候才会用到PSP。 堆栈主要是通过POP,PUSH指令来进行操作。在执行 PUSH 和 POP 操作时,...
1) 相应的 R0~R12、相应的 R13(Stack Pointer,SP,栈指向)和 R14(the Link Register,LR,链路寄存器)。 2) 相应的 R15(PC)、相应的 CPSR。特权模式(除 System 模式外)还可以存取相应的 SPSR。只有HYP 模式可以存取 ELR_hyp。 7、通用寄存器根据其分组与否可分为以下两类: ...