Guest User

Untitled

a guest
Nov 22nd, 2011
53
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .text:00000160 ; FlashReadCmd(uint32 row)
  2. .text:00000160
  3. .text:00000160 EXPORT FlashReadCmd
  4. .text:00000160 FlashReadCmd ; CODE XREF: FlashReadPage+74p
  5. .text:00000160 ; FlashReadPage+1B4p
  6. .text:00000160 STMFD SP!, {R4-R8,LR}
  7. .text:00000164 MOV R5, R0
  8. .text:00000168 MOV R7, R5
  9. .text:0000016C MOV R0, R5
  10. .text:00000170 BL FlashGetChip
  11. .text:00000174 MOV R1, #0
  12. .text:00000178 LDR R8, =(FlashReadStatusCmd+0x2110) ; FlashSpec
  13. .text:0000017C MOV R3, #0xB
  14. .text:00000180 B check_chip_num
  15. .text:00000184 ; ---------------------------------------------------------------------------
  16. .text:00000184
  17. .text:00000184 loc_184 ; CODE XREF: FlashReadCmd+48j
  18. .text:00000184 SMULBB R2, R1, R3
  19. .text:00000188 ADD R2, R8, R2,LSL#2
  20. .text:0000018C LDR R2, [R2,#0x18] ; FlashSpec[i].TotPhySec
  21. .text:00000190 CMP R2, R5
  22. .text:00000194 BHI loc_1AC ; FlashSpec[i].TotPhySec > row
  23. .text:00000198 SUB R5, R5, R2 ; row -= FlashSpec[i].TotPhySec
  24. .text:0000019C ADD R1, R1, #1
  25. .text:000001A0 AND R1, R1, #0xFF ; cnt++
  26. .text:000001A4
  27. .text:000001A4 check_chip_num ; CODE XREF: FlashReadCmd+20j
  28. .text:000001A4 CMP R1, R0 ; r0 - FlashGetChip()
  29. .text:000001A4 ; r1 - cnt
  30. .text:000001A8 BCC loc_184 ; cnt < chip_num
  31. .text:000001AC
  32. .text:000001AC loc_1AC ; CODE XREF: FlashReadCmd+34j
  33. .text:000001AC SMULBB R0, R0, R3
  34. .text:000001B0 MOV R2, #0x210
  35. .text:000001B4 ADD R4, R8, R0,LSL#2
  36. .text:000001B8 LDRB R0, [R4,#9] ; FlashSpec[chip_num].SecPerPageRaw
  37. .text:000001BC SUB R1, R0, #1 ; SecPerPageRaw - 1
  38. .text:000001C0 AND R1, R1, R5 ; row % SecPerPageRaw
  39. .text:000001C4 MUL R1, R2, R1 ; (row % SecPerPageRaw) * 0x210
  40. .text:000001C8 MOV R6, R1,LSL#16
  41. .text:000001CC MOV R6, R6,LSR#16 ; & 0xffff
  42. .text:000001D0 MOV R1, R5 ; row
  43. .text:000001D4 BL __rt_udiv ; r0 = row / FlashSpec[chip_num].SecPerPageRaw
  44. .text:000001D8 LDRB R1, [R4,#1] ; Mulplane
  45. .text:000001DC CMP R1, #1
  46. .text:000001E0 BLS nand_addr ; Mulplane <= 1
  47. .text:000001E4 LDR R2, =FlashReadStatusCmd
  48. .text:000001E8 LDRH R1, [R8,#0xA] ; FlashSpec[0].SecPerBlock
  49. .text:000001EC LDRH R2, [R2,#2] ; SysAreaBlockRaw
  50. .text:000001F0 MUL R1, R2, R1 ; r1 = FlashSpec[0].SecPerBlock * SysAreaBlockRaw
  51. .text:000001F4 CMP R1, R7
  52. .text:000001F8 BHI nand_addr ; r1 > row
  53. .text:000001FC LDRB R1, [R4,#6] ; FlashSpec[].Vonder???
  54. .text:00000200 CMP R1, #1
  55. .text:00000204 BNE not_Toshiba ; not Toshiba???
  56. .text:00000208 LDRH R2, [R4,#0xE] ; PagePerBlock
  57. .text:0000020C LDR R1, [R4,#0x1C] ; TotBlks
  58. .text:00000210 MUL R1, R2, R1 ; r1 = PagePerBlock * TotBlks (totpages)
  59. .text:00000214 LDRB R2, [R4,#2] ; Interleave
  60. .text:00000218 ADD R3, R2, #1 ; r3 = (Interleave + 1)
  61. .text:0000021C MOV R12, R1,LSR R3 ; r12 = totpages >> (Interleave + 1)
  62. .text:00000220 SUB R3, R12, #1 ; r3 = (totpages >> (interleave + 1)) - 1
  63. .text:00000224 AND R3, R3, R0,LSR#1 ; r3 = (row>>1) % (totpages >> interleaved + 1)
  64. .text:00000228 AND LR, R0, #1 ; LR = row & 1
  65. .text:0000022C MUL R12, LR, R12 ; r12 = PagePerBlock * TotBlks >> (Interleave + 1) * LR
  66. .text:00000230 AND R0, R0, R1,LSR R2 ; r0 = row & (totpages>>Interleave)
  67. .text:00000234 ADD R0, R0, R12
  68. .text:00000238 ADD R0, R0, R3
  69. .text:0000023C B nand_addr
  70. .text:00000240 ; ---------------------------------------------------------------------------
  71. .text:00000240
  72. .text:00000240 not_Toshiba ; CODE XREF: FlashReadCmd+A4j
  73. .text:00000240 LDRH R1, [R4,#0x10] ; PagePerBlockRaw
  74. .text:00000244 SUB R2, R1, #1 ; PagePerBlockRaw - 1
  75. .text:00000248 AND R2, R2, R0,LSR#1 ; r2 = (PagePerBlockRaw - 1)&(SecPerPageRaw >>1)
  76. .text:0000024C LDRH R3, [R4,#0xE] ; PagePerBlock
  77. .text:00000250 SUB R3, R3, #1 ; PagePerBlock - 1
  78. .text:00000254 BIC R3, R0, R3 ; r3 = SecPerPageRaw & ~(PagePerBlock - 1)
  79. .text:00000258 ADD R2, R3, R2 ; r2 = SecPerPageRaw ~(PagePerBlock-1) + (PagePerBlockRaw - 1)&(SecPerPageRaw >>1)
  80. .text:0000025C AND R0, R0, #1 ; r0 = SecPerPageRaw & 1
  81. .text:00000260 MLA R0, R1, R0, R2
  82. .text:00000264
  83. .text:00000264 nand_addr ; CODE XREF: FlashReadCmd+80j
  84. .text:00000264 ; FlashReadCmd+98j ...
  85. .text:00000264 LDRB R2, [R4,#3] ; Large
  86. .text:00000268 MOV R1, #0
  87. .text:0000026C CMP R2, #0
  88. .text:00000270 BEQ small_block
  89. .text:00000274 LDR R2, [R4,#0x20] ; Cmd
  90. .text:00000278 STRB R1, [R2] ; Cmd = 0
  91. .text:0000027C LDR R1, [R4,#0x24] ; Addr
  92. .text:00000280 STRB R6, [R1] ; Addr = r6
  93. .text:00000284 LDR R2, [R4,#0x24]
  94. .text:00000288 MOV R1, R6,LSR#8
  95. .text:0000028C STRB R1, [R2] ; Addr = r6>>8
  96. .text:00000290 LDR R1, [R4,#0x24]
  97. .text:00000294 STRB R0, [R1] ; Addr = r0
  98. .text:00000298 LDR R2, [R4,#0x24]
  99. .text:0000029C MOV R1, R0,LSR#8
  100. .text:000002A0 STRB R1, [R2] ; Addr = r0>>8
  101. .text:000002A4 LDRB R1, [R4,#4] ; Five
  102. .text:000002A8 CMP R1, #0
  103. .text:000002AC BEQ cmd_read
  104. .text:000002B0 LDR R1, [R4,#0x24]
  105. .text:000002B4 MOV R0, R0,LSR#16
  106. .text:000002B8 STRB R0, [R1] ; Addr = r0>>16
  107. .text:000002BC
  108. .text:000002BC cmd_read ; CODE XREF: FlashReadCmd+14Cj
  109. .text:000002BC LDR R1, [R4,#0x20] ; Cmd
  110. .text:000002C0 MOV R0, #0x30 ; '0'
  111. .text:000002C4 STRB R0, [R1] ; Cmd = READ_CMD
  112. .text:000002C8
  113. .text:000002C8 return ; CODE XREF: FlashReadCmd+19Cj
  114. .text:000002C8 LDMFD SP!, {R4-R8,PC}
  115. .text:000002CC ; ---------------------------------------------------------------------------
  116. .text:000002CC
  117. .text:000002CC small_block ; CODE XREF: FlashReadCmd+110j
  118. .text:000002CC LDR R2, [R4,#0x20]
  119. .text:000002D0 STRB R1, [R2] ; Cmd = READ0_CMD
  120. .text:000002D4 LDR R2, [R4,#0x24]
  121. .text:000002D8 STRB R1, [R2] ; Addr = 0
  122. .text:000002DC LDR R1, [R4,#0x24]
  123. .text:000002E0 STRB R0, [R1] ; Addr = r0
  124. .text:000002E4 LDR R2, [R4,#0x24]
  125. .text:000002E8 MOV R1, R0,LSR#8
  126. .text:000002EC STRB R1, [R2] ; Addr = r0>>8
  127. .text:000002F0 LDR R1, [R4,#0x24]
  128. .text:000002F4 MOV R0, R0,LSR#16
  129. .text:000002F8 STRB R0, [R1] ; Addr = r0>>16
  130. .text:000002FC B return
  131. .text:000002FC ; End of function FlashReadCmd
  132. .text:000002FC
  133.  
  134.  
  135.  
RAW Paste Data