xref: /openbmc/linux/drivers/crypto/n2_asm.S (revision b2441318)
1b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */
20a625fd2SDavid S. Miller/* n2_asm.S: Hypervisor calls for NCS support.
30a625fd2SDavid S. Miller *
40a625fd2SDavid S. Miller * Copyright (C) 2009 David S. Miller <davem@davemloft.net>
50a625fd2SDavid S. Miller */
60a625fd2SDavid S. Miller
70a625fd2SDavid S. Miller#include <linux/linkage.h>
80a625fd2SDavid S. Miller#include <asm/hypervisor.h>
90a625fd2SDavid S. Miller#include "n2_core.h"
100a625fd2SDavid S. Miller
110a625fd2SDavid S. Miller	/* o0: queue type
120a625fd2SDavid S. Miller	 * o1: RA of queue
130a625fd2SDavid S. Miller	 * o2: num entries in queue
140a625fd2SDavid S. Miller	 * o3: address of queue handle return
150a625fd2SDavid S. Miller	 */
160a625fd2SDavid S. MillerENTRY(sun4v_ncs_qconf)
170a625fd2SDavid S. Miller	mov	HV_FAST_NCS_QCONF, %o5
180a625fd2SDavid S. Miller	ta	HV_FAST_TRAP
190a625fd2SDavid S. Miller	stx	%o1, [%o3]
200a625fd2SDavid S. Miller	retl
210a625fd2SDavid S. Miller	 nop
220a625fd2SDavid S. MillerENDPROC(sun4v_ncs_qconf)
230a625fd2SDavid S. Miller
240a625fd2SDavid S. Miller	/* %o0: queue handle
250a625fd2SDavid S. Miller	 * %o1: address of queue type return
260a625fd2SDavid S. Miller	 * %o2: address of queue base address return
270a625fd2SDavid S. Miller	 * %o3: address of queue num entries return
280a625fd2SDavid S. Miller	 */
290a625fd2SDavid S. MillerENTRY(sun4v_ncs_qinfo)
300a625fd2SDavid S. Miller	mov	%o1, %g1
310a625fd2SDavid S. Miller	mov	%o2, %g2
320a625fd2SDavid S. Miller	mov	%o3, %g3
330a625fd2SDavid S. Miller	mov	HV_FAST_NCS_QINFO, %o5
340a625fd2SDavid S. Miller	ta	HV_FAST_TRAP
350a625fd2SDavid S. Miller	stx	%o1, [%g1]
360a625fd2SDavid S. Miller	stx	%o2, [%g2]
370a625fd2SDavid S. Miller	stx	%o3, [%g3]
380a625fd2SDavid S. Miller	retl
390a625fd2SDavid S. Miller	 nop
400a625fd2SDavid S. MillerENDPROC(sun4v_ncs_qinfo)
410a625fd2SDavid S. Miller
420a625fd2SDavid S. Miller	/* %o0: queue handle
430a625fd2SDavid S. Miller	 * %o1: address of head offset return
440a625fd2SDavid S. Miller	 */
450a625fd2SDavid S. MillerENTRY(sun4v_ncs_gethead)
460a625fd2SDavid S. Miller	mov	%o1, %o2
470a625fd2SDavid S. Miller	mov	HV_FAST_NCS_GETHEAD, %o5
480a625fd2SDavid S. Miller	ta	HV_FAST_TRAP
490a625fd2SDavid S. Miller	stx	%o1, [%o2]
500a625fd2SDavid S. Miller	retl
510a625fd2SDavid S. Miller	 nop
520a625fd2SDavid S. MillerENDPROC(sun4v_ncs_gethead)
530a625fd2SDavid S. Miller
540a625fd2SDavid S. Miller	/* %o0: queue handle
550a625fd2SDavid S. Miller	 * %o1: address of tail offset return
560a625fd2SDavid S. Miller	 */
570a625fd2SDavid S. MillerENTRY(sun4v_ncs_gettail)
580a625fd2SDavid S. Miller	mov	%o1, %o2
590a625fd2SDavid S. Miller	mov	HV_FAST_NCS_GETTAIL, %o5
600a625fd2SDavid S. Miller	ta	HV_FAST_TRAP
610a625fd2SDavid S. Miller	stx	%o1, [%o2]
620a625fd2SDavid S. Miller	retl
630a625fd2SDavid S. Miller	 nop
640a625fd2SDavid S. MillerENDPROC(sun4v_ncs_gettail)
650a625fd2SDavid S. Miller
660a625fd2SDavid S. Miller	/* %o0: queue handle
670a625fd2SDavid S. Miller	 * %o1: new tail offset
680a625fd2SDavid S. Miller	 */
690a625fd2SDavid S. MillerENTRY(sun4v_ncs_settail)
700a625fd2SDavid S. Miller	mov	HV_FAST_NCS_SETTAIL, %o5
710a625fd2SDavid S. Miller	ta	HV_FAST_TRAP
720a625fd2SDavid S. Miller	retl
730a625fd2SDavid S. Miller	 nop
740a625fd2SDavid S. MillerENDPROC(sun4v_ncs_settail)
750a625fd2SDavid S. Miller
760a625fd2SDavid S. Miller	/* %o0: queue handle
770a625fd2SDavid S. Miller	 * %o1: address of devino return
780a625fd2SDavid S. Miller	 */
790a625fd2SDavid S. MillerENTRY(sun4v_ncs_qhandle_to_devino)
800a625fd2SDavid S. Miller	mov	%o1, %o2
810a625fd2SDavid S. Miller	mov	HV_FAST_NCS_QHANDLE_TO_DEVINO, %o5
820a625fd2SDavid S. Miller	ta	HV_FAST_TRAP
830a625fd2SDavid S. Miller	stx	%o1, [%o2]
840a625fd2SDavid S. Miller	retl
850a625fd2SDavid S. Miller	 nop
860a625fd2SDavid S. MillerENDPROC(sun4v_ncs_qhandle_to_devino)
870a625fd2SDavid S. Miller
880a625fd2SDavid S. Miller	/* %o0: queue handle
890a625fd2SDavid S. Miller	 * %o1: new head offset
900a625fd2SDavid S. Miller	 */
910a625fd2SDavid S. MillerENTRY(sun4v_ncs_sethead_marker)
920a625fd2SDavid S. Miller	mov	HV_FAST_NCS_SETHEAD_MARKER, %o5
930a625fd2SDavid S. Miller	ta	HV_FAST_TRAP
940a625fd2SDavid S. Miller	retl
950a625fd2SDavid S. Miller	 nop
960a625fd2SDavid S. MillerENDPROC(sun4v_ncs_sethead_marker)
97