⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 initstack.s

📁 在三星的S3C44B0X上移植的uCOSII2.80的源程序
💻 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 + -