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