21 lines
648 B
ArmAsm
21 lines
648 B
ArmAsm
.syntax unified
|
||
.thumb
|
||
.section .text
|
||
.global HardFault_Handler
|
||
.type HardFault_Handler, %function
|
||
|
||
HardFault_Handler:
|
||
// Проверяем бит 2 в LR: если 1, то использовался PSP, иначе MSP
|
||
TST LR, #4
|
||
BNE UsePSP
|
||
UseMSP:
|
||
MRS R0, MSP // R0 = указатель MSP
|
||
MOVS R1, #0 // R1 = флаг 0 (MSP)
|
||
B CallHandler
|
||
UsePSP:
|
||
MRS R0, PSP // R0 = указатель PSP
|
||
MOVS R1, #1 // R1 = флаг 1 (PSP)
|
||
CallHandler:
|
||
LDR R2, =HardFault_C_Handler
|
||
BX R2
|
||
.size HardFault_Handler, . - HardFault_Handler |