head_ram.S 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #include <linux/sys.h>
  3. #include <linux/init.h>
  4. #include <asm/unistd.h>
  5. #include <asm/setup.h>
  6. #include <asm/segment.h>
  7. #include <asm/linkage.h>
  8. #include <asm/asm-offsets.h>
  9. #include <asm/thread_info.h>
  10. #include <asm/errno.h>
  11. #if defined(CONFIG_CPU_H8300H)
  12. .h8300h
  13. #define SYSCR 0xfee012
  14. #define IRAMTOP 0xffff20
  15. #endif
  16. #if defined(CONFIG_CPU_H8S)
  17. .h8300s
  18. #define INTCR 0xffff31
  19. #define IRAMTOP 0xffc000
  20. #endif
  21. __HEAD
  22. .global _start
  23. _start:
  24. mov.l #IRAMTOP,sp
  25. /* .bss clear */
  26. mov.l #_sbss,er5
  27. mov.l #_ebss,er4
  28. sub.l er5,er4
  29. shlr er4
  30. shlr er4
  31. sub.l er2,er2
  32. 1:
  33. mov.l er2,@er5
  34. adds #4,er5
  35. dec.l #1,er4
  36. bne 1b
  37. jsr @h8300_fdt_init
  38. /* linux kernel start */
  39. #if defined(CONFIG_CPU_H8300H)
  40. ldc #0xd0,ccr /* running kernel */
  41. mov.l #SYSCR,er0
  42. bclr #3,@er0
  43. #endif
  44. #if defined(CONFIG_CPU_H8S)
  45. ldc #0x07,exr
  46. bclr #4,@INTCR:8
  47. bset #5,@INTCR:8 /* Interrupt mode 2 */
  48. ldc #0x90,ccr /* running kernel */
  49. #endif
  50. mov.l #init_thread_union,sp
  51. add.l #0x2000,sp
  52. jsr @start_kernel
  53. 1:
  54. bra 1b
  55. .end