lowlevel_init.S 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. /*
  2. * modified from SH-IPL+g (init-r0p751rlc0011rl.S)
  3. * Initial Register Data for R0P751RLC0011RL (SH7751R 240MHz/120MHz/60MHz)
  4. * Coyright (c) 2007,2008 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
  5. */
  6. #include <config.h>
  7. #include <version.h>
  8. #include <asm/processor.h>
  9. .global lowlevel_init
  10. .text
  11. .align 2
  12. lowlevel_init:
  13. mov.l CCR_A, r1
  14. mov.l CCR_D_D, r0
  15. mov.l r0,@r1
  16. mov.l MMUCR_A,r1
  17. mov.l MMUCR_D,r0
  18. mov.w r0,@r1
  19. mov.l BCR1_A,r1
  20. mov.l BCR1_D,r0
  21. mov.l r0,@r1
  22. mov.l BCR2_A,r1
  23. mov.l BCR2_D,r0
  24. mov.w r0,@r1
  25. mov.l BCR3_A,r1
  26. mov.l BCR3_D,r0
  27. mov.w r0,@r1
  28. mov.l BCR4_A,r1
  29. mov.l BCR4_D,r0
  30. mov.l r0,@r1
  31. mov.l WCR1_A,r1
  32. mov.l WCR1_D,r0
  33. mov.l r0,@r1
  34. mov.l WCR2_A,r1
  35. mov.l WCR2_D,r0
  36. mov.l r0,@r1
  37. mov.l WCR3_A,r1
  38. mov.l WCR3_D,r0
  39. mov.l r0,@r1
  40. mov.l PCR_A,r1
  41. mov.l PCR_D,r0
  42. mov.w r0,@r1
  43. mov.l LED_A,r1
  44. mov #0xff,r0
  45. mov.w r0,@r1
  46. mov.l MCR_A,r1
  47. mov.l MCR_D1,r0
  48. mov.l r0,@r1
  49. mov.l RTCNT_A,r1
  50. mov.l RTCNT_D,r0
  51. mov.w r0,@r1
  52. mov.l RTCOR_A,r1
  53. mov.l RTCOR_D,r0
  54. mov.w r0,@r1
  55. mov.l RFCR_A,r1
  56. mov.l RFCR_D,r0
  57. mov.w r0,@r1
  58. mov.l RTCSR_A,r1
  59. mov.l RTCSR_D,r0
  60. mov.w r0,@r1
  61. mov.l SDMR3_A,r1
  62. mov #0x55,r0
  63. mov.b r0,@r1
  64. /* Wait DRAM refresh 30 times */
  65. mov.l RFCR_A,r1
  66. mov #30,r3
  67. 1:
  68. mov.w @r1,r0
  69. extu.w r0,r2
  70. cmp/hi r3,r2
  71. bf 1b
  72. mov.l MCR_A,r1
  73. mov.l MCR_D2,r0
  74. mov.l r0,@r1
  75. mov.l SDMR3_A,r1
  76. mov #0,r0
  77. mov.b r0,@r1
  78. mov.l IRLMASK_A,r1
  79. mov.l IRLMASK_D,r0
  80. mov.l r0,@r1
  81. mov.l CCR_A, r1
  82. mov.l CCR_D_E, r0
  83. mov.l r0, @r1
  84. rts
  85. nop
  86. .align 2
  87. CCR_A: .long CCR /* Cache Control Register */
  88. CCR_D_D: .long 0x0808 /* Flush the cache, disable */
  89. CCR_D_E: .long 0x8000090B
  90. FRQCR_A: .long FRQCR /* FRQCR Address */
  91. FRQCR_D: .long 0x00000e0a /* 03/07/15 modify */
  92. BCR1_A: .long BCR1 /* BCR1 Address */
  93. BCR1_D: .long 0x00180008
  94. BCR2_A: .long BCR2 /* BCR2 Address */
  95. BCR2_D: .long 0xabe8
  96. BCR3_A: .long BCR3 /* BCR3 Address */
  97. BCR3_D: .long 0x0000
  98. BCR4_A: .long BCR4 /* BCR4 Address */
  99. BCR4_D: .long 0x00000010
  100. WCR1_A: .long WCR1 /* WCR1 Address */
  101. WCR1_D: .long 0x33343333
  102. WCR2_A: .long WCR2 /* WCR2 Address */
  103. WCR2_D: .long 0xcff86fbf
  104. WCR3_A: .long WCR3 /* WCR3 Address */
  105. WCR3_D: .long 0x07777707
  106. LED_A: .long 0x04000036 /* LED Address */
  107. RTCNT_A: .long RTCNT /* RTCNT Address */
  108. RTCNT_D: .long 0xA500 /* RTCNT Write Code A5h Data 00h */
  109. RTCOR_A: .long RTCOR /* RTCOR Address */
  110. RTCOR_D: .long 0xA534 /* RTCOR Write Code */
  111. RTCSR_A: .long RTCSR /* RTCSR Address */
  112. RTCSR_D: .long 0xA510 /* RTCSR Write Code */
  113. SDMR3_A: .long 0xFF9400CC /* SDMR3 Address */
  114. SDMR3_D: .long 0x55
  115. MCR_A: .long MCR /* MCR Address */
  116. MCR_D1: .long 0x081901F4 /* MRSET:'0' */
  117. MCR_D2: .long 0x481901F4 /* MRSET:'1' */
  118. RFCR_A: .long RFCR /* RFCR Address */
  119. RFCR_D: .long 0xA400 /* RFCR Write Code A4h Data 00h */
  120. PCR_A: .long PCR /* PCR Address */
  121. PCR_D: .long 0x0000
  122. MMUCR_A: .long MMUCR /* MMUCCR Address */
  123. MMUCR_D: .long 0x00000000 /* MMUCCR Data */
  124. IRLMASK_A: .long 0xA4000000 /* IRLMASK Address */
  125. IRLMASK_D: .long 0x00000000 /* IRLMASK Data */