Linux Audio

Check our new training course

Loading...
v6.2
  1/* SPDX-License-Identifier: GPL-2.0 */
  2#include <asm/thread_info.h>
  3#include <asm/trap_block.h>
  4#include <asm/spitfire.h>
  5#include <asm/ptrace.h>
  6#include <asm/head.h>
  7
  8		.text
  9		.align	8
 10		.globl	user_rtt_fill_fixup_common
 11user_rtt_fill_fixup_common:
 12		rdpr	%cwp, %g1
 13		add	%g1, 1, %g1
 14		wrpr	%g1, 0x0, %cwp
 15
 16		rdpr	%wstate, %g2
 17		sll	%g2, 3, %g2
 18		wrpr	%g2, 0x0, %wstate
 19
 20		/* We know %canrestore and %otherwin are both zero.  */
 21
 22		sethi	%hi(sparc64_kern_pri_context), %g2
 23		ldx	[%g2 + %lo(sparc64_kern_pri_context)], %g2
 24		mov	PRIMARY_CONTEXT, %g1
 25
 26661:		stxa	%g2, [%g1] ASI_DMMU
 27		.section .sun4v_1insn_patch, "ax"
 28		.word	661b
 29		stxa	%g2, [%g1] ASI_MMU
 30		.previous
 31
 32		sethi	%hi(KERNBASE), %g1
 33		flush	%g1
 34
 35		mov	%g4, %l4
 36		mov	%g5, %l5
 37		brnz,pn	%g3, 1f
 38		 mov	%g3, %l3
 39
 40		or	%g4, FAULT_CODE_WINFIXUP, %g4
 41		stb	%g4, [%g6 + TI_FAULT_CODE]
 42		stx	%g5, [%g6 + TI_FAULT_ADDR]
 431:
 44		mov	%g6, %l1
 45		wrpr	%g0, 0x0, %tl
 46
 47661:		nop
 48		.section		.sun4v_1insn_patch, "ax"
 49		.word			661b
 50		SET_GL(0)
 51		.previous
 52
 53661:		wrpr	%g0, RTRAP_PSTATE, %pstate
 54		.section		.sun_m7_1insn_patch, "ax"
 55		.word			661b
 56		/* Re-enable PSTATE.mcde to maintain ADI security */
 57		wrpr	%g0, RTRAP_PSTATE|PSTATE_MCDE, %pstate
 58		.previous
 59
 60		mov	%l1, %g6
 61		ldx	[%g6 + TI_TASK], %g4
 62		LOAD_PER_CPU_BASE(%g5, %g6, %g1, %g2, %g3)
 63
 64		brnz,pn	%l3, 1f
 65		 nop
 66
 67		call	do_sparc64_fault
 68		 add	%sp, PTREGS_OFF, %o0
 69		ba,pt	%xcc, rtrap
 70		 nop
 71
 721:		cmp	%g3, 2
 73		bne,pn	%xcc, 2f
 74		 nop
 75
 76		sethi	%hi(tlb_type), %g1
 77		lduw	[%g1 + %lo(tlb_type)], %g1
 78		cmp	%g1, 3
 79		bne,pt	%icc, 1f
 80		 add	%sp, PTREGS_OFF, %o0
 81		mov	%l4, %o2
 82		call	sun4v_do_mna
 83		 mov	%l5, %o1
 84		ba,a,pt	%xcc, rtrap
 851:		mov	%l4, %o1
 86		mov	%l5, %o2
 87		call	mem_address_unaligned
 88		 nop
 89		ba,a,pt	%xcc, rtrap
 90
 912:		sethi	%hi(tlb_type), %g1
 92		mov	%l4, %o1
 93		lduw	[%g1 + %lo(tlb_type)], %g1
 94		mov	%l5, %o2
 95		cmp	%g1, 3
 96		bne,pt	%icc, 1f
 97		 add	%sp, PTREGS_OFF, %o0
 98		call	sun4v_data_access_exception
 99		 nop
100		ba,a,pt	%xcc, rtrap
101		 nop
102
1031:		call	spitfire_data_access_exception
104		 nop
105		ba,a,pt	%xcc, rtrap
v4.10.11
 
 1#include <asm/thread_info.h>
 2#include <asm/trap_block.h>
 3#include <asm/spitfire.h>
 4#include <asm/ptrace.h>
 5#include <asm/head.h>
 6
 7		.text
 8		.align	8
 9		.globl	user_rtt_fill_fixup_common
10user_rtt_fill_fixup_common:
11		rdpr	%cwp, %g1
12		add	%g1, 1, %g1
13		wrpr	%g1, 0x0, %cwp
14
15		rdpr	%wstate, %g2
16		sll	%g2, 3, %g2
17		wrpr	%g2, 0x0, %wstate
18
19		/* We know %canrestore and %otherwin are both zero.  */
20
21		sethi	%hi(sparc64_kern_pri_context), %g2
22		ldx	[%g2 + %lo(sparc64_kern_pri_context)], %g2
23		mov	PRIMARY_CONTEXT, %g1
24
25661:		stxa	%g2, [%g1] ASI_DMMU
26		.section .sun4v_1insn_patch, "ax"
27		.word	661b
28		stxa	%g2, [%g1] ASI_MMU
29		.previous
30
31		sethi	%hi(KERNBASE), %g1
32		flush	%g1
33
34		mov	%g4, %l4
35		mov	%g5, %l5
36		brnz,pn	%g3, 1f
37		 mov	%g3, %l3
38
39		or	%g4, FAULT_CODE_WINFIXUP, %g4
40		stb	%g4, [%g6 + TI_FAULT_CODE]
41		stx	%g5, [%g6 + TI_FAULT_ADDR]
421:
43		mov	%g6, %l1
44		wrpr	%g0, 0x0, %tl
45
46661:		nop
47		.section		.sun4v_1insn_patch, "ax"
48		.word			661b
49		SET_GL(0)
50		.previous
51
52		wrpr	%g0, RTRAP_PSTATE, %pstate
 
 
 
 
 
53
54		mov	%l1, %g6
55		ldx	[%g6 + TI_TASK], %g4
56		LOAD_PER_CPU_BASE(%g5, %g6, %g1, %g2, %g3)
57
58		brnz,pn	%l3, 1f
59		 nop
60
61		call	do_sparc64_fault
62		 add	%sp, PTREGS_OFF, %o0
63		ba,pt	%xcc, rtrap
64		 nop
65
661:		cmp	%g3, 2
67		bne,pn	%xcc, 2f
68		 nop
69
70		sethi	%hi(tlb_type), %g1
71		lduw	[%g1 + %lo(tlb_type)], %g1
72		cmp	%g1, 3
73		bne,pt	%icc, 1f
74		 add	%sp, PTREGS_OFF, %o0
75		mov	%l4, %o2
76		call	sun4v_do_mna
77		 mov	%l5, %o1
78		ba,a,pt	%xcc, rtrap
791:		mov	%l4, %o1
80		mov	%l5, %o2
81		call	mem_address_unaligned
82		 nop
83		ba,a,pt	%xcc, rtrap
84
852:		sethi	%hi(tlb_type), %g1
86		mov	%l4, %o1
87		lduw	[%g1 + %lo(tlb_type)], %g1
88		mov	%l5, %o2
89		cmp	%g1, 3
90		bne,pt	%icc, 1f
91		 add	%sp, PTREGS_OFF, %o0
92		call	sun4v_data_access_exception
93		 nop
94		ba,a,pt	%xcc, rtrap
 
95
961:		call	spitfire_data_access_exception
97		 nop
98		ba,a,pt	%xcc, rtrap