📄 initstack.s
字号:
;/*
;*********************************************************************************************************
;* 文件: InitStack.S
;* 描述: 初始化各种模式的堆栈指针.
;* 编写: 深思 (001-12345@sohu.com).
;*********************************************************************************************************
;*/
;/*
;*********************************************************************************************************
;* 描述: 认真分配各种模式的堆栈大小,避免溢出.
;*********************************************************************************************************
;*/
FIQ_Stack_Legth EQU 1024*5 ; 快速中断模式堆栈空间.
IRQ_Stack_Legth EQU 1024*50 ; 中断模式堆栈空间.
ABT_Stack_Legth EQU 0*4 ; 中止义模式堆栈空间.
UND_Stack_Legth EQU 0*4 ; 未定义模式堆栈
SVC_Stack_Legth EQU 1024*5 ; 管理模式堆栈的大小.
SYS_Stack_Legth EQU 0*4 ; 系统模式堆栈的大小(可以与其它模式堆栈共用).
;/*
;*********************************************************************************************************
;* 描述: 申请 RAM 空间.
;*********************************************************************************************************
;*/
AREA MyStacks, DATA, NOINIT, ALIGN=2
FiqStackSpace SPACE FIQ_Stack_Legth
IrqStackSpace SPACE IRQ_Stack_Legth
AbtStackSpace SPACE ABT_Stack_Legth
UndStackSpace SPACE UND_Stack_Legth
SvcStackSpace SPACE SVC_Stack_Legth
SysStackSpace SPACE SYS_Stack_Legth
bottom_of_heap SPACE 256 ; 库函数的堆空间
EXPORT __user_initial_stackheap
EXPORT InitStack
AREA InitStack1,CODE,READONLY
CODE32
;/*
;**********************************************************************************************************
;* 函数: InitStack.
;* 功能: 初始化堆栈, 退出后将在 sys 模式.
;**********************************************************************************************************
;*/
InitStack
MOV R0, LR
LDR SP, SvcStack ; 设置管理模式堆栈.
MSR CPSR_c, #0x0d2 ; 设置中断模式堆栈.
LDR SP, IrqStack
MSR CPSR_c, #0x0d1 ; 设置快速中断模式堆栈.
LDR SP, FiqStack
MSR CPSR_c, #0x0d7 ; 设置中止模式堆栈.
LDR SP, AbtStack
MSR CPSR_c, #0x0db ; 设置未定义模式堆栈.
LDR SP, UndStack
MSR CPSR_c, #0x0df ; 设置用户/系统模式堆栈.
LDR SP, SysStack
MOV PC, R0
;/*
;*******************************************************************************************************
;* 函数: __user_initial_stackheap.
;* 功能: 库函数初始化堆和栈,不要删除.
;*******************************************************************************************************
;*/
__user_initial_stackheap
LDR R0, =bottom_of_heap
MOV PC, LR
;/*
;*******************************************************************************************************
;* 功能: 文字池.
;*******************************************************************************************************
;*/
FiqStack DCD FiqStackSpace + FIQ_Stack_Legth
IrqStack DCD IrqStackSpace + IRQ_Stack_Legth
AbtStack DCD AbtStackSpace + ABT_Stack_Legth
UndStack DCD UndStackSpace + UND_Stack_Legth
SvcStack DCD SvcStackSpace + SVC_Stack_Legth
SysStack DCD IrqStackSpace + IRQ_Stack_Legth
;/*
;*********************************************************************************************************
END
;*********************************************************************************************************
;*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -