Bond697

White 2 crt0.s

Aug 7th, 2011
661
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 11.80 KB | None | 0 0
  1. ARM9:02004800             ; =============== S U B R O U T I N E =======================================
  2. ARM9:02004800
  3. ARM9:02004800
  4. ARM9:02004800             ; void __fastcall start()
  5. ARM9:02004800             _start                                  ; DATA XREF: 02FFFE24o
  6. ARM9:02004800 01 C3 A0 E3                 MOV     R12, #0x4000000
  7. ARM9:02004804 08 C2 8C E5                 STR     R12, [R12,#0x208]
  8. ARM9:02004808 81 00 00 EB                 BL      INITi_InitCoprocessor
  9. ARM9:0200480C 00 00 A0 E3                 MOV     R0, #0          ; data
  10. ARM9:02004810 94 11 9F E5                 LDR     R1, =0x2FFFF80  ; destp ; PXI Signal Param for ARM9(start of system-shared area past debug area)
  11. ARM9:02004814 94 21 9F E5                 LDR     R2, =0x68       ; size
  12. ARM9:02004818 78 00 00 EB                 BL      INITi_CpuClear32 ; zero-out 2FFFF80 to 2FFFFE8(Clear out non-debugger portion of system-shared area)
  13. ARM9:0200481C 00 00 A0 E3                 MOV     R0, #0          ; data
  14. ARM9:02004820 8C 11 9F E5                 LDR     R1, =0x2FFFFF0  ; destp ;Start of initialization lock buffer
  15. ARM9:02004824 8C 21 9F E5                 LDR     R2, =0x10       ; size
  16. ARM9:02004828 74 00 00 EB                 BL      INITi_CpuClear32 ; zero-out 2FFFFF0 to 3000000(set initialization lock buffer to 0)
  17. ARM9:0200482C 88 11 9F E5                 LDR     R1, =0x2FFFC40  ; WM boot buffer
  18. ARM9:02004830 B0 20 D1 E1                 LDRH    R2, [R1]        ; get boot type
  19. ARM9:02004834 00 00 52 E3                 CMP     R2, #0          ; is the boot type illegal?
  20. ARM9:02004838 01 20 A0 03                 MOVEQ   R2, #1
  21. ARM9:0200483C B0 20 C1 01                 STREQH  R2, [R1]
  22. ARM9:02004840 78 11 9F E5                 LDR     R1, =microcode_ShakeHand
  23. ARM9:02004844 78 21 9F E5                 LDR     R2, =0x1FF8000  ; ITCM
  24. ARM9:02004848 28 30 82 E2                 ADD     R3, R2, #0x28
  25. ARM9:0200484C
  26. ARM9:0200484C             loc_200484C                             ; CODE XREF: _start+58j
  27. ARM9:0200484C 04 00 91 E4                 LDR     R0, [R1],#4
  28. ARM9:02004850 04 00 82 E4                 STR     R0, [R2],#4
  29. ARM9:02004854 03 00 52 E1                 CMP     R2, R3
  30. ARM9:02004858 FB FF FF BA                 BLT     loc_200484C
  31. ARM9:0200485C 64 01 9F E5                 LDR     R0, =0x2FFFC28
  32. ARM9:02004860 01 10 A0 E3                 MOV     R1, #1
  33. ARM9:02004864 B0 10 C0 E1                 STRH    R1, [R0]
  34. ARM9:02004868 5C 01 9F E5                 LDR     R0, =0x2FFFC24
  35. ARM9:0200486C 5C 11 9F E5                 LDR     R1, =0x2FFFC26
  36. ARM9:02004870 4C 21 9F E5                 LDR     R2, =0x1FF8000  ; =0x1FF8000, start of ITCM(Instruction Tightly Coupled Memory)
  37. ARM9:02004874 32 FF 2F E1                 BLX     R2
  38. ARM9:02004878 54 11 9F E5                 LDR     R1, =microcode_WaitAgreement
  39. ARM9:0200487C 40 21 9F E5                 LDR     R2, =0x1FF8000
  40. ARM9:02004880 1C 30 82 E2                 ADD     R3, R2, #0x1C
  41. ARM9:02004884
  42. ARM9:02004884             loc_2004884                             ; CODE XREF: _start+90j
  43. ARM9:02004884 04 00 91 E4                 LDR     R0, [R1],#4
  44. ARM9:02004888 04 00 82 E4                 STR     R0, [R2],#4
  45. ARM9:0200488C 03 00 52 E1                 CMP     R2, R3
  46. ARM9:02004890 FB FF FF BA                 BLT     loc_2004884
  47. ARM9:02004894 2C 01 9F E5                 LDR     R0, =0x2FFFC28
  48. ARM9:02004898 04 10 A0 E3                 MOV     R1, #4
  49. ARM9:0200489C 20 21 9F E5                 LDR     R2, =0x1FF8000  ; ITCM
  50. ARM9:020048A0 32 FF 2F E1                 BLX     R2
  51. ARM9:020048A4 82 01 00 EB                 BL      INITi_IsRunOnTwl
  52. ARM9:020048A8 0A 00 00 1A                 BNE     loc_20048D8
  53. ARM9:020048AC 24 11 9F E5                 LDR     R1, =microcode_SwitchCpuClock
  54. ARM9:020048B0 0C 21 9F E5                 LDR     R2, =0x1FF8000  ; ITCM
  55. ARM9:020048B4 1C 20 82 E2                 ADD     R2, R2, #0x1C
  56. ARM9:020048B8 34 30 A0 E3                 MOV     R3, #0x34 ; '4'
  57. ARM9:020048BC
  58. ARM9:020048BC             loc_20048BC                             ; CODE XREF: _start+C8j
  59. ARM9:020048BC 04 30 53 E2                 SUBS    R3, R3, #4
  60. ARM9:020048C0 03 00 91 E7                 LDR     R0, [R1,R3]
  61. ARM9:020048C4 03 00 82 E7                 STR     R0, [R2,R3]
  62. ARM9:020048C8 FB FF FF CA                 BGT     loc_20048BC
  63. ARM9:020048CC 01 00 A0 E3                 MOV     R0, #1
  64. ARM9:020048D0 08 10 A0 E3                 MOV     R1, #8
  65. ARM9:020048D4 32 FF 2F E1                 BLX     R2
  66. ARM9:020048D8
  67. ARM9:020048D8             loc_20048D8                             ; CODE XREF: _start+A8j
  68. ARM9:020048D8 6E 00 00 EB                 BL      INITi_InitRegion
  69. ARM9:020048DC 13 00 A0 E3                 MOV     R0, #0x13       ; Stack pointer setup- Supervisor mode (SWI) (0x13)
  70. ARM9:020048E0 00 F0 21 E1                 MSR     CPSR_c, R0
  71. ARM9:020048E4 F0 10 9F E5                 LDR     R1, =0x2FE0000  ; start of DTCM
  72. ARM9:020048E8 01 19 81 E2                 ADD     R1, R1, #0x4000 ; end of DTCM
  73. ARM9:020048EC 40 D0 41 E2                 SUB     SP, R1, #0x40   ; start of supervisor mode stack
  74. ARM9:020048F0 40 10 4D E2                 SUB     R1, SP, #0x40   ; start of irq mode stack
  75. ARM9:020048F4 12 00 A0 E3                 MOV     R0, #0x12       ; Stack pointer setup- IRQ mode (0x12)
  76. ARM9:020048F8 00 F0 21 E1                 MSR     CPSR_c, R0
  77. ARM9:020048FC 04 D0 41 E2                 SUB     SP, R1, #4
  78. ARM9:02004900 04 00 1D E3                 TST     SP, #4
  79. ARM9:02004904 04 D0 4D 02                 SUBEQ   SP, SP, #4
  80. ARM9:02004908 D0 00 9F E5                 LDR     R0, =0x800      ; size of irq stack
  81. ARM9:0200490C 00 10 41 E0                 SUB     R1, R1, R0      ; irq stack start -0x800 = start of main stack
  82. ARM9:02004910 1F 00 A0 E3                 MOV     R0, #0x1F       ; Stack pointer setup- System (privileged 'User' mode) (0x1F)
  83. ARM9:02004914 00 F0 2F E1                 MSR     CPSR_cxsf, R0
  84. ARM9:02004918 04 D0 41 E2                 SUB     SP, R1, #4
  85. ARM9:0200491C 04 00 1D E3                 TST     SP, #4          ; word-aligned?
  86. ARM9:02004920 04 D0 4D 12                 SUBNE   SP, SP, #4
  87. ARM9:02004924 00 00 A0 E3                 MOV     R0, #0          ; data
  88. ARM9:02004928 AC 10 9F E5                 LDR     R1, =0x2FE0000  ; destp
  89. ARM9:0200492C 01 29 A0 E3                 MOV     R2, #0x4000     ; size
  90. ARM9:02004930 32 00 00 EB                 BL      INITi_CpuClear32
  91. ARM9:02004934 00 10 A0 E3                 MOV     R1, #0          ; value
  92. ARM9:02004938 A4 00 9F E5                 LDR     R0, =0x5000000  ; dst
  93. ARM9:0200493C 01 2B A0 E3                 MOV     R2, #0x400      ; size
  94. ARM9:02004940 76 01 00 EB                 BL      INITi_Fill32
  95. ARM9:02004944 9C 00 9F E5                 LDR     R0, =0x7000000  ; dst
  96. ARM9:02004948 01 2B A0 E3                 MOV     R2, #0x400      ; size
  97. ARM9:0200494C 73 01 00 EB                 BL      INITi_Fill32
  98. ARM9:02004950 97 00 00 EB                 BL      INITi_DoAutoload
  99. ARM9:02004954 00 10 A0 E3                 MOV     R1, #0          ; value
  100. ARM9:02004958 8C 30 9F E5                 LDR     R3, =_start_ModuleParams
  101. ARM9:0200495C 0C 00 93 E5                 LDR     R0, [R3,#0xC]   ; dst
  102. ARM9:02004960 10 20 93 E5                 LDR     R2, [R3,#0x10]
  103. ARM9:02004964 00 20 52 E0                 SUBS    R2, R2, R0      ; size
  104. ARM9:02004968 6C 01 00 CB                 BLGT    INITi_Fill32
  105. ARM9:0200496C 68 10 9F E5                 LDR     R1, =0x2FE0000  ; Interrupt vector setup
  106. ARM9:02004970 FF 1D 81 E2                 ADD     R1, R1, #0x3FC0 ; supervisor mode
  107. ARM9:02004974 3C 10 81 E2                 ADD     R1, R1, #0x3C   ; location of irq handler static pointer
  108. ARM9:02004978 70 00 9F E5                 LDR     R0, =OS_IrqHandler ; OS IRQ Handler @ 0x1FF8C88
  109. ARM9:0200497C 00 00 81 E5                 STR     R0, [R1]        ; store irq handler location to static pointer
  110. ARM9:02004980 E0 28 02 EB                 BL      nullsub_10
  111. ARM9:02004984 48 01 00 EB                 BL      NitroStartUp
  112. ARM9:02004988 1D 29 02 EB                 BL      __call_static_initializers
  113. ARM9:0200498C 03 01 00 EB                 BL      INITi_CallStaticInitializers
  114. ARM9:02004990 5C 10 9F E5                 LDR     R1, =0x4000006  ; REG_VCOUNT @ #0x4000006
  115. ARM9:02004994
  116. ARM9:02004994             loc_2004994                             ; CODE XREF: _start+19Cj
  117. ARM9:02004994 B0 00 D1 E1                 LDRH    R0, [R1]        ; waste cycles until video frame 2
  118. ARM9:02004998 00 00 50 E3                 CMP     R0, #0
  119. ARM9:0200499C FC FF FF 1A                 BNE     loc_2004994
  120. ARM9:020049A0 50 10 9F E5                 LDR     R1, =(TwlMain+1)
  121. ARM9:020049A4 50 E0 9F E5                 LDR     LR, =0xFFFF0000 ; =0xFFFF0000, BIOS area in RAM map
  122. ARM9:020049A8 11 FF 2F E1                 BX      R1 ; TwlMain
  123. ARM9:020049A8             ; End of function _start
  124. ARM9:020049A8
  125. ARM9:020049A8             ; ---------------------------------------------------------------------------
  126. ARM9:020049AC             ; void *destp
  127. ARM9:020049AC 80 FF FF 02 destp           DCD 0x2FFFF80           ; DATA XREF: _start+10r
  128. ARM9:020049B0             ; u32 dword_20049B0
  129. ARM9:020049B0 68 00 00 00 dword_20049B0   DCD 0x68                ; DATA XREF: _start+14r
  130. ARM9:020049B4             ; void *dword_20049B4
  131. ARM9:020049B4 F0 FF FF 02 dword_20049B4   DCD 0x2FFFFF0           ; DATA XREF: _start+20r
  132. ARM9:020049B8             ; u32 dword_20049B8
  133. ARM9:020049B8 10 00 00 00 dword_20049B8   DCD 0x10                ; DATA XREF: _start+24r
  134. ARM9:020049BC 40 FC FF 02 dword_20049BC   DCD 0x2FFFC40           ; DATA XREF: _start+2Cr
  135. ARM9:020049C0 D4 4F 00 02 off_20049C0     DCD microcode_ShakeHand ; DATA XREF: _start+40r
  136. ARM9:020049C4 00 80 FF 01 dword_20049C4   DCD 0x1FF8000           ; DATA XREF: _start+44r
  137. ARM9:020049C4                                                     ; _start+70r
  138. ARM9:020049C4                                                     ; _start+7Cr
  139. ARM9:020049C4                                                     ; _start+9Cr
  140. ARM9:020049C4                                                     ; _start+B0r
  141. ARM9:020049C8 28 FC FF 02 dword_20049C8   DCD 0x2FFFC28           ; DATA XREF: _start+5Cr
  142. ARM9:020049C8                                                     ; _start+94r
  143. ARM9:020049CC 24 FC FF 02 dword_20049CC   DCD 0x2FFFC24           ; DATA XREF: _start+68r
  144. ARM9:020049D0 26 FC FF 02 dword_20049D0   DCD 0x2FFFC26           ; DATA XREF: _start+6Cr
  145. ARM9:020049D4 94 4F 00 02 off_20049D4     DCD microcode_WaitAgreement
  146. ARM9:020049D4                                                     ; DATA XREF: _start+78r
  147. ARM9:020049D8 FC 4F 00 02 off_20049D8     DCD microcode_SwitchCpuClock
  148. ARM9:020049D8                                                     ; DATA XREF: _start+ACr
  149. ARM9:020049DC             ; void *dword_20049DC
  150. ARM9:020049DC 00 00 FE 02 dword_20049DC   DCD 0x2FE0000           ; DATA XREF: _start+E4r
  151. ARM9:020049DC                                                     ; _start+128r
  152. ARM9:020049DC                                                     ; _start+16Cr
  153. ARM9:020049E0 00 08 00 00 dword_20049E0   DCD 0x800               ; DATA XREF: _start+108r
  154. ARM9:020049E4             ; void *dword_20049E4
  155. ARM9:020049E4 00 00 00 05 dword_20049E4   DCD 0x5000000           ; DATA XREF: _start+138r
  156. ARM9:020049E8             ; void *dword_20049E8
  157. ARM9:020049E8 00 00 00 07 dword_20049E8   DCD 0x7000000           ; DATA XREF: _start+144r
  158. ARM9:020049EC B0 4F 00 02 off_20049EC     DCD _start_ModuleParams ; DATA XREF: _start+158r
  159. ARM9:020049F0 88 8C FF 01 off_20049F0     DCD OS_IrqHandler       ; DATA XREF: _start+178r
  160. ARM9:020049F4 06 00 00 04 dword_20049F4   DCD 0x4000006           ; DATA XREF: _start+190r
  161. ARM9:020049F8 25 51 00 02 off_20049F8     DCD TwlMain+1           ; DATA XREF: _start+1A0r
  162. ARM9:020049FC 00 00 FF FF dword_20049FC   DCD 0xFFFF0000          ; DATA XREF: _start+1A4r
Advertisement