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

📄 crt0.s.bak

📁 An complete pmp solution for mattel juicebox player. Using crossworks for arm.
💻 BAK
字号:
	// file: crt0.s

    .global main                    // int main(void)

    .global _etext                  // -> .data initial values in ROM
    .global _data                   // -> .data area in RAM
    .global _edata                  // end of .data area
    .global __bss_start__             // -> .bss area in RAM
    .global __bss_end__             // end of .bss area
    .global __stack_start__                  // top of stack
// Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs
    .set  MODE_USR, 0x10            // User Mode
    .set  MODE_FIQ, 0x11            // FIQ Mode
    .set  MODE_IRQ, 0x12            // IRQ Mode
    .set  MODE_SVC, 0x13            // Supervisor Mode
    .set  MODE_ABT, 0x17            // Abort Mode
    .set  MODE_UND, 0x1B            // Undefined Mode
    .set  MODE_SYS, 0x1F            // System Mode

    .equ  I_BIT, 0x80               // when I bit is set, IRQ is disabled
    .equ  F_BIT, 0x40               // when F bit is set, FIQ is disabled

    .text
    .code 32
    .align 2
    
    

//------------------------------------------------
    

//------------------------------------------------
//ENTRY
 /* b _start //; 0x00
  b _start //; 0x04
  b _start //; 0x08
  b _start //; 0x0c
  b _start //; 0x10
  b . // 0x14
  b HandlerIRQ //; 0x18
  b HandlerFIQ //; 0x1c
  ldr pc,=HandlerEINT0 //; 0x20
  ldr pc,=HandlerEINT1
  ldr pc,=HandlerEINT2
  ldr pc,=HandlerEINT3
  ldr pc,=HandlerEINT4567
  ldr pc,=HandlerTICK //; 0x34
  b .
  b .
  ldr pc,=HandlerZDMA0 //; 0x40
  ldr pc,=HandlerZDMA1
  ldr pc,=HandlerBDMA0
  ldr pc,=HandlerBDMA1
  ldr pc,=_start        //;=HandlerWDT
  ldr pc,=HandlerUERR01 //; 0x54
  b .
  b .
  ldr pc,=HandlerTIMER0 //; 0x60
  ldr pc,=HandlerTIMER1
  ldr pc,=HandlerTIMER2
  ldr pc,=HandlerTIMER3
  ldr pc,=HandlerTIMER4
  ldr pc,=HandlerTIMER5 //; 0x74
  b .
  b .
  ldr pc,=HandlerURXD0 //; 0x80
  ldr pc,=HandlerURXD1
  ldr pc,=HandlerIIC
  ldr pc,=HandlerSIO
  ldr pc,=HandlerUTXD0
  ldr pc,=HandlerUTXD1 //; 0x94
  b .
  b .
  ldr pc,=HandlerRTC //; 0xa0
  b .
  b .
  b .
  b .
  b .
  b .
  ldr pc,=HandlerADC //; 0xb4
*/
// Setup the operating mode & stack.
// ---------------------------------
    .global _start, start, _mainCRTStartup, ResetHandler
    .func   _start

//----------------------------------------------
ResetHandler:
_start:
start:
_mainCRTStartup:
    
    mrs   r0,cpsr                   // get PSR
    orr   r0,r0,#I_BIT|F_BIT        // disable IRQ and FIQ
    msr   cpsr,r0                   // set up status register

    ldr   r0,=__stack_start__
    mov   sp,r0

    mov   r0,#0                     // get a zero
    ldr   r1,=__bss_start__           // -> bss start
    ldr   r2,=__bss_end__           // -> bss end
2:  cmp   r1,r2                     // check if data to clear
    strlo r0,[r1],#4                // clear 4 bytes
    blo   2b                        // loop until done

    ldr   r1,=main
    mov   lr,pc
    bx    r1                       // enter main()

    .size   _start, . - _start
    .endfunc

    
 
 .func ResetHandler 
 /*
HandlerUndef: //; 0x04
HandlerSWI: //; 0x08
HandlerPabort: //; 0x0c
HandlerDabort: //; 0x10
HandlerIRQ: //; 0x18
HandlerFIQ: //; 0x1c
HandlerEINT0: //; 0x20
HandlerEINT1:
HandlerEINT2:
HandlerEINT3:
HandlerEINT4567:
HandlerTICK: //; 0x34
HandlerZDMA0: //; 0x40
HandlerZDMA1:
HandlerBDMA0:
HandlerBDMA1:
HandlerWDT:
HandlerUERR01: //; 0x54
HandlerTIMER0: //; 0x60
HandlerTIMER1:
HandlerTIMER2:
HandlerTIMER3:
HandlerTIMER4:
HandlerTIMER5: //; 0x74
HandlerURXD0: //; 0x80
HandlerURXD1:
HandlerIIC:
HandlerSIO:
HandlerUTXD0:
HandlerUTXD1: //; 0x94
HandlerRTC: //; 0xa0
HandlerADC: //; 0xb4*/
      ldr pc,=ResetHandler //; 0x20

      .end
	

⌨️ 快捷键说明

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