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