misctrap.S 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifdef CONFIG_KGDB
  3. .globl arch_kgdb_breakpoint
  4. .type arch_kgdb_breakpoint,#function
  5. arch_kgdb_breakpoint:
  6. ta 0x72
  7. retl
  8. nop
  9. .size arch_kgdb_breakpoint,.-arch_kgdb_breakpoint
  10. #endif
  11. .type __do_privact,#function
  12. __do_privact:
  13. mov TLB_SFSR, %g3
  14. stxa %g0, [%g3] ASI_DMMU ! Clear FaultValid bit
  15. membar #Sync
  16. sethi %hi(109f), %g7
  17. ba,pt %xcc, etrap
  18. 109: or %g7, %lo(109b), %g7
  19. call do_privact
  20. add %sp, PTREGS_OFF, %o0
  21. ba,a,pt %xcc, rtrap
  22. .size __do_privact,.-__do_privact
  23. .type do_mna,#function
  24. do_mna:
  25. rdpr %tl, %g3
  26. cmp %g3, 1
  27. /* Setup %g4/%g5 now as they are used in the
  28. * winfixup code.
  29. */
  30. mov TLB_SFSR, %g3
  31. mov DMMU_SFAR, %g4
  32. ldxa [%g4] ASI_DMMU, %g4
  33. ldxa [%g3] ASI_DMMU, %g5
  34. stxa %g0, [%g3] ASI_DMMU ! Clear FaultValid bit
  35. membar #Sync
  36. bgu,pn %icc, winfix_mna
  37. rdpr %tpc, %g3
  38. 1: sethi %hi(109f), %g7
  39. ba,pt %xcc, etrap
  40. 109: or %g7, %lo(109b), %g7
  41. mov %l4, %o1
  42. mov %l5, %o2
  43. call mem_address_unaligned
  44. add %sp, PTREGS_OFF, %o0
  45. ba,a,pt %xcc, rtrap
  46. .size do_mna,.-do_mna
  47. .type do_lddfmna,#function
  48. do_lddfmna:
  49. sethi %hi(109f), %g7
  50. mov TLB_SFSR, %g4
  51. ldxa [%g4] ASI_DMMU, %g5
  52. stxa %g0, [%g4] ASI_DMMU ! Clear FaultValid bit
  53. membar #Sync
  54. mov DMMU_SFAR, %g4
  55. ldxa [%g4] ASI_DMMU, %g4
  56. ba,pt %xcc, etrap
  57. 109: or %g7, %lo(109b), %g7
  58. mov %l4, %o1
  59. mov %l5, %o2
  60. call handle_lddfmna
  61. add %sp, PTREGS_OFF, %o0
  62. ba,a,pt %xcc, rtrap
  63. .size do_lddfmna,.-do_lddfmna
  64. .type do_stdfmna,#function
  65. do_stdfmna:
  66. sethi %hi(109f), %g7
  67. mov TLB_SFSR, %g4
  68. ldxa [%g4] ASI_DMMU, %g5
  69. stxa %g0, [%g4] ASI_DMMU ! Clear FaultValid bit
  70. membar #Sync
  71. mov DMMU_SFAR, %g4
  72. ldxa [%g4] ASI_DMMU, %g4
  73. ba,pt %xcc, etrap
  74. 109: or %g7, %lo(109b), %g7
  75. mov %l4, %o1
  76. mov %l5, %o2
  77. call handle_stdfmna
  78. add %sp, PTREGS_OFF, %o0
  79. ba,a,pt %xcc, rtrap
  80. nop
  81. .size do_stdfmna,.-do_stdfmna
  82. .type breakpoint_trap,#function
  83. breakpoint_trap:
  84. call sparc_breakpoint
  85. add %sp, PTREGS_OFF, %o0
  86. ba,pt %xcc, rtrap
  87. nop
  88. .size breakpoint_trap,.-breakpoint_trap