ex.S 1020 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /* SPDX-License-Identifier: GPL-2.0
  2. *
  3. * arch/sh/kernel/cpu/sh2a/ex.S
  4. *
  5. * The SH-2A exception vector table
  6. *
  7. * Copyright (C) 2008 Yoshinori Sato
  8. */
  9. #include <linux/linkage.h>
  10. !
  11. ! convert Exception Vector to Exception Number
  12. !
  13. ! exception no 0 to 255
  14. exception_entry0:
  15. no = 0
  16. .rept 256
  17. mov.l r1,@-sp
  18. bra exception_trampoline0
  19. mov #no,r1
  20. no = no + 1
  21. .endr
  22. exception_trampoline0:
  23. mov.l r0,@-sp
  24. mov.l 1f,r0
  25. extu.b r1,r1
  26. jmp @r0
  27. extu.w r1,r1
  28. .align 2
  29. 1: .long exception_handler
  30. ! exception no 256 to 511
  31. exception_entry1:
  32. no = 0
  33. .rept 256
  34. mov.l r1,@-sp
  35. bra exception_trampoline1
  36. mov #no,r1
  37. no = no + 1
  38. .endr
  39. exception_trampoline1:
  40. mov.l r0,@-sp
  41. extu.b r1,r1
  42. movi20 #0x100,r0
  43. add r0,r1
  44. mov.l 1f,r0
  45. jmp @r0
  46. extu.w r1,r1
  47. .align 2
  48. 1: .long exception_handler
  49. !
  50. ! Exception Vector Base
  51. !
  52. .align 2
  53. ENTRY(vbr_base)
  54. vector = 0
  55. .rept 256
  56. .long exception_entry0 + vector * 6
  57. vector = vector + 1
  58. .endr
  59. vector = 0
  60. .rept 256
  61. .long exception_entry1 + vector * 6
  62. vector = vector + 1
  63. .endr