Linux 3.16.37
[linux/fpc-iii.git] / drivers / crypto / n2_asm.S
blobf7c793745a1e279075f2ef6f5d4b583a8a58db39
1 /* n2_asm.S: Hypervisor calls for NCS support.
2  *
3  * Copyright (C) 2009 David S. Miller <davem@davemloft.net>
4  */
6 #include <linux/linkage.h>
7 #include <asm/hypervisor.h>
8 #include "n2_core.h"
10         /* o0: queue type
11          * o1: RA of queue
12          * o2: num entries in queue
13          * o3: address of queue handle return
14          */
15 ENTRY(sun4v_ncs_qconf)
16         mov     HV_FAST_NCS_QCONF, %o5
17         ta      HV_FAST_TRAP
18         stx     %o1, [%o3]
19         retl
20          nop
21 ENDPROC(sun4v_ncs_qconf)
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          */
28 ENTRY(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
39 ENDPROC(sun4v_ncs_qinfo)
41         /* %o0: queue handle
42          * %o1: address of head offset return
43          */
44 ENTRY(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
51 ENDPROC(sun4v_ncs_gethead)
53         /* %o0: queue handle
54          * %o1: address of tail offset return
55          */
56 ENTRY(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
63 ENDPROC(sun4v_ncs_gettail)
65         /* %o0: queue handle
66          * %o1: new tail offset
67          */
68 ENTRY(sun4v_ncs_settail)
69         mov     HV_FAST_NCS_SETTAIL, %o5
70         ta      HV_FAST_TRAP
71         retl
72          nop
73 ENDPROC(sun4v_ncs_settail)
75         /* %o0: queue handle
76          * %o1: address of devino return
77          */
78 ENTRY(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
85 ENDPROC(sun4v_ncs_qhandle_to_devino)
87         /* %o0: queue handle
88          * %o1: new head offset
89          */
90 ENTRY(sun4v_ncs_sethead_marker)
91         mov     HV_FAST_NCS_SETHEAD_MARKER, %o5
92         ta      HV_FAST_TRAP
93         retl
94          nop
95 ENDPROC(sun4v_ncs_sethead_marker)