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