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
v6.13.7
  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