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

📄 crt0_iar.s79

📁 含t h r e a d x,u c o s 的b s p
💻 S79
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; $Workfile:   crt0_iar.s79  $
; $Revision:   1.0  $
; $Author:   WellsK  $
; $Date:   Apr 15 2004 16:41:14  $
; 
; Project: IAR C runtime startup code
;
; Description:
;     This code sets up the basic code runtime environment for and
;     application example started with the IAR toolset. This code
;     sets up the basic stacks and uses the IAR runtime initialization
;     code to do the rest. The application entry point is through main.
;
; Revision history:
; $Log:   //smaicnt2/pvcs/VM/sharpmcu/archives/sharpmcu/software/csps/lh7a404/bsps/sdk7a404/examples/common/crt0_iar.s79-arc  $
;
;   Rev 1.0   Apr 15 2004 16:41:14   WellsK
;Initial revision.
; 
;  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SHARP MICROELECTRONICS OF THE AMERICAS MAKES NO REPRESENTATION
; OR WARRANTIES WITH RESPECT TO THE PERFORMANCE OF THIS SOFTWARE,
; AND SPECIFICALLY DISCLAIMS ANY RESPONSIBILITY FOR ANY DAMAGES, 
; SPECIAL OR CONSEQUENTIAL, CONNECTED WITH THE USE OF THIS SOFTWARE.
; 
; SHARP MICROELECTRONICS OF THE AMERICAS PROVIDES THIS SOFTWARE SOLELY 
; FOR THE PURPOSE OF SOFTWARE DEVELOPMENT INCORPORATING THE USE OF A 
; SHARP MICROCONTROLLER OR SYSTEM-ON-CHIP PRODUCT. USE OF THIS SOURCE
; FILE IMPLIES ACCEPTANCE OF THESE CONDITIONS.
; 
; COPYRIGHT (C) 2001 SHARP MICROELECTRONICS OF THE AMERICAS, INC.
;     CAMAS, WA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Macros and definitions for the whole file
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SEGMENT_ALIGN    DEFINE 2      ; Align all segments to 2^2
#define CPU_MODE_NAME   "arm"

CPU_MODE    MACRO
            CODE32
            ENDM

; Mode, correspords to bits 0-5 in CPSR
MODE_BITS   DEFINE  0x1F       ; Bit mask for mode and int bits in CPSR
USR_MODE    DEFINE  0x10       ; User mode
FIQ_MODE    DEFINE  0x11       ; Fast Interrupt Request mode
IRQ_MODE    DEFINE  0x12       ; Interrupt Request mode
SVC_MODE    DEFINE  0x13       ; Supervisor mode
ABT_MODE    DEFINE  0x17       ; Abort mode
UND_MODE    DEFINE  0x1B       ; Undefined Instruction mode
SYS_MODE    DEFINE  0x1F       ; System mode
I_MASK      DEFINE  0x80       ; IRQ mask bit
F_MASK      DEFINE  0x40       ; FIQ mask bit
IF_MASK     DEFINE  0xC0       ; IRQ/FIQ mask bits

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ?CSTARTUP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    MODULE    ?CSTARTUP

    PUBLIC    _start
    RSEG      IRQ_STACK:DATA(2)
    RSEG      FIQ_STACK:DATA(2)
    RSEG      ABT_STACK:DATA(2)
    RSEG      UND_STACK:DATA(2)
    RSEG      SYS_STACK:DATA(2)
    RSEG      SVC_STACK:DATA:NOROOT(2)
    RSEG      ICODE:CODE:NOROOT(2)
    PUBLIC    ?cstartup
    EXTERN    ?main

    CODE32
_start
?cstartup

; Initialize all stacks
    mov   r1, #IF_MASK
; FIQ stack from size defined in link map file
    MRS    r0, cpsr                         ; Original PSR value
    bic    r0, r0, #MODE_BITS               ; Clear the mode bits
    orr    r0, r1, #FIQ_MODE                ; Set FIQ mode bits
    msr    cpsr_c, r0                       ; Change the mode
    ldr    sp, =SFE(FIQ_STACK) & 0xFFFFFFF8 ; End of FIQ_STACK

; IRQ stack from size defined in link map file
    MRS    r0, cpsr                         ; Original PSR value
    bic    r0, r0, #MODE_BITS               ; Clear the mode bits
    orr    r0, r1, #IRQ_MODE                ; Set IRQ mode bits
    msr    cpsr_c, r0                       ; Change the mode
    ldr    sp, =SFE(IRQ_STACK) & 0xFFFFFFF8 ; End of IRQ_STACK

; ABT stack from size defined in link map file
    MRS    r0, cpsr                         ; Original PSR value
    bic    r0, r0, #MODE_BITS               ; Clear the mode bits
    orr    r0, r1, #ABT_MODE                ; Set ABT mode bits
    msr    cpsr_c, r0                       ; Change the mode
    ldr    sp, =SFE(ABT_STACK) & 0xFFFFFFF8 ; End of ABT_STACK

; UND stack from size defined in link map file
    MRS    r0, cpsr                         ; Original PSR value
    bic    r0, r0, #MODE_BITS               ; Clear the mode bits
    orr    r0, r1, #UND_MODE                ; Set UND mode bits
    msr    cpsr_c, r0                       ; Change the mode
    ldr    sp, =SFE(UND_STACK) & 0xFFFFFFF8 ; End of UND_STACK

; SYS stack from size defined in link map file
    MRS    r0, cpsr                         ; Original PSR value
    bic    r0, r0, #MODE_BITS               ; Clear the mode bits
    orr    r0, r1, #SYS_MODE                ; Set SYS mode bits
    msr    cpsr_c, r0                       ; Change the mode
    ldr    sp, =SFE(SYS_STACK) & 0xFFFFFFF8 ; End of SYS_STACK

; SVC stack from size defined in link map file
    MRS    r0, cpsr                         ; Original PSR value
    bic    r0, r0, #MODE_BITS               ; Clear the mode bits
    orr    r0, r1, #SVC_MODE                ; Set SVC mode bits
    msr    cpsr_c, r0                       ; Change the mode
    ldr    sp, =SFE(SVC_STACK) & 0xFFFFFFF8 ; End of SVC_STACK

; Continue to ?main for more IAR specific system startup
    ldr    r0, =?main
    bx     r0        

    LTORG

    ENDMOD

    END

⌨️ 快捷键说明

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