汇编之创建堆栈

  • Post author:
  • Post category:其他


;定义出所有处理器模式的值,为后面切换处理器做准备
CPU_USER_MODE    EQU    (0x10)
CPU_FIQ_MODE        EQU    (0x11)
CPU_IRQ_MODE        EQU    (0x12)
CPU_SVC_MODE        EQU    (0x13)
CPU_ABT_MODE        EQU    (0x17)
CPU_UND_MODE        EQU    (0x1B)
CPU_SYS_MODE        EQU    (0x1F)

;接下来设置一下堆栈的栈底和堆栈的大小
;系统模式
STACK_SYS_ADDR    EQU    (0x33FF8000)    
STACK_SYS_SIZE    EQU    (1024)
;
STACK_ABT_ADDR    EQU    (STACK_SYS_ADDR - STACK_SYS_SIZE)
STACK_ABT_SIZE    EQU    (1024)
;未定义模式
STACK_UND_ADDR    EQU    (STACK_ABT_ADDR - STACK_ABT_SIZE)
STACK_UND_SIZE    EQU    (1024)
;快中断模式
STACK_FIQ_ADDR    EQU    (STACK_UND_ADDR - STACK_UND_SIZE)
STACK_FIQ_SIZE    EQU    (1024)
;中断模式
STACK_IRQ_ADDR    EQU    (STACK_FIQ_ADDR - STACK_FIQ_SIZE)
STACK_IRQ_SIZE    EQU    (1024 * 20)    ;默认20k给中断
;管理员模式
STACK_SVC_ADDR    EQU    (STACK_IRQ_ADDR - STACK_IRQ_SIZE)
STACK_SVC_SIZE    EQU    (1024 * 20)
    
    EXPORT    STACK_init
    AREA  Stack, CODE, READONLY    ;定义启动代码区域
   



版权声明:本文为Gaodes原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。