flashasm.S 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. /*
  2. * flashasm.S: flash magic for LART
  3. *
  4. * Copyright (C) 1999 2000 2001 Jan-Derk bakker (J.D.Bakker@its.tudelft.nl)
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; either version 2 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program; if not, write to the Free Software
  18. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  19. *
  20. */
  21. .text
  22. .globl data_to_flash
  23. .globl data_from_flash
  24. /* Subroutine that takes data in r0 and formats it so it will be in */
  25. /* the correct order for the internal flash */
  26. /* used for LART only */
  27. data_to_flash:
  28. mov r1, #0x0
  29. tst r0, #0x00000001
  30. orrne r1, r1, #0x00001000
  31. tst r0, #0x00000002
  32. orrne r1, r1, #0x00004000
  33. tst r0, #0x00000004
  34. orrne r1, r1, #0x00000800
  35. tst r0, #0x00000008
  36. orrne r1, r1, #0x00000200
  37. tst r0, #0x00000010
  38. orrne r1, r1, #0x00000001
  39. tst r0, #0x00000020
  40. orrne r1, r1, #0x00000004
  41. tst r0, #0x00000040
  42. orrne r1, r1, #0x00000080
  43. tst r0, #0x00000080
  44. orrne r1, r1, #0x00000020
  45. tst r0, #0x00000100
  46. orrne r1, r1, #0x00002000
  47. tst r0, #0x00000200
  48. orrne r1, r1, #0x00008000
  49. tst r0, #0x00000400
  50. orrne r1, r1, #0x00000400
  51. tst r0, #0x00000800
  52. orrne r1, r1, #0x00000100
  53. tst r0, #0x00001000
  54. orrne r1, r1, #0x00000002
  55. tst r0, #0x00002000
  56. orrne r1, r1, #0x00000008
  57. tst r0, #0x00004000
  58. orrne r1, r1, #0x00000040
  59. tst r0, #0x00008000
  60. orrne r1, r1, #0x00000010
  61. tst r0, #0x00010000
  62. orrne r1, r1, #0x00100000
  63. tst r0, #0x00020000
  64. orrne r1, r1, #0x00400000
  65. tst r0, #0x00040000
  66. orrne r1, r1, #0x00080000
  67. tst r0, #0x00080000
  68. orrne r1, r1, #0x00020000
  69. tst r0, #0x00100000
  70. orrne r1, r1, #0x01000000
  71. tst r0, #0x00200000
  72. orrne r1, r1, #0x04000000
  73. tst r0, #0x00400000
  74. orrne r1, r1, #0x80000000
  75. tst r0, #0x00800000
  76. orrne r1, r1, #0x20000000
  77. tst r0, #0x01000000
  78. orrne r1, r1, #0x00200000
  79. tst r0, #0x02000000
  80. orrne r1, r1, #0x00800000
  81. tst r0, #0x04000000
  82. orrne r1, r1, #0x00040000
  83. tst r0, #0x08000000
  84. orrne r1, r1, #0x00010000
  85. tst r0, #0x10000000
  86. orrne r1, r1, #0x02000000
  87. tst r0, #0x20000000
  88. orrne r1, r1, #0x08000000
  89. tst r0, #0x40000000
  90. orrne r1, r1, #0x40000000
  91. tst r0, #0x80000000
  92. orrne r1, r1, #0x10000000
  93. mov r0, r1
  94. mov pc, lr
  95. /* Takes data received from the flash, and unshuffles it. */
  96. data_from_flash:
  97. mov r1, #0x00
  98. tst r0, #0x00000001
  99. orrne r1, r1, #0x00000010
  100. tst r0, #0x00000002
  101. orrne r1, r1, #0x00001000
  102. tst r0, #0x00000004
  103. orrne r1, r1, #0x00000020
  104. tst r0, #0x00000008
  105. orrne r1, r1, #0x00002000
  106. tst r0, #0x00000010
  107. orrne r1, r1, #0x00008000
  108. tst r0, #0x00000020
  109. orrne r1, r1, #0x00000080
  110. tst r0, #0x00000040
  111. orrne r1, r1, #0x00004000
  112. tst r0, #0x00000080
  113. orrne r1, r1, #0x00000040
  114. tst r0, #0x00000100
  115. orrne r1, r1, #0x00000800
  116. tst r0, #0x00000200
  117. orrne r1, r1, #0x00000008
  118. tst r0, #0x00000400
  119. orrne r1, r1, #0x00000400
  120. tst r0, #0x00000800
  121. orrne r1, r1, #0x00000004
  122. tst r0, #0x00001000
  123. orrne r1, r1, #0x00000001
  124. tst r0, #0x00002000
  125. orrne r1, r1, #0x00000100
  126. tst r0, #0x00004000
  127. orrne r1, r1, #0x00000002
  128. tst r0, #0x00008000
  129. orrne r1, r1, #0x00000200
  130. tst r0, #0x00010000
  131. orrne r1, r1, #0x08000000
  132. tst r0, #0x00020000
  133. orrne r1, r1, #0x00080000
  134. tst r0, #0x00040000
  135. orrne r1, r1, #0x04000000
  136. tst r0, #0x00080000
  137. orrne r1, r1, #0x00040000
  138. tst r0, #0x00100000
  139. orrne r1, r1, #0x00010000
  140. tst r0, #0x00200000
  141. orrne r1, r1, #0x01000000
  142. tst r0, #0x00400000
  143. orrne r1, r1, #0x00020000
  144. tst r0, #0x00800000
  145. orrne r1, r1, #0x02000000
  146. tst r0, #0x01000000
  147. orrne r1, r1, #0x00100000
  148. tst r0, #0x02000000
  149. orrne r1, r1, #0x10000000
  150. tst r0, #0x04000000
  151. orrne r1, r1, #0x00200000
  152. tst r0, #0x08000000
  153. orrne r1, r1, #0x20000000
  154. tst r0, #0x10000000
  155. orrne r1, r1, #0x80000000
  156. tst r0, #0x20000000
  157. orrne r1, r1, #0x00800000
  158. tst r0, #0x40000000
  159. orrne r1, r1, #0x40000000
  160. tst r0, #0x80000000
  161. orrne r1, r1, #0x00400000
  162. mov r0, r1
  163. mov pc, lr