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

📄 initstack.s

📁 一个小的嵌入式os
💻 S
字号:
;/*
;*********************************************************************************************************
;* File Name:InitStack.S
;* Description: 初始化各种模式的堆栈指针.
;* Author: kaka(sn.kaka@yahoo.com).
;*********************************************************************************************************
;*/

FIQ_Stack_Legth     EQU        1024*5           ;// 快速中断模式堆栈空间.
IRQ_Stack_Legth     EQU        1024*5          ;// 中断模式堆栈空间.
ABT_Stack_Legth     EQU          10*4            ; //中止义模式堆栈空间.
UND_Stack_Legth     EQU          10*4            ; //未定义模式堆栈
SVC_Stack_Legth     EQU        1024*6           ; //管理模式堆栈的大小.
SYS_Stack_Legth     EQU          1024*4            ;// 系统模式堆栈的大小(可以与其它模式堆栈共用).
USR_Stack_Legth     EQU          1024*4 
;/*
;*********************************************************************************************************
;* Description: 申请 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
UsrStackSpace      SPACE   USR_Stack_Legth
bottom_of_heap     SPACE   256                  ; //库函数的堆空间

        EXPORT  __user_initial_stackheap
        EXPORT  InitStack

        AREA    InitStack1,CODE,READONLY
        CODE32


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


	 ;MSR     CPSR_c, #0x0D0                  ;// 设置用户/系统模式堆栈.
        ;LDR     SP,     UsrStack			;//进入用户模式后处理器模式
        								;//将不能正常切换了,除非中断或者异常

        MOV     PC,     R0


__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
UsrStack 		DCD UsrStackSpace + USR_Stack_Legth 
;/*
;*********************************************************************************************************
        END
;*********************************************************************************************************
;*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -