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

📄 boot_a.s

📁 周立功MAGICARM2200--ZLG_BOOT
💻 S
字号:
;/****************************************Copyright (c)**************************************************
;**                               Guangzou ZLG-MCU Development Co.,LTD.
;**                                      graduate school
;**                                 http://www.zlgmcu.com
;**
;**--------------File Info-------------------------------------------------------------------------------
;** File name:          Boot_a.s
;** Last modified Date:  2005-02-24
;** Last Version:       1.0
;** Descriptions:       zlg/boot v1.0(change all regs but not spsr)
;**             
;**------------------------------------------------------------------------------------------------------
;** Created by:         Chenmingji
;** Created date:       2005-02-24
;** Version:            1.0
;** Descriptions:       The original version
;**
;**------------------------------------------------------------------------------------------------------
;** Modified by:        
;** Modified date:
;** Version:    
;** Descriptions: 
;**
;********************************************************************************************************/

NoInt       EQU 0x80

USR32Mode   EQU 0x10
FIQ32Mode   EQU 0x11
IRQ32Mode   EQU 0x12
SVC32Mode   EQU 0x13
ABT32Mode   EQU 0x17
UND32Mode   EQU 0x1b
SYS32Mode   EQU 0x1f

;T_bit用于检测进入异常前cpu是否处于THUMB状态
T_bit               EQU         0x20

    
;The imported labels    
;引入的外部标号在这声明
    IMPORT  Regs
;The emported labels    
;给外部使用的标号在这声明
    EXPORT  Start_Boot

    CODE32

    AREA    Boot_a,CODE,READONLY
        ENTRY

;取数据中止
Start_Boot
        MSR     CPSR_c, #(NoInt | ABT32Mode)    ; 切换到取数据中止模式
        LDR     SP, =Regs
        
        LDMFD   SP!, {R3}
        MSR     SPSR_cxsf, R3

        MOV     R1, SP

        MSR     CPSR_c, #(NoInt | SYS32Mode)    ; 切换到SYS模式
        LDMFD   R1!, {SP, LR}                   ; 恢复UND模式SP, LR

        MSR     CPSR_c, #(NoInt | UND32Mode)    ; 切换到UND模式
        LDMFD   R1!, {SP, LR}                   ; 恢复UND模式SP, LR

        MSR     CPSR_c, #(NoInt | SVC32Mode)    ; 切换到SVC模式
        LDMFD   R1!, {SP, LR}                   ; 恢复SVC模式SP, LR

        MSR     CPSR_c, #(NoInt | IRQ32Mode)    ; 切换到IRQ模式
        LDMFD   R1!, {SP, LR}                   ; 恢复IRQ模式SP, LR

        MSR     CPSR_c, #(NoInt | FIQ32Mode)    ; 切换到FIQ模式
        LDMFD   R1!, {R8-LR}                    ; 恢复FIQ模式R8-LR

        MSR     CPSR_c, #(NoInt | ABT32Mode)    ; 切换到取数据中止模式
        MOV     SP, R1

        LDMFD   SP, {R0-R15}^
    END
;/*********************************************************************************************************
;**                            End Of File
;********************************************************************************************************/

⌨️ 快捷键说明

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