Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /* n2_asm.S: Hypervisor calls for NCS support.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  * Copyright (C) 2009 David S. Miller <davem@davemloft.net>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #include <linux/linkage.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #include <asm/hypervisor.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #include "n2_core.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 	/* o0: queue type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 	 * o1: RA of queue
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 	 * o2: num entries in queue
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 	 * o3: address of queue handle return
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) ENTRY(sun4v_ncs_qconf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 	mov	HV_FAST_NCS_QCONF, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 	ta	HV_FAST_TRAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 	stx	%o1, [%o3]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 	retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	 nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) ENDPROC(sun4v_ncs_qconf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	/* %o0: queue handle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 	 * %o1: address of queue type return
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 	 * %o2: address of queue base address return
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 	 * %o3: address of queue num entries return
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) ENTRY(sun4v_ncs_qinfo)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 	mov	%o1, %g1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 	mov	%o2, %g2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	mov	%o3, %g3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	mov	HV_FAST_NCS_QINFO, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 	ta	HV_FAST_TRAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 	stx	%o1, [%g1]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 	stx	%o2, [%g2]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 	stx	%o3, [%g3]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 	retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	 nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) ENDPROC(sun4v_ncs_qinfo)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	/* %o0: queue handle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	 * %o1: address of head offset return
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) ENTRY(sun4v_ncs_gethead)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 	mov	%o1, %o2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 	mov	HV_FAST_NCS_GETHEAD, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	ta	HV_FAST_TRAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 	stx	%o1, [%o2]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 	retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 	 nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) ENDPROC(sun4v_ncs_gethead)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 	/* %o0: queue handle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	 * %o1: address of tail offset return
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) ENTRY(sun4v_ncs_gettail)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 	mov	%o1, %o2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 	mov	HV_FAST_NCS_GETTAIL, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 	ta	HV_FAST_TRAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) 	stx	%o1, [%o2]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 	retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 	 nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) ENDPROC(sun4v_ncs_gettail)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 	/* %o0: queue handle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) 	 * %o1: new tail offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) ENTRY(sun4v_ncs_settail)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) 	mov	HV_FAST_NCS_SETTAIL, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) 	ta	HV_FAST_TRAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) 	retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) 	 nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) ENDPROC(sun4v_ncs_settail)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) 	/* %o0: queue handle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) 	 * %o1: address of devino return
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) ENTRY(sun4v_ncs_qhandle_to_devino)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) 	mov	%o1, %o2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) 	mov	HV_FAST_NCS_QHANDLE_TO_DEVINO, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) 	ta	HV_FAST_TRAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) 	stx	%o1, [%o2]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) 	retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) 	 nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) ENDPROC(sun4v_ncs_qhandle_to_devino)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) 	/* %o0: queue handle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) 	 * %o1: new head offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) ENTRY(sun4v_ncs_sethead_marker)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) 	mov	HV_FAST_NCS_SETHEAD_MARKER, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) 	ta	HV_FAST_TRAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) 	retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) 	 nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) ENDPROC(sun4v_ncs_sethead_marker)