Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | /* |
2 | * ========== Copyright Header Begin ========================================== | |
3 | * | |
4 | * Hypervisor Software File: hcall_groups.s | |
5 | * | |
6 | * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. | |
7 | * | |
8 | * - Do no alter or remove copyright notices | |
9 | * | |
10 | * - Redistribution and use of this software in source and binary forms, with | |
11 | * or without modification, are permitted provided that the following | |
12 | * conditions are met: | |
13 | * | |
14 | * - Redistribution of source code must retain the above copyright notice, | |
15 | * this list of conditions and the following disclaimer. | |
16 | * | |
17 | * - Redistribution in binary form must reproduce the above copyright notice, | |
18 | * this list of conditions and the following disclaimer in the | |
19 | * documentation and/or other materials provided with the distribution. | |
20 | * | |
21 | * Neither the name of Sun Microsystems, Inc. or the names of contributors | |
22 | * may be used to endorse or promote products derived from this software | |
23 | * without specific prior written permission. | |
24 | * | |
25 | * This software is provided "AS IS," without a warranty of any kind. | |
26 | * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, | |
27 | * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A | |
28 | * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN | |
29 | * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR | |
30 | * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR | |
31 | * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN | |
32 | * OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR | |
33 | * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE | |
34 | * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, | |
35 | * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF | |
36 | * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. | |
37 | * | |
38 | * You acknowledge that this software is not designed, licensed or | |
39 | * intended for use in the design, construction, operation or maintenance of | |
40 | * any nuclear facility. | |
41 | * | |
42 | * ========== Copyright Header End ============================================ | |
43 | */ | |
44 | /* | |
45 | * Copyright 2007 Sun Microsystems, Inc. All rights reserved. | |
46 | * Use is subject to license terms. | |
47 | */ | |
48 | ||
49 | .ident "@(#)hcall_groups.s 1.98 07/05/03 SMI" | |
50 | ||
51 | #include <sys/asm_linkage.h> | |
52 | #include <sys/htypes.h> | |
53 | #include <hypervisor.h> | |
54 | #include <sparcv9/misc.h> | |
55 | #include <debug.h> | |
56 | #include <hcall.h> | |
57 | ||
58 | #ifdef CONFIG_BRINGUP | |
59 | #define VDEV_GENINTR 0xff | |
60 | #endif | |
61 | ||
62 | /* | |
63 | * If you add a group to this table, be sure to update | |
64 | * NUM_API_GROUPS in guest.h. You have been warned... | |
65 | * | |
66 | * One important caveat: don't put any data between GROUP_END | |
67 | * and GROUP_BEGIN entries, or you'll break the table. | |
68 | */ | |
69 | ||
70 | DATA_GLOBAL(hcall_api_group_map) | |
71 | ||
72 | /* | |
73 | * Core API group. Basics needed for a sane guest. | |
74 | */ | |
75 | GROUP_BEGIN(core, API_GROUP_CORE) ! API group index #1 | |
76 | GROUP_MAJOR_ENTRY(core, 1, 1) | |
77 | GROUP_MINOR_ENTRY(core_1_0) | |
78 | GROUP_MINOR_ENTRY(core_1_1) | |
79 | GROUP_MINOR_END(core_1) | |
80 | GROUP_MAJOR_END(core) | |
81 | ||
82 | GROUP_HCALL_TABLE(core_1_0) | |
83 | GROUP_HCALL_ENTRY(MACH_EXIT, hcall_mach_exit) | |
84 | GROUP_HCALL_ENTRY(MACH_DESC, hcall_mach_desc) | |
85 | GROUP_HCALL_ENTRY(MACH_SIR, hcall_mach_sir) | |
86 | GROUP_HCALL_ENTRY(CPU_START, hcall_cpu_start) | |
87 | GROUP_HCALL_ENTRY(CPU_YIELD, hcall_cpu_yield) | |
88 | GROUP_HCALL_ENTRY(CPU_QCONF, hcall_cpu_qconf) | |
89 | GROUP_HCALL_ENTRY(CPU_QINFO, hcall_cpu_qinfo) | |
90 | GROUP_HCALL_ENTRY(CPU_MYID, hcall_cpu_myid) | |
91 | GROUP_HCALL_ENTRY(CPU_GET_STATE, hcall_cpu_get_state) | |
92 | GROUP_HCALL_ENTRY(CPU_SET_RTBA, hcall_cpu_set_rtba) | |
93 | GROUP_HCALL_ENTRY(CPU_GET_RTBA, hcall_cpu_get_rtba) | |
94 | GROUP_HCALL_ENTRY(MMU_TSB_CTX0, hcall_mmu_tsb_ctx0) | |
95 | GROUP_HCALL_ENTRY(MMU_TSB_CTXNON0, hcall_mmu_tsb_ctxnon0) | |
96 | GROUP_HCALL_ENTRY(MMU_DEMAP_PAGE, hcall_mmu_demap_page) | |
97 | GROUP_HCALL_ENTRY(MMU_DEMAP_CTX, hcall_mmu_demap_ctx) | |
98 | GROUP_HCALL_ENTRY(MMU_DEMAP_ALL, hcall_mmu_demap_all) | |
99 | GROUP_HCALL_ENTRY(MMU_MAP_PERM_ADDR, hcall_mmu_map_perm_addr) | |
100 | GROUP_HCALL_ENTRY(MMU_FAULT_AREA_CONF, hcall_mmu_fault_area_conf) | |
101 | GROUP_HCALL_ENTRY(MMU_ENABLE, hcall_mmu_enable) | |
102 | GROUP_HCALL_ENTRY(MMU_UNMAP_PERM_ADDR, hcall_mmu_unmap_perm_addr) | |
103 | GROUP_HCALL_ENTRY(MMU_TSB_CTX0_INFO, hcall_mmu_tsb_ctx0_info) | |
104 | GROUP_HCALL_ENTRY(MMU_TSB_CTXNON0_INFO, hcall_mmu_tsb_ctxnon0_info) | |
105 | GROUP_HCALL_ENTRY(MMU_FAULT_AREA_INFO, hcall_mmu_fault_area_info) | |
106 | GROUP_HCALL_ENTRY(MEM_SCRUB, hcall_mem_scrub) | |
107 | GROUP_HCALL_ENTRY(MEM_SYNC, hcall_mem_sync) | |
108 | GROUP_HCALL_ENTRY(CPU_MONDO_SEND, hcall_cpu_mondo_send) | |
109 | GROUP_HCALL_ENTRY(TOD_GET, hcall_tod_get) | |
110 | GROUP_HCALL_ENTRY(TOD_SET, hcall_tod_set) | |
111 | GROUP_HCALL_ENTRY(CONS_GETCHAR, hcall_cons_getchar) | |
112 | GROUP_HCALL_ENTRY(CONS_PUTCHAR, hcall_cons_putchar) | |
113 | GROUP_HCALL_ENTRY(TTRACE_BUF_CONF, hcall_ttrace_buf_conf) | |
114 | GROUP_HCALL_ENTRY(TTRACE_BUF_INFO, hcall_ttrace_buf_info) | |
115 | GROUP_HCALL_ENTRY(TTRACE_ENABLE, hcall_ttrace_enable) | |
116 | GROUP_HCALL_ENTRY(TTRACE_FREEZE, hcall_ttrace_freeze) | |
117 | GROUP_HCALL_ENTRY(DUMP_BUF_UPDATE, hcall_dump_buf_update) | |
118 | GROUP_HCALL_ENTRY(DUMP_BUF_INFO, hcall_dump_buf_info) | |
119 | GROUP_HCALL_ENTRY(MMU_MAP_ADDR_IDX, hcall_mmu_map_addr) | |
120 | GROUP_HCALL_ENTRY(MMU_UNMAP_ADDR_IDX, hcall_mmu_unmap_addr) | |
121 | GROUP_HCALL_ENTRY(TTRACE_ADDENTRY_IDX, hcall_ttrace_addentry) | |
122 | #ifdef CONFIG_DISK | |
123 | GROUP_HCALL_ENTRY(DISK_READ, hcall_disk_read) | |
124 | GROUP_HCALL_ENTRY(DISK_WRITE, hcall_disk_write) | |
125 | #endif | |
126 | #ifdef T1_FPGA_SNET | |
127 | GROUP_HCALL_ENTRY(SNET_READ, hcall_snet_read) | |
128 | GROUP_HCALL_ENTRY(SNET_WRITE, hcall_snet_write) | |
129 | #endif | |
130 | #ifdef CONFIG_BRINGUP | |
131 | GROUP_HCALL_ENTRY(VDEV_GENINTR, hcall_vdev_genintr) | |
132 | #endif | |
133 | #if 0 /* { FIXME: perm map info for debug currently disabled */ | |
134 | #ifdef DEBUG | |
135 | GROUP_HCALL_ENTRY(MMU_PERM_ADDR_INFO, hcall_mmu_perm_addr_info) | |
136 | #endif | |
137 | #endif /* } */ | |
138 | GROUP_HCALL_TABLE(core_1_1) | |
139 | GROUP_HCALL_ENTRY(MACH_SET_WATCHDOG, hcall_set_watchdog) | |
140 | GROUP_HCALL_ENTRY(CPU_STOP, hcall_cpu_stop) | |
141 | GROUP_HCALL_ENTRY(CONS_READ, hcall_cons_read) | |
142 | GROUP_HCALL_ENTRY(CONS_WRITE, hcall_cons_write) | |
143 | GROUP_HCALL_END(core_1) | |
144 | GROUP_END(core) | |
145 | ||
146 | /* | |
147 | * Interrupt API group. For guests interested in using | |
148 | * interrupts. | |
149 | */ | |
150 | GROUP_BEGIN(intr, API_GROUP_INTR) ! API group index #2 | |
151 | GROUP_MAJOR_ENTRY(intr, 1, 0) | |
152 | GROUP_MINOR_ENTRY(intr_1_0) | |
153 | GROUP_MINOR_END(intr_1) | |
154 | GROUP_MAJOR_ENTRY(intr, 2, 0) | |
155 | GROUP_MINOR_ENTRY(intr_2_0) | |
156 | GROUP_MINOR_END(intr_2) | |
157 | GROUP_MAJOR_END(intr) | |
158 | ||
159 | GROUP_HCALL_TABLE(intr_1_0) | |
160 | GROUP_HCALL_ENTRY(INTR_DEVINO2SYSINO, hcall_intr_devino2sysino) | |
161 | GROUP_HCALL_ENTRY(INTR_GETENABLED, hcall_intr_getenabled) | |
162 | GROUP_HCALL_ENTRY(INTR_SETENABLED, hcall_intr_setenabled) | |
163 | GROUP_HCALL_ENTRY(INTR_GETSTATE, hcall_intr_getstate) | |
164 | GROUP_HCALL_ENTRY(INTR_SETSTATE, hcall_intr_setstate) | |
165 | GROUP_HCALL_ENTRY(INTR_GETTARGET, hcall_intr_gettarget) | |
166 | GROUP_HCALL_ENTRY(INTR_SETTARGET, hcall_intr_settarget) | |
167 | ||
168 | #ifdef SOLARIS_ERRATUM_6496266 | |
169 | ||
170 | /* | |
171 | * NOTE: The following workaround enables the interrupt_cookie | |
172 | * APIs (0xa7 - 0xae) as part of API_GROUP_INTR v1.0. Due a | |
173 | * bug in Solaris S10U3, it negotiates v1.0 of the interrupt | |
174 | * group and expects the vintr_cookie APIs to be available as | |
175 | * part of this version. These APIs should only be enabled when | |
176 | * a guest negotiates v2.0 as per Hypervisor API specification, | |
177 | * and this workaround should be removed when legacy support for | |
178 | * S10U3 and later is no longer required in the field. | |
179 | */ | |
180 | GROUP_HCALL_ENTRY(VINTR_GETCOOKIE, hcall_vintr_getcookie) | |
181 | GROUP_HCALL_ENTRY(VINTR_SETCOOKIE, hcall_vintr_setcookie) | |
182 | GROUP_HCALL_ENTRY(VINTR_GETVALID, hcall_vintr_getvalid) | |
183 | GROUP_HCALL_ENTRY(VINTR_SETVALID, hcall_vintr_setvalid) | |
184 | GROUP_HCALL_ENTRY(VINTR_GETSTATE, hcall_vintr_getstate) | |
185 | GROUP_HCALL_ENTRY(VINTR_SETSTATE, hcall_vintr_setstate) | |
186 | GROUP_HCALL_ENTRY(VINTR_GETTARGET, hcall_vintr_gettarget) | |
187 | GROUP_HCALL_ENTRY(VINTR_SETTARGET, hcall_vintr_settarget) | |
188 | #endif | |
189 | GROUP_HCALL_END(intr_1) | |
190 | ||
191 | GROUP_HCALL_TABLE(intr_2_0) | |
192 | GROUP_HCALL_ENTRY(VINTR_GETCOOKIE, hcall_vintr_getcookie) | |
193 | GROUP_HCALL_ENTRY(VINTR_SETCOOKIE, hcall_vintr_setcookie) | |
194 | GROUP_HCALL_ENTRY(VINTR_GETVALID, hcall_vintr_getvalid) | |
195 | GROUP_HCALL_ENTRY(VINTR_SETVALID, hcall_vintr_setvalid) | |
196 | GROUP_HCALL_ENTRY(VINTR_GETSTATE, hcall_vintr_getstate) | |
197 | GROUP_HCALL_ENTRY(VINTR_SETSTATE, hcall_vintr_setstate) | |
198 | GROUP_HCALL_ENTRY(VINTR_GETTARGET, hcall_vintr_gettarget) | |
199 | GROUP_HCALL_ENTRY(VINTR_SETTARGET, hcall_vintr_settarget) | |
200 | GROUP_HCALL_END(intr_2) | |
201 | GROUP_END(intr) | |
202 | ||
203 | /* | |
204 | * Guest Soft State group. | |
205 | */ | |
206 | GROUP_BEGIN(softstate, API_GROUP_SOFTSTATE) ! API group index #3 | |
207 | GROUP_MAJOR_ENTRY(softstate, 1, 0) | |
208 | GROUP_MINOR_ENTRY(softstate_1_0) | |
209 | GROUP_MINOR_END(softstate_1) | |
210 | GROUP_MAJOR_END(softstate) | |
211 | ||
212 | GROUP_HCALL_TABLE(softstate_1_0) | |
213 | GROUP_HCALL_ENTRY(SOFT_STATE_SET, hcall_soft_state_set) | |
214 | GROUP_HCALL_ENTRY(SOFT_STATE_GET, hcall_soft_state_get) | |
215 | GROUP_HCALL_END(softstate_1) | |
216 | GROUP_END(softstate) | |
217 | ||
218 | ||
219 | /* | |
220 | * PCIe API group. For guests doing physical I/O with | |
221 | * PCI-Express Root Complexes. | |
222 | */ | |
223 | GROUP_BEGIN(pci, API_GROUP_PCI) ! API group index #4 | |
224 | #ifdef SOLARIS_ERRATUM_6538898 | |
225 | GROUP_MAJOR_ENTRY(pci, 1, 0) | |
226 | GROUP_MINOR_ENTRY(pci_1_0) | |
227 | GROUP_MINOR_END(pci_1) | |
228 | #else /* SOLARIS_ERRATUM_6538898 */ | |
229 | GROUP_MAJOR_ENTRY(pci, 1, 1) | |
230 | GROUP_MINOR_ENTRY(pci_1_0) | |
231 | GROUP_MINOR_ENTRY(pci_1_1) | |
232 | GROUP_MINOR_END(pci_1) | |
233 | #endif /* SOLARIS_ERRATUM_6538898 */ | |
234 | GROUP_MAJOR_END(pci) | |
235 | ||
236 | GROUP_HCALL_TABLE(pci_1_0) | |
237 | GROUP_HCALL_ENTRY(VPCI_IOMMU_MAP, hcall_vpci_iommu_map) | |
238 | GROUP_HCALL_ENTRY(VPCI_IOMMU_UNMAP, hcall_vpci_iommu_unmap) | |
239 | GROUP_HCALL_ENTRY(VPCI_IOMMU_GETMAP, hcall_vpci_iommu_getmap) | |
240 | GROUP_HCALL_ENTRY(VPCI_IOMMU_GETBYPASS, hcall_vpci_iommu_getbypass) | |
241 | GROUP_HCALL_ENTRY(VPCI_CONFIG_GET, hcall_vpci_config_get) | |
242 | GROUP_HCALL_ENTRY(VPCI_CONFIG_PUT, hcall_vpci_config_put) | |
243 | GROUP_HCALL_ENTRY(VPCI_IO_PEEK, hcall_vpci_io_peek) | |
244 | GROUP_HCALL_ENTRY(VPCI_IO_POKE, hcall_vpci_io_poke) | |
245 | GROUP_HCALL_ENTRY(VPCI_DMA_SYNC, hcall_vpci_dma_sync) | |
246 | GROUP_HCALL_ENTRY(MSIQ_CONF, hcall_msiq_conf) | |
247 | GROUP_HCALL_ENTRY(MSIQ_INFO, hcall_msiq_info) | |
248 | GROUP_HCALL_ENTRY(MSIQ_GETVALID, hcall_msiq_getvalid) | |
249 | GROUP_HCALL_ENTRY(MSIQ_SETVALID, hcall_msiq_setvalid) | |
250 | GROUP_HCALL_ENTRY(MSIQ_GETSTATE, hcall_msiq_getstate) | |
251 | GROUP_HCALL_ENTRY(MSIQ_SETSTATE, hcall_msiq_setstate) | |
252 | GROUP_HCALL_ENTRY(MSIQ_GETHEAD, hcall_msiq_gethead) | |
253 | GROUP_HCALL_ENTRY(MSIQ_SETHEAD, hcall_msiq_sethead) | |
254 | GROUP_HCALL_ENTRY(MSIQ_GETTAIL, hcall_msiq_gettail) | |
255 | GROUP_HCALL_ENTRY(MSI_GETVALID, hcall_msi_getvalid) | |
256 | GROUP_HCALL_ENTRY(MSI_SETVALID, hcall_msi_setvalid) | |
257 | GROUP_HCALL_ENTRY(MSI_GETMSIQ, hcall_msi_getmsiq) | |
258 | GROUP_HCALL_ENTRY(MSI_SETMSIQ, hcall_msi_setmsiq) | |
259 | GROUP_HCALL_ENTRY(MSI_GETSTATE, hcall_msi_getstate) | |
260 | GROUP_HCALL_ENTRY(MSI_SETSTATE, hcall_msi_setstate) | |
261 | GROUP_HCALL_ENTRY(MSI_MSG_GETMSIQ, hcall_msi_msg_getmsiq) | |
262 | GROUP_HCALL_ENTRY(MSI_MSG_SETMSIQ, hcall_msi_msg_setmsiq) | |
263 | GROUP_HCALL_ENTRY(MSI_MSG_GETVALID, hcall_msi_msg_getvalid) | |
264 | GROUP_HCALL_ENTRY(MSI_MSG_SETVALID, hcall_msi_msg_setvalid) | |
265 | GROUP_HCALL_TABLE(pci_1_1) | |
266 | GROUP_HCALL_ENTRY(VPCI_IOMMU_MAP, hcall_vpci_iommu_map_v2) | |
267 | GROUP_HCALL_ENTRY(VPCI_IOMMU_GETMAP, hcall_vpci_iommu_getmap_v2) | |
268 | GROUP_HCALL_END(pci_1) | |
269 | GROUP_END(pci) | |
270 | ||
271 | #ifdef CONFIG_SVC | |
272 | /* | |
273 | * SVC API group. Deprecated interface for early Solaris | |
274 | * releases using Great Lakes Virtual Channels (glvc). | |
275 | */ | |
276 | GROUP_BEGIN(svc, API_GROUP_SVC) ! API group index #5 | |
277 | GROUP_MAJOR_ENTRY(svc, 1, 0) | |
278 | GROUP_MINOR_ENTRY(svc_1_0) | |
279 | GROUP_MINOR_END(svc_1) | |
280 | GROUP_MAJOR_END(svc) | |
281 | ||
282 | GROUP_HCALL_TABLE(svc_1_0) | |
283 | GROUP_HCALL_ENTRY(SVC_SEND, hcall_svc_send) | |
284 | GROUP_HCALL_ENTRY(SVC_RECV, hcall_svc_recv) | |
285 | GROUP_HCALL_ENTRY(SVC_GETSTATUS, hcall_svc_getstatus) | |
286 | GROUP_HCALL_ENTRY(SVC_SETSTATUS, hcall_svc_setstatus) | |
287 | GROUP_HCALL_ENTRY(SVC_CLRSTATUS, hcall_svc_clrstatus) | |
288 | GROUP_HCALL_END(svc_1) | |
289 | GROUP_END(svc) | |
290 | #endif | |
291 | ||
292 | /* | |
293 | * Niagara Crypto API group. Niagara specific functions | |
294 | * for access to crypto acceleration hardware. | |
295 | */ | |
296 | GROUP_BEGIN(ncs, API_GROUP_NCS) ! API group index #6 | |
297 | GROUP_MAJOR_ENTRY(ncs, 1, 0) | |
298 | GROUP_MINOR_ENTRY(ncs_1_0) | |
299 | GROUP_MINOR_END(ncs_1) | |
300 | GROUP_MAJOR_ENTRY(ncs, 2, 0) | |
301 | GROUP_MINOR_ENTRY(ncs_2_0) | |
302 | GROUP_MINOR_END(ncs_2) | |
303 | GROUP_MAJOR_END(ncs) | |
304 | ||
305 | GROUP_HCALL_TABLE(ncs_1_0) | |
306 | GROUP_HCALL_ENTRY(NCS_REQUEST, hcall_ncs_request) | |
307 | GROUP_HCALL_END(ncs_1) | |
308 | ||
309 | GROUP_HCALL_TABLE(ncs_2_0) | |
310 | GROUP_HCALL_ENTRY(NCS_SETTAIL, hcall_ncs_settail) | |
311 | GROUP_HCALL_ENTRY(NCS_SETHEAD_MARKER, hcall_ncs_sethead_marker) | |
312 | GROUP_HCALL_ENTRY(NCS_GETHEAD, hcall_ncs_gethead) | |
313 | GROUP_HCALL_ENTRY(NCS_GETTAIL, hcall_ncs_gettail) | |
314 | GROUP_HCALL_ENTRY(NCS_QCONF, hcall_ncs_qconf) | |
315 | GROUP_HCALL_ENTRY(NCS_QHANDLE_TO_DEVINO, hcall_ncs_qhandle_to_devino) | |
316 | GROUP_HCALL_ENTRY(NCS_QINFO, hcall_ncs_qinfo) | |
317 | GROUP_HCALL_END(ncs_2) | |
318 | ||
319 | GROUP_END(ncs) | |
320 | ||
321 | /* | |
322 | * Niagara Perf Regs API group. Niagara specific calls | |
323 | * for performance monitoring. | |
324 | */ | |
325 | GROUP_BEGIN(niagara, API_GROUP_NIAGARA) ! API group index #7 | |
326 | GROUP_MAJOR_ENTRY(niagara, 1, 0) | |
327 | GROUP_MINOR_ENTRY(niagara_1_0) | |
328 | GROUP_MINOR_END(niagara_1) | |
329 | GROUP_MAJOR_END(niagara) | |
330 | ||
331 | GROUP_HCALL_TABLE(niagara_1_0) | |
332 | GROUP_HCALL_ENTRY(NIAGARA_GET_PERFREG, hcall_niagara_getperf) | |
333 | GROUP_HCALL_ENTRY(NIAGARA_SET_PERFREG, hcall_niagara_setperf) | |
334 | GROUP_HCALL_ENTRY(NIAGARA_MMUSTAT_CONF, hcall_niagara_mmustat_conf) | |
335 | GROUP_HCALL_ENTRY(NIAGARA_MMUSTAT_INFO, hcall_niagara_mmustat_info) | |
336 | GROUP_HCALL_END(niagara_1) | |
337 | GROUP_END(niagara) | |
338 | ||
339 | #ifdef CONFIG_FIRE | |
340 | /* | |
341 | * Fire API group. Fire specific calls for I/O performance | |
342 | * monitoring. | |
343 | */ | |
344 | GROUP_BEGIN(fire, API_GROUP_FIRE) ! API group index #8 | |
345 | GROUP_MAJOR_ENTRY(fire, 1, 0) | |
346 | GROUP_MINOR_ENTRY(fire_1_0) | |
347 | GROUP_MINOR_END(fire_1) | |
348 | GROUP_MAJOR_END(fire) | |
349 | ||
350 | GROUP_HCALL_TABLE(fire_1_0) | |
351 | GROUP_HCALL_ENTRY(FIRE_GET_PERFREG, hcall_vpci_get_perfreg) | |
352 | GROUP_HCALL_ENTRY(FIRE_SET_PERFREG, hcall_vpci_set_perfreg) | |
353 | GROUP_HCALL_END(fire_1) | |
354 | GROUP_END(fire) | |
355 | #endif | |
356 | ||
357 | /* | |
358 | * Diag and Test API group. Special interfaces for lab test | |
359 | * and debug tools (like the error injector). Generally | |
360 | * require special access permissions be specified in the | |
361 | * machine description. Not intended for use in production | |
362 | * systems. | |
363 | */ | |
364 | GROUP_BEGIN(diag, API_GROUP_DIAG) ! API group index #9 | |
365 | GROUP_MAJOR_ENTRY(diag, 1, 0) | |
366 | GROUP_MINOR_ENTRY(diag_1_0) | |
367 | GROUP_MINOR_END(diag_1) | |
368 | GROUP_MAJOR_END(diag) | |
369 | ||
370 | GROUP_HCALL_TABLE(diag_1_0) | |
371 | GROUP_HCALL_ENTRY(DIAG_RA2PA, hcall_diag_ra2pa) | |
372 | GROUP_HCALL_ENTRY(DIAG_HEXEC, hcall_diag_hexec) | |
373 | GROUP_HCALL_END(diag_1) | |
374 | GROUP_END(diag) | |
375 | ||
376 | GROUP_BEGIN(ldc, API_GROUP_LDC) ! API group index #10 | |
377 | GROUP_MAJOR_ENTRY(ldc, 1, 0) | |
378 | GROUP_MINOR_ENTRY(ldc_1_0) | |
379 | GROUP_MINOR_END(ldc_1) | |
380 | GROUP_MAJOR_END(ldc) | |
381 | ||
382 | GROUP_HCALL_TABLE(ldc_1_0) | |
383 | GROUP_HCALL_ENTRY(LDC_TX_QCONF, hcall_ldc_tx_qconf) | |
384 | GROUP_HCALL_ENTRY(LDC_TX_QINFO, hcall_ldc_tx_qinfo) | |
385 | GROUP_HCALL_ENTRY(LDC_TX_GET_STATE, hcall_ldc_tx_get_state) | |
386 | GROUP_HCALL_ENTRY(LDC_TX_SET_QTAIL, hcall_ldc_tx_set_qtail) | |
387 | GROUP_HCALL_ENTRY(LDC_RX_QCONF, hcall_ldc_rx_qconf) | |
388 | GROUP_HCALL_ENTRY(LDC_RX_QINFO, hcall_ldc_rx_qinfo) | |
389 | GROUP_HCALL_ENTRY(LDC_RX_GET_STATE, hcall_ldc_rx_get_state) | |
390 | GROUP_HCALL_ENTRY(LDC_RX_SET_QHEAD, hcall_ldc_rx_set_qhead) | |
391 | GROUP_HCALL_ENTRY(LDC_SET_MAP_TABLE, hcall_ldc_set_map_table) | |
392 | GROUP_HCALL_ENTRY(LDC_GET_MAP_TABLE, hcall_ldc_get_map_table) | |
393 | GROUP_HCALL_ENTRY(LDC_COPY, hcall_ldc_copy) | |
394 | GROUP_HCALL_ENTRY(LDC_MAPIN, hcall_ldc_mapin) | |
395 | GROUP_HCALL_ENTRY(LDC_UNMAP, hcall_ldc_unmap) | |
396 | GROUP_HCALL_ENTRY(LDC_REVOKE, hcall_ldc_revoke) | |
397 | GROUP_HCALL_END(ldc_1) | |
398 | GROUP_END(ldc) | |
399 | ||
400 | ||
401 | #ifdef CONFIG_VERSION_TEST | |
402 | /* | |
403 | * Test API group. Here to enable debugging changes to | |
404 | * the set_version/get_version code, and/or to the table | |
405 | * structure. | |
406 | */ | |
407 | GROUP_BEGIN(test, 0x400) ! API group index #11 | |
408 | GROUP_MAJOR_ENTRY(test, 1, 2) | |
409 | GROUP_MINOR_ENTRY(test_1_0) | |
410 | GROUP_MINOR_ENTRY(test_1_1) | |
411 | GROUP_MINOR_ENTRY(test_1_2) | |
412 | GROUP_MINOR_END(test_1) | |
413 | GROUP_MAJOR_ENTRY(test, 2, 2) | |
414 | GROUP_MINOR_ENTRY(test_2_0) | |
415 | GROUP_MINOR_ENTRY(test_2_1) | |
416 | GROUP_MINOR_ENTRY(test_2_2) | |
417 | GROUP_MINOR_END(test_2) | |
418 | GROUP_MAJOR_ENTRY(test, 3, 0) | |
419 | GROUP_MINOR_ENTRY(test_3_0) | |
420 | GROUP_MINOR_END(test_3) | |
421 | GROUP_MAJOR_END(test) | |
422 | ||
423 | GROUP_HCALL_TABLE(test_1_0) | |
424 | GROUP_HCALL_ENTRY(0xe0, hcall_version_test_1_0) | |
425 | GROUP_HCALL_TABLE(test_1_1) | |
426 | GROUP_HCALL_ENTRY(0xe1, hcall_version_test_1_1) | |
427 | GROUP_HCALL_TABLE(test_1_2) | |
428 | GROUP_HCALL_ENTRY(0xe2, hcall_version_test_1_2) | |
429 | GROUP_HCALL_END(test_1) | |
430 | GROUP_HCALL_TABLE(test_2_0) | |
431 | GROUP_HCALL_ENTRY(0xe0, hcall_version_test_2_0) | |
432 | GROUP_HCALL_TABLE(test_2_1) | |
433 | GROUP_HCALL_ENTRY(0xe3, hcall_version_test_2_1) | |
434 | GROUP_HCALL_TABLE(test_2_2) | |
435 | GROUP_HCALL_ENTRY(0xe1, hcall_version_test_2_2) | |
436 | GROUP_HCALL_END(test_2) | |
437 | GROUP_HCALL_TABLE(test_3_0) | |
438 | GROUP_HCALL_ENTRY(0xe3, hcall_version_test_3_0) | |
439 | GROUP_HCALL_END(test_3) | |
440 | GROUP_END(test) | |
441 | #endif | |
442 | ||
443 | /* | |
444 | * You can add new groups here. Remember to update | |
445 | * NUM_API_GROUPS. | |
446 | */ | |
447 | ||
448 | ||
449 | /* End of API groups - delete this and be sorry */ | |
450 | .xword 0 | |
451 | SET_SIZE(hcall_api_group_map) |