96 lines
2 KiB
ArmAsm
96 lines
2 KiB
ArmAsm
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||
|
#ifdef CONFIG_KGDB
|
||
|
.globl arch_kgdb_breakpoint
|
||
|
.type arch_kgdb_breakpoint,#function
|
||
|
arch_kgdb_breakpoint:
|
||
|
ta 0x72
|
||
|
retl
|
||
|
nop
|
||
|
.size arch_kgdb_breakpoint,.-arch_kgdb_breakpoint
|
||
|
#endif
|
||
|
|
||
|
.type __do_privact,#function
|
||
|
__do_privact:
|
||
|
mov TLB_SFSR, %g3
|
||
|
stxa %g0, [%g3] ASI_DMMU ! Clear FaultValid bit
|
||
|
membar #Sync
|
||
|
sethi %hi(109f), %g7
|
||
|
ba,pt %xcc, etrap
|
||
|
109: or %g7, %lo(109b), %g7
|
||
|
call do_privact
|
||
|
add %sp, PTREGS_OFF, %o0
|
||
|
ba,a,pt %xcc, rtrap
|
||
|
.size __do_privact,.-__do_privact
|
||
|
|
||
|
.type do_mna,#function
|
||
|
do_mna:
|
||
|
rdpr %tl, %g3
|
||
|
cmp %g3, 1
|
||
|
|
||
|
/* Setup %g4/%g5 now as they are used in the
|
||
|
* winfixup code.
|
||
|
*/
|
||
|
mov TLB_SFSR, %g3
|
||
|
mov DMMU_SFAR, %g4
|
||
|
ldxa [%g4] ASI_DMMU, %g4
|
||
|
ldxa [%g3] ASI_DMMU, %g5
|
||
|
stxa %g0, [%g3] ASI_DMMU ! Clear FaultValid bit
|
||
|
membar #Sync
|
||
|
bgu,pn %icc, winfix_mna
|
||
|
rdpr %tpc, %g3
|
||
|
|
||
|
1: sethi %hi(109f), %g7
|
||
|
ba,pt %xcc, etrap
|
||
|
109: or %g7, %lo(109b), %g7
|
||
|
mov %l4, %o1
|
||
|
mov %l5, %o2
|
||
|
call mem_address_unaligned
|
||
|
add %sp, PTREGS_OFF, %o0
|
||
|
ba,a,pt %xcc, rtrap
|
||
|
.size do_mna,.-do_mna
|
||
|
|
||
|
.type do_lddfmna,#function
|
||
|
do_lddfmna:
|
||
|
sethi %hi(109f), %g7
|
||
|
mov TLB_SFSR, %g4
|
||
|
ldxa [%g4] ASI_DMMU, %g5
|
||
|
stxa %g0, [%g4] ASI_DMMU ! Clear FaultValid bit
|
||
|
membar #Sync
|
||
|
mov DMMU_SFAR, %g4
|
||
|
ldxa [%g4] ASI_DMMU, %g4
|
||
|
ba,pt %xcc, etrap
|
||
|
109: or %g7, %lo(109b), %g7
|
||
|
mov %l4, %o1
|
||
|
mov %l5, %o2
|
||
|
call handle_lddfmna
|
||
|
add %sp, PTREGS_OFF, %o0
|
||
|
ba,a,pt %xcc, rtrap
|
||
|
.size do_lddfmna,.-do_lddfmna
|
||
|
|
||
|
.type do_stdfmna,#function
|
||
|
do_stdfmna:
|
||
|
sethi %hi(109f), %g7
|
||
|
mov TLB_SFSR, %g4
|
||
|
ldxa [%g4] ASI_DMMU, %g5
|
||
|
stxa %g0, [%g4] ASI_DMMU ! Clear FaultValid bit
|
||
|
membar #Sync
|
||
|
mov DMMU_SFAR, %g4
|
||
|
ldxa [%g4] ASI_DMMU, %g4
|
||
|
ba,pt %xcc, etrap
|
||
|
109: or %g7, %lo(109b), %g7
|
||
|
mov %l4, %o1
|
||
|
mov %l5, %o2
|
||
|
call handle_stdfmna
|
||
|
add %sp, PTREGS_OFF, %o0
|
||
|
ba,a,pt %xcc, rtrap
|
||
|
nop
|
||
|
.size do_stdfmna,.-do_stdfmna
|
||
|
|
||
|
.type breakpoint_trap,#function
|
||
|
breakpoint_trap:
|
||
|
call sparc_breakpoint
|
||
|
add %sp, PTREGS_OFF, %o0
|
||
|
ba,pt %xcc, rtrap
|
||
|
nop
|
||
|
.size breakpoint_trap,.-breakpoint_trap
|