misctrap.S 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #ifdef CONFIG_KGDB
  2. .globl arch_kgdb_breakpoint
  3. .type arch_kgdb_breakpoint,#function
  4. arch_kgdb_breakpoint:
  5. ta 0x72
  6. retl
  7. nop
  8. .size arch_kgdb_breakpoint,.-arch_kgdb_breakpoint
  9. #endif
  10. .type __do_privact,#function
  11. __do_privact:
  12. mov TLB_SFSR, %g3
  13. stxa %g0, [%g3] ASI_DMMU ! Clear FaultValid bit
  14. membar #Sync
  15. sethi %hi(109f), %g7
  16. ba,pt %xcc, etrap
  17. 109: or %g7, %lo(109b), %g7
  18. call do_privact
  19. add %sp, PTREGS_OFF, %o0
  20. ba,pt %xcc, rtrap
  21. nop
  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,pt %xcc, rtrap
  46. nop
  47. .size do_mna,.-do_mna
  48. .type do_lddfmna,#function
  49. do_lddfmna:
  50. sethi %hi(109f), %g7
  51. mov TLB_SFSR, %g4
  52. ldxa [%g4] ASI_DMMU, %g5
  53. stxa %g0, [%g4] ASI_DMMU ! Clear FaultValid bit
  54. membar #Sync
  55. mov DMMU_SFAR, %g4
  56. ldxa [%g4] ASI_DMMU, %g4
  57. ba,pt %xcc, etrap
  58. 109: or %g7, %lo(109b), %g7
  59. mov %l4, %o1
  60. mov %l5, %o2
  61. call handle_lddfmna
  62. add %sp, PTREGS_OFF, %o0
  63. ba,pt %xcc, rtrap
  64. nop
  65. .size do_lddfmna,.-do_lddfmna
  66. .type do_stdfmna,#function
  67. do_stdfmna:
  68. sethi %hi(109f), %g7
  69. mov TLB_SFSR, %g4
  70. ldxa [%g4] ASI_DMMU, %g5
  71. stxa %g0, [%g4] ASI_DMMU ! Clear FaultValid bit
  72. membar #Sync
  73. mov DMMU_SFAR, %g4
  74. ldxa [%g4] ASI_DMMU, %g4
  75. ba,pt %xcc, etrap
  76. 109: or %g7, %lo(109b), %g7
  77. mov %l4, %o1
  78. mov %l5, %o2
  79. call handle_stdfmna
  80. add %sp, PTREGS_OFF, %o0
  81. ba,pt %xcc, rtrap
  82. nop
  83. .size do_stdfmna,.-do_stdfmna
  84. .type breakpoint_trap,#function
  85. breakpoint_trap:
  86. call sparc_breakpoint
  87. add %sp, PTREGS_OFF, %o0
  88. ba,pt %xcc, rtrap
  89. nop
  90. .size breakpoint_trap,.-breakpoint_trap