?? 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 + -