Commit | Line | Data |
---|---|---|
0a625fd2 DM |
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 | */ | |
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) | |
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 | */ | |
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) | |
40 | ||
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) | |
52 | ||
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) | |
64 | ||
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) | |
74 | ||
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) | |
86 | ||
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) |