Bond697 icon

White 2 crt0.s

Bond697 | PRO | 08/07/11 05:31:11 PM UTC | 0 ⭐ | 10606 👁️ | Never ⏰ | []
ARM |

11.8 KB

|

None

|

0 👍

/

0 👎

ARM9:02004800             ; =============== S U B R O U T I N E =======================================
ARM9:02004800
ARM9:02004800
ARM9:02004800             ; void __fastcall start()
ARM9:02004800             _start                                  ; DATA XREF: 02FFFE24o
ARM9:02004800 01 C3 A0 E3                 MOV     R12, #0x4000000
ARM9:02004804 08 C2 8C E5                 STR     R12, [R12,#0x208]
ARM9:02004808 81 00 00 EB                 BL      INITi_InitCoprocessor
ARM9:0200480C 00 00 A0 E3                 MOV     R0, #0          ; data
ARM9:02004810 94 11 9F E5                 LDR     R1, =0x2FFFF80  ; destp ; PXI Signal Param for ARM9(start of system-shared area past debug area)
ARM9:02004814 94 21 9F E5                 LDR     R2, =0x68       ; size
ARM9:02004818 78 00 00 EB                 BL      INITi_CpuClear32 ; zero-out 2FFFF80 to 2FFFFE8(Clear out non-debugger portion of system-shared area)
ARM9:0200481C 00 00 A0 E3                 MOV     R0, #0          ; data
ARM9:02004820 8C 11 9F E5                 LDR     R1, =0x2FFFFF0  ; destp ;Start of initialization lock buffer
ARM9:02004824 8C 21 9F E5                 LDR     R2, =0x10       ; size
ARM9:02004828 74 00 00 EB                 BL      INITi_CpuClear32 ; zero-out 2FFFFF0 to 3000000(set initialization lock buffer to 0)
ARM9:0200482C 88 11 9F E5                 LDR     R1, =0x2FFFC40  ; WM boot buffer
ARM9:02004830 B0 20 D1 E1                 LDRH    R2, [R1]        ; get boot type
ARM9:02004834 00 00 52 E3                 CMP     R2, #0          ; is the boot type illegal?
ARM9:02004838 01 20 A0 03                 MOVEQ   R2, #1
ARM9:0200483C B0 20 C1 01                 STREQH  R2, [R1]
ARM9:02004840 78 11 9F E5                 LDR     R1, =microcode_ShakeHand
ARM9:02004844 78 21 9F E5                 LDR     R2, =0x1FF8000  ; ITCM
ARM9:02004848 28 30 82 E2                 ADD     R3, R2, #0x28
ARM9:0200484C
ARM9:0200484C             loc_200484C                             ; CODE XREF: _start+58j
ARM9:0200484C 04 00 91 E4                 LDR     R0, [R1],#4
ARM9:02004850 04 00 82 E4                 STR     R0, [R2],#4
ARM9:02004854 03 00 52 E1                 CMP     R2, R3
ARM9:02004858 FB FF FF BA                 BLT     loc_200484C
ARM9:0200485C 64 01 9F E5                 LDR     R0, =0x2FFFC28
ARM9:02004860 01 10 A0 E3                 MOV     R1, #1
ARM9:02004864 B0 10 C0 E1                 STRH    R1, [R0]
ARM9:02004868 5C 01 9F E5                 LDR     R0, =0x2FFFC24
ARM9:0200486C 5C 11 9F E5                 LDR     R1, =0x2FFFC26
ARM9:02004870 4C 21 9F E5                 LDR     R2, =0x1FF8000  ; =0x1FF8000, start of ITCM(Instruction Tightly Coupled Memory)
ARM9:02004874 32 FF 2F E1                 BLX     R2
ARM9:02004878 54 11 9F E5                 LDR     R1, =microcode_WaitAgreement
ARM9:0200487C 40 21 9F E5                 LDR     R2, =0x1FF8000
ARM9:02004880 1C 30 82 E2                 ADD     R3, R2, #0x1C
ARM9:02004884
ARM9:02004884             loc_2004884                             ; CODE XREF: _start+90j
ARM9:02004884 04 00 91 E4                 LDR     R0, [R1],#4
ARM9:02004888 04 00 82 E4                 STR     R0, [R2],#4
ARM9:0200488C 03 00 52 E1                 CMP     R2, R3
ARM9:02004890 FB FF FF BA                 BLT     loc_2004884
ARM9:02004894 2C 01 9F E5                 LDR     R0, =0x2FFFC28
ARM9:02004898 04 10 A0 E3                 MOV     R1, #4
ARM9:0200489C 20 21 9F E5                 LDR     R2, =0x1FF8000  ; ITCM
ARM9:020048A0 32 FF 2F E1                 BLX     R2
ARM9:020048A4 82 01 00 EB                 BL      INITi_IsRunOnTwl
ARM9:020048A8 0A 00 00 1A                 BNE     loc_20048D8
ARM9:020048AC 24 11 9F E5                 LDR     R1, =microcode_SwitchCpuClock
ARM9:020048B0 0C 21 9F E5                 LDR     R2, =0x1FF8000  ; ITCM
ARM9:020048B4 1C 20 82 E2                 ADD     R2, R2, #0x1C
ARM9:020048B8 34 30 A0 E3                 MOV     R3, #0x34 ; '4'
ARM9:020048BC
ARM9:020048BC             loc_20048BC                             ; CODE XREF: _start+C8j
ARM9:020048BC 04 30 53 E2                 SUBS    R3, R3, #4
ARM9:020048C0 03 00 91 E7                 LDR     R0, [R1,R3]
ARM9:020048C4 03 00 82 E7                 STR     R0, [R2,R3]
ARM9:020048C8 FB FF FF CA                 BGT     loc_20048BC
ARM9:020048CC 01 00 A0 E3                 MOV     R0, #1
ARM9:020048D0 08 10 A0 E3                 MOV     R1, #8
ARM9:020048D4 32 FF 2F E1                 BLX     R2
ARM9:020048D8
ARM9:020048D8             loc_20048D8                             ; CODE XREF: _start+A8j
ARM9:020048D8 6E 00 00 EB                 BL      INITi_InitRegion
ARM9:020048DC 13 00 A0 E3                 MOV     R0, #0x13       ; Stack pointer setup- Supervisor mode (SWI) (0x13)
ARM9:020048E0 00 F0 21 E1                 MSR     CPSR_c, R0
ARM9:020048E4 F0 10 9F E5                 LDR     R1, =0x2FE0000  ; start of DTCM
ARM9:020048E8 01 19 81 E2                 ADD     R1, R1, #0x4000 ; end of DTCM
ARM9:020048EC 40 D0 41 E2                 SUB     SP, R1, #0x40   ; start of supervisor mode stack
ARM9:020048F0 40 10 4D E2                 SUB     R1, SP, #0x40   ; start of irq mode stack
ARM9:020048F4 12 00 A0 E3                 MOV     R0, #0x12       ; Stack pointer setup- IRQ mode (0x12)
ARM9:020048F8 00 F0 21 E1                 MSR     CPSR_c, R0
ARM9:020048FC 04 D0 41 E2                 SUB     SP, R1, #4
ARM9:02004900 04 00 1D E3                 TST     SP, #4
ARM9:02004904 04 D0 4D 02                 SUBEQ   SP, SP, #4
ARM9:02004908 D0 00 9F E5                 LDR     R0, =0x800      ; size of irq stack
ARM9:0200490C 00 10 41 E0                 SUB     R1, R1, R0      ; irq stack start -0x800 = start of main stack
ARM9:02004910 1F 00 A0 E3                 MOV     R0, #0x1F       ; Stack pointer setup- System (privileged 'User' mode) (0x1F)
ARM9:02004914 00 F0 2F E1                 MSR     CPSR_cxsf, R0
ARM9:02004918 04 D0 41 E2                 SUB     SP, R1, #4
ARM9:0200491C 04 00 1D E3                 TST     SP, #4          ; word-aligned?
ARM9:02004920 04 D0 4D 12                 SUBNE   SP, SP, #4
ARM9:02004924 00 00 A0 E3                 MOV     R0, #0          ; data
ARM9:02004928 AC 10 9F E5                 LDR     R1, =0x2FE0000  ; destp
ARM9:0200492C 01 29 A0 E3                 MOV     R2, #0x4000     ; size
ARM9:02004930 32 00 00 EB                 BL      INITi_CpuClear32
ARM9:02004934 00 10 A0 E3                 MOV     R1, #0          ; value
ARM9:02004938 A4 00 9F E5                 LDR     R0, =0x5000000  ; dst
ARM9:0200493C 01 2B A0 E3                 MOV     R2, #0x400      ; size
ARM9:02004940 76 01 00 EB                 BL      INITi_Fill32
ARM9:02004944 9C 00 9F E5                 LDR     R0, =0x7000000  ; dst
ARM9:02004948 01 2B A0 E3                 MOV     R2, #0x400      ; size
ARM9:0200494C 73 01 00 EB                 BL      INITi_Fill32
ARM9:02004950 97 00 00 EB                 BL      INITi_DoAutoload
ARM9:02004954 00 10 A0 E3                 MOV     R1, #0          ; value
ARM9:02004958 8C 30 9F E5                 LDR     R3, =_start_ModuleParams
ARM9:0200495C 0C 00 93 E5                 LDR     R0, [R3,#0xC]   ; dst
ARM9:02004960 10 20 93 E5                 LDR     R2, [R3,#0x10]
ARM9:02004964 00 20 52 E0                 SUBS    R2, R2, R0      ; size
ARM9:02004968 6C 01 00 CB                 BLGT    INITi_Fill32
ARM9:0200496C 68 10 9F E5                 LDR     R1, =0x2FE0000  ; Interrupt vector setup
ARM9:02004970 FF 1D 81 E2                 ADD     R1, R1, #0x3FC0 ; supervisor mode
ARM9:02004974 3C 10 81 E2                 ADD     R1, R1, #0x3C   ; location of irq handler static pointer
ARM9:02004978 70 00 9F E5                 LDR     R0, =OS_IrqHandler ; OS IRQ Handler @ 0x1FF8C88
ARM9:0200497C 00 00 81 E5                 STR     R0, [R1]        ; store irq handler location to static pointer
ARM9:02004980 E0 28 02 EB                 BL      nullsub_10
ARM9:02004984 48 01 00 EB                 BL      NitroStartUp
ARM9:02004988 1D 29 02 EB                 BL      __call_static_initializers
ARM9:0200498C 03 01 00 EB                 BL      INITi_CallStaticInitializers
ARM9:02004990 5C 10 9F E5                 LDR     R1, =0x4000006  ; REG_VCOUNT @ #0x4000006
ARM9:02004994
ARM9:02004994             loc_2004994                             ; CODE XREF: _start+19Cj
ARM9:02004994 B0 00 D1 E1                 LDRH    R0, [R1]        ; waste cycles until video frame 2
ARM9:02004998 00 00 50 E3                 CMP     R0, #0
ARM9:0200499C FC FF FF 1A                 BNE     loc_2004994
ARM9:020049A0 50 10 9F E5                 LDR     R1, =(TwlMain+1)
ARM9:020049A4 50 E0 9F E5                 LDR     LR, =0xFFFF0000 ; =0xFFFF0000, BIOS area in RAM map
ARM9:020049A8 11 FF 2F E1                 BX      R1 ; TwlMain
ARM9:020049A8             ; End of function _start
ARM9:020049A8
ARM9:020049A8             ; ---------------------------------------------------------------------------
ARM9:020049AC             ; void *destp
ARM9:020049AC 80 FF FF 02 destp           DCD 0x2FFFF80           ; DATA XREF: _start+10r
ARM9:020049B0             ; u32 dword_20049B0
ARM9:020049B0 68 00 00 00 dword_20049B0   DCD 0x68                ; DATA XREF: _start+14r
ARM9:020049B4             ; void *dword_20049B4
ARM9:020049B4 F0 FF FF 02 dword_20049B4   DCD 0x2FFFFF0           ; DATA XREF: _start+20r
ARM9:020049B8             ; u32 dword_20049B8
ARM9:020049B8 10 00 00 00 dword_20049B8   DCD 0x10                ; DATA XREF: _start+24r
ARM9:020049BC 40 FC FF 02 dword_20049BC   DCD 0x2FFFC40           ; DATA XREF: _start+2Cr
ARM9:020049C0 D4 4F 00 02 off_20049C0     DCD microcode_ShakeHand ; DATA XREF: _start+40r
ARM9:020049C4 00 80 FF 01 dword_20049C4   DCD 0x1FF8000           ; DATA XREF: _start+44r
ARM9:020049C4                                                     ; _start+70r
ARM9:020049C4                                                     ; _start+7Cr
ARM9:020049C4                                                     ; _start+9Cr
ARM9:020049C4                                                     ; _start+B0r
ARM9:020049C8 28 FC FF 02 dword_20049C8   DCD 0x2FFFC28           ; DATA XREF: _start+5Cr
ARM9:020049C8                                                     ; _start+94r
ARM9:020049CC 24 FC FF 02 dword_20049CC   DCD 0x2FFFC24           ; DATA XREF: _start+68r
ARM9:020049D0 26 FC FF 02 dword_20049D0   DCD 0x2FFFC26           ; DATA XREF: _start+6Cr
ARM9:020049D4 94 4F 00 02 off_20049D4     DCD microcode_WaitAgreement
ARM9:020049D4                                                     ; DATA XREF: _start+78r
ARM9:020049D8 FC 4F 00 02 off_20049D8     DCD microcode_SwitchCpuClock
ARM9:020049D8                                                     ; DATA XREF: _start+ACr
ARM9:020049DC             ; void *dword_20049DC
ARM9:020049DC 00 00 FE 02 dword_20049DC   DCD 0x2FE0000           ; DATA XREF: _start+E4r
ARM9:020049DC                                                     ; _start+128r
ARM9:020049DC                                                     ; _start+16Cr
ARM9:020049E0 00 08 00 00 dword_20049E0   DCD 0x800               ; DATA XREF: _start+108r
ARM9:020049E4             ; void *dword_20049E4
ARM9:020049E4 00 00 00 05 dword_20049E4   DCD 0x5000000           ; DATA XREF: _start+138r
ARM9:020049E8             ; void *dword_20049E8
ARM9:020049E8 00 00 00 07 dword_20049E8   DCD 0x7000000           ; DATA XREF: _start+144r
ARM9:020049EC B0 4F 00 02 off_20049EC     DCD _start_ModuleParams ; DATA XREF: _start+158r
ARM9:020049F0 88 8C FF 01 off_20049F0     DCD OS_IrqHandler       ; DATA XREF: _start+178r
ARM9:020049F4 06 00 00 04 dword_20049F4   DCD 0x4000006           ; DATA XREF: _start+190r
ARM9:020049F8 25 51 00 02 off_20049F8     DCD TwlMain+1           ; DATA XREF: _start+1A0r
ARM9:020049FC 00 00 FF FF dword_20049FC   DCD 0xFFFF0000          ; DATA XREF: _start+1A4r

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎