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.2 07/05/24 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 /* for testing */ | |
60 | #endif /* CONFIG_BRINGUP */ | |
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 | DATA_GLOBAL(hcall_api_group_map) | |
70 | ||
71 | /* | |
72 | * Core API group. Basics needed for a sane guest. | |
73 | */ | |
74 | GROUP_BEGIN(core, API_GROUP_CORE) ! API group index #1 | |
75 | GROUP_MAJOR_ENTRY(core, 1, 1) | |
76 | GROUP_MINOR_ENTRY(core_1_0) | |
77 | GROUP_MINOR_ENTRY(core_1_1) | |
78 | GROUP_MINOR_END(core_1) | |
79 | GROUP_MAJOR_END(core) | |
80 | ||
81 | GROUP_HCALL_TABLE(core_1_0) | |
82 | GROUP_HCALL_ENTRY(MACH_EXIT, hcall_mach_exit) | |
83 | GROUP_HCALL_ENTRY(MACH_DESC, hcall_mach_desc) | |
84 | GROUP_HCALL_ENTRY(MACH_SIR, hcall_mach_sir) | |
85 | GROUP_HCALL_ENTRY(CPU_START, hcall_cpu_start) | |
86 | GROUP_HCALL_ENTRY(CPU_YIELD, hcall_cpu_yield) | |
87 | GROUP_HCALL_ENTRY(CPU_QCONF, hcall_cpu_qconf) | |
88 | GROUP_HCALL_ENTRY(CPU_QINFO, hcall_cpu_qinfo) | |
89 | GROUP_HCALL_ENTRY(CPU_MYID, hcall_cpu_myid) | |
90 | GROUP_HCALL_ENTRY(CPU_GET_STATE, hcall_cpu_get_state) | |
91 | GROUP_HCALL_ENTRY(CPU_SET_RTBA, hcall_cpu_set_rtba) | |
92 | GROUP_HCALL_ENTRY(CPU_GET_RTBA, hcall_cpu_get_rtba) | |
93 | GROUP_HCALL_ENTRY(MMU_TSB_CTX0, hcall_mmu_tsb_ctx0) | |
94 | GROUP_HCALL_ENTRY(MMU_TSB_CTXNON0, hcall_mmu_tsb_ctxnon0) | |
95 | GROUP_HCALL_ENTRY(MMU_DEMAP_PAGE, hcall_mmu_demap_page) | |
96 | GROUP_HCALL_ENTRY(MMU_DEMAP_CTX, hcall_mmu_demap_ctx) | |
97 | GROUP_HCALL_ENTRY(MMU_DEMAP_ALL, hcall_mmu_demap_all) | |
98 | GROUP_HCALL_ENTRY(MMU_MAP_PERM_ADDR, hcall_mmu_map_perm_addr) | |
99 | GROUP_HCALL_ENTRY(MMU_FAULT_AREA_CONF, hcall_mmu_fault_area_conf) | |
100 | GROUP_HCALL_ENTRY(MMU_ENABLE, hcall_mmu_enable) | |
101 | GROUP_HCALL_ENTRY(MMU_UNMAP_PERM_ADDR, hcall_mmu_unmap_perm_addr) | |
102 | GROUP_HCALL_ENTRY(MMU_TSB_CTX0_INFO, hcall_mmu_tsb_ctx0_info) | |
103 | GROUP_HCALL_ENTRY(MMU_TSB_CTXNON0_INFO, hcall_mmu_tsb_ctxnon0_info) | |
104 | GROUP_HCALL_ENTRY(MMU_FAULT_AREA_INFO, hcall_mmu_fault_area_info) | |
105 | GROUP_HCALL_ENTRY(MEM_SCRUB, hcall_mem_scrub) | |
106 | GROUP_HCALL_ENTRY(MEM_SYNC, hcall_mem_sync) | |
107 | GROUP_HCALL_ENTRY(CPU_MONDO_SEND, hcall_cpu_mondo_send) | |
108 | GROUP_HCALL_ENTRY(TOD_GET, hcall_tod_get) | |
109 | GROUP_HCALL_ENTRY(TOD_SET, hcall_tod_set) | |
110 | GROUP_HCALL_ENTRY(CONS_GETCHAR, hcall_cons_getchar) | |
111 | GROUP_HCALL_ENTRY(CONS_PUTCHAR, hcall_cons_putchar) | |
112 | GROUP_HCALL_ENTRY(TTRACE_BUF_CONF, hcall_ttrace_buf_conf) | |
113 | GROUP_HCALL_ENTRY(TTRACE_BUF_INFO, hcall_ttrace_buf_info) | |
114 | GROUP_HCALL_ENTRY(TTRACE_ENABLE, hcall_ttrace_enable) | |
115 | GROUP_HCALL_ENTRY(TTRACE_FREEZE, hcall_ttrace_freeze) | |
116 | GROUP_HCALL_ENTRY(DUMP_BUF_UPDATE, hcall_dump_buf_update) | |
117 | GROUP_HCALL_ENTRY(DUMP_BUF_INFO, hcall_dump_buf_info) | |
118 | GROUP_HCALL_ENTRY(MMU_MAP_ADDR_IDX, hcall_mmu_map_addr) | |
119 | GROUP_HCALL_ENTRY(MMU_UNMAP_ADDR_IDX, hcall_mmu_unmap_addr) | |
120 | GROUP_HCALL_ENTRY(TTRACE_ADDENTRY_IDX, hcall_ttrace_addentry) | |
121 | #ifdef CONFIG_DISK | |
122 | GROUP_HCALL_ENTRY(DISK_READ, hcall_disk_read) | |
123 | GROUP_HCALL_ENTRY(DISK_WRITE, hcall_disk_write) | |
124 | #endif | |
125 | #ifdef CONFIG_BRINGUP | |
126 | GROUP_HCALL_ENTRY(VDEV_GENINTR, hcall_vdev_genintr) | |
127 | #endif | |
128 | #if 0 /* { FIXME: perm map info for debug currently disabled */ | |
129 | #ifdef DEBUG | |
130 | GROUP_HCALL_ENTRY(MMU_PERM_ADDR_INFO, hcall_mmu_perm_addr_info) | |
131 | #endif | |
132 | #endif /* } */ | |
133 | GROUP_HCALL_TABLE(core_1_1) | |
134 | GROUP_HCALL_ENTRY(MACH_SET_WATCHDOG, hcall_set_watchdog) | |
135 | GROUP_HCALL_ENTRY(CPU_STOP, hcall_cpu_stop) | |
136 | GROUP_HCALL_ENTRY(CONS_READ, hcall_cons_read) | |
137 | GROUP_HCALL_ENTRY(CONS_WRITE, hcall_cons_write) | |
138 | GROUP_HCALL_END(core_1) | |
139 | GROUP_END(core) | |
140 | ||
141 | /* | |
142 | * Interrupt API group. For guests interested in using | |
143 | * interrupts. | |
144 | */ | |
145 | GROUP_BEGIN(intr, API_GROUP_INTR) ! API group index #2 | |
146 | GROUP_MAJOR_ENTRY(intr, 1, 0) | |
147 | GROUP_MINOR_ENTRY(intr_1_0) | |
148 | GROUP_MINOR_END(intr_1) | |
149 | GROUP_MAJOR_ENTRY(intr, 2, 0) | |
150 | GROUP_MINOR_ENTRY(intr_2_0) | |
151 | GROUP_MINOR_END(intr_2) | |
152 | GROUP_MAJOR_END(intr) | |
153 | ||
154 | GROUP_HCALL_TABLE(intr_1_0) | |
155 | GROUP_HCALL_ENTRY(INTR_DEVINO2SYSINO, hcall_intr_devino2sysino) | |
156 | GROUP_HCALL_ENTRY(INTR_GETENABLED, hcall_intr_getenabled) | |
157 | GROUP_HCALL_ENTRY(INTR_SETENABLED, hcall_intr_setenabled) | |
158 | GROUP_HCALL_ENTRY(INTR_GETSTATE, hcall_intr_getstate) | |
159 | GROUP_HCALL_ENTRY(INTR_SETSTATE, hcall_intr_setstate) | |
160 | GROUP_HCALL_ENTRY(INTR_GETTARGET, hcall_intr_gettarget) | |
161 | GROUP_HCALL_ENTRY(INTR_SETTARGET, hcall_intr_settarget) | |
162 | ||
163 | #ifdef SOLARIS_ERRATUM_6496266 | |
164 | /* | |
165 | * NOTE: The following workaround enables the interrupt_cookie | |
166 | * APIs (0xa7 - 0xae) as part of API_GROUP_INTR v1.0. Due a | |
167 | * bug in Solaris S10U3, it negotiates v1.0 of the interrupt | |
168 | * group and expects the vintr_cookie APIs to be available as | |
169 | * part of this version. These APIs should only be enabled when | |
170 | * a guest negotiates v2.0 as per Hypervisor API specification, | |
171 | * and this workaround should be removed when legacy support for | |
172 | * S10U3 and later is no longer required in the field. | |
173 | */ | |
174 | GROUP_HCALL_ENTRY(VINTR_GETCOOKIE, hcall_vintr_getcookie) | |
175 | GROUP_HCALL_ENTRY(VINTR_SETCOOKIE, hcall_vintr_setcookie) | |
176 | GROUP_HCALL_ENTRY(VINTR_GETVALID, hcall_vintr_getvalid) | |
177 | GROUP_HCALL_ENTRY(VINTR_SETVALID, hcall_vintr_setvalid) | |
178 | GROUP_HCALL_ENTRY(VINTR_GETSTATE, hcall_vintr_getstate) | |
179 | GROUP_HCALL_ENTRY(VINTR_SETSTATE, hcall_vintr_setstate) | |
180 | GROUP_HCALL_ENTRY(VINTR_GETTARGET, hcall_vintr_gettarget) | |
181 | GROUP_HCALL_ENTRY(VINTR_SETTARGET, hcall_vintr_settarget) | |
182 | #endif | |
183 | GROUP_HCALL_END(intr_1) | |
184 | ||
185 | GROUP_HCALL_TABLE(intr_2_0) | |
186 | GROUP_HCALL_ENTRY(VINTR_GETCOOKIE, hcall_vintr_getcookie) | |
187 | GROUP_HCALL_ENTRY(VINTR_SETCOOKIE, hcall_vintr_setcookie) | |
188 | GROUP_HCALL_ENTRY(VINTR_GETVALID, hcall_vintr_getvalid) | |
189 | GROUP_HCALL_ENTRY(VINTR_SETVALID, hcall_vintr_setvalid) | |
190 | GROUP_HCALL_ENTRY(VINTR_GETSTATE, hcall_vintr_getstate) | |
191 | GROUP_HCALL_ENTRY(VINTR_SETSTATE, hcall_vintr_setstate) | |
192 | GROUP_HCALL_ENTRY(VINTR_GETTARGET, hcall_vintr_gettarget) | |
193 | GROUP_HCALL_ENTRY(VINTR_SETTARGET, hcall_vintr_settarget) | |
194 | GROUP_HCALL_END(intr_2) | |
195 | GROUP_END(intr) | |
196 | ||
197 | /* | |
198 | * Guest Soft State group. | |
199 | */ | |
200 | GROUP_BEGIN(softstate, API_GROUP_SOFTSTATE) ! API group index #3 | |
201 | GROUP_MAJOR_ENTRY(softstate, 1, 0) | |
202 | GROUP_MINOR_ENTRY(softstate_1_0) | |
203 | GROUP_MINOR_END(softstate_1) | |
204 | GROUP_MAJOR_END(softstate) | |
205 | ||
206 | GROUP_HCALL_TABLE(softstate_1_0) | |
207 | GROUP_HCALL_ENTRY(SOFT_STATE_SET, hcall_soft_state_set) | |
208 | GROUP_HCALL_ENTRY(SOFT_STATE_GET, hcall_soft_state_get) | |
209 | GROUP_HCALL_END(softstate_1) | |
210 | GROUP_END(softstate) | |
211 | ||
212 | ||
213 | /* | |
214 | * PCIe API group. For guests doing physical I/O with | |
215 | * PCI-Express Root Complexes. | |
216 | */ | |
217 | GROUP_BEGIN(pci, API_GROUP_PCI) ! API group index #4 | |
218 | #ifdef SOLARIS_ERRATUM_6538898 | |
219 | GROUP_MAJOR_ENTRY(pci, 1, 0) | |
220 | GROUP_MINOR_ENTRY(pci_1_0) | |
221 | GROUP_MINOR_END(pci_1) | |
222 | #else /* SOLARIS_ERRATUM_6538898 */ | |
223 | GROUP_MAJOR_ENTRY(pci, 1, 1) | |
224 | GROUP_MINOR_ENTRY(pci_1_0) | |
225 | GROUP_MINOR_ENTRY(pci_1_1) | |
226 | GROUP_MINOR_END(pci_1) | |
227 | #endif /* SOLARIS_ERRATUM_6538898 */ | |
228 | GROUP_MAJOR_END(pci) | |
229 | ||
230 | GROUP_HCALL_TABLE(pci_1_0) | |
231 | GROUP_HCALL_ENTRY(VPCI_IOMMU_MAP, hcall_vpci_iommu_map) | |
232 | GROUP_HCALL_ENTRY(VPCI_IOMMU_UNMAP, hcall_vpci_iommu_unmap) | |
233 | GROUP_HCALL_ENTRY(VPCI_IOMMU_GETMAP, hcall_vpci_iommu_getmap) | |
234 | GROUP_HCALL_ENTRY(VPCI_IOMMU_GETBYPASS, hcall_vpci_iommu_getbypass) | |
235 | GROUP_HCALL_ENTRY(VPCI_CONFIG_GET, hcall_vpci_config_get) | |
236 | GROUP_HCALL_ENTRY(VPCI_CONFIG_PUT, hcall_vpci_config_put) | |
237 | GROUP_HCALL_ENTRY(VPCI_IO_PEEK, hcall_vpci_io_peek) | |
238 | GROUP_HCALL_ENTRY(VPCI_IO_POKE, hcall_vpci_io_poke) | |
239 | GROUP_HCALL_ENTRY(VPCI_DMA_SYNC, hcall_vpci_dma_sync) | |
240 | GROUP_HCALL_ENTRY(MSIQ_CONF, hcall_msiq_conf) | |
241 | GROUP_HCALL_ENTRY(MSIQ_INFO, hcall_msiq_info) | |
242 | GROUP_HCALL_ENTRY(MSIQ_GETVALID, hcall_msiq_getvalid) | |
243 | GROUP_HCALL_ENTRY(MSIQ_SETVALID, hcall_msiq_setvalid) | |
244 | GROUP_HCALL_ENTRY(MSIQ_GETSTATE, hcall_msiq_getstate) | |
245 | GROUP_HCALL_ENTRY(MSIQ_SETSTATE, hcall_msiq_setstate) | |
246 | GROUP_HCALL_ENTRY(MSIQ_GETHEAD, hcall_msiq_gethead) | |
247 | GROUP_HCALL_ENTRY(MSIQ_SETHEAD, hcall_msiq_sethead) | |
248 | GROUP_HCALL_ENTRY(MSIQ_GETTAIL, hcall_msiq_gettail) | |
249 | GROUP_HCALL_ENTRY(MSI_GETVALID, hcall_msi_getvalid) | |
250 | GROUP_HCALL_ENTRY(MSI_SETVALID, hcall_msi_setvalid) | |
251 | GROUP_HCALL_ENTRY(MSI_GETMSIQ, hcall_msi_getmsiq) | |
252 | GROUP_HCALL_ENTRY(MSI_SETMSIQ, hcall_msi_setmsiq) | |
253 | GROUP_HCALL_ENTRY(MSI_GETSTATE, hcall_msi_getstate) | |
254 | GROUP_HCALL_ENTRY(MSI_SETSTATE, hcall_msi_setstate) | |
255 | GROUP_HCALL_ENTRY(MSI_MSG_GETMSIQ, hcall_msi_msg_getmsiq) | |
256 | GROUP_HCALL_ENTRY(MSI_MSG_SETMSIQ, hcall_msi_msg_setmsiq) | |
257 | GROUP_HCALL_ENTRY(MSI_MSG_GETVALID, hcall_msi_msg_getvalid) | |
258 | GROUP_HCALL_ENTRY(MSI_MSG_SETVALID, hcall_msi_msg_setvalid) | |
259 | GROUP_HCALL_TABLE(pci_1_1) | |
260 | GROUP_HCALL_ENTRY(VPCI_IOMMU_MAP, hcall_vpci_iommu_map_v2) | |
261 | GROUP_HCALL_ENTRY(VPCI_IOMMU_GETMAP, hcall_vpci_iommu_getmap_v2) | |
262 | GROUP_HCALL_END(pci_1) | |
263 | GROUP_END(pci) | |
264 | ||
265 | /* | |
266 | * Niagara Crypto API group. Niagara specific functions | |
267 | * for access to crypto acceleration hardware. | |
268 | */ | |
269 | GROUP_BEGIN(ncs, API_GROUP_NCS) ! API group index #5 | |
270 | GROUP_MAJOR_ENTRY(ncs, 1, 0) | |
271 | GROUP_MINOR_ENTRY(ncs_1_0) | |
272 | GROUP_MINOR_END(ncs_1) | |
273 | GROUP_MAJOR_ENTRY(ncs, 2, 0) | |
274 | GROUP_MINOR_ENTRY(ncs_2_0) | |
275 | GROUP_MINOR_END(ncs_2) | |
276 | GROUP_MAJOR_END(ncs) | |
277 | ||
278 | GROUP_HCALL_TABLE(ncs_1_0) | |
279 | GROUP_HCALL_ENTRY(NCS_REQUEST, hcall_ncs_request) | |
280 | GROUP_HCALL_END(ncs_1) | |
281 | ||
282 | GROUP_HCALL_TABLE(ncs_2_0) | |
283 | GROUP_HCALL_ENTRY(NCS_SETTAIL, hcall_ncs_settail) | |
284 | GROUP_HCALL_ENTRY(NCS_SETHEAD_MARKER, hcall_ncs_sethead_marker) | |
285 | GROUP_HCALL_ENTRY(NCS_GETHEAD, hcall_ncs_gethead) | |
286 | GROUP_HCALL_ENTRY(NCS_GETTAIL, hcall_ncs_gettail) | |
287 | GROUP_HCALL_ENTRY(NCS_QCONF, hcall_ncs_qconf) | |
288 | GROUP_HCALL_ENTRY(NCS_QHANDLE_TO_DEVINO, hcall_ncs_qhandle_to_devino) | |
289 | GROUP_HCALL_ENTRY(NCS_QINFO, hcall_ncs_qinfo) | |
290 | GROUP_HCALL_END(ncs_2) | |
291 | ||
292 | GROUP_END(ncs) | |
293 | ||
294 | /* | |
295 | * Niagara2 Perf Regs API group. Niagara2 specific calls | |
296 | * for performance monitoring. | |
297 | */ | |
298 | GROUP_BEGIN(niagara2, API_GROUP_NIAGARA2) ! API group index #6 | |
299 | GROUP_MAJOR_ENTRY(niagara2, 1, 0) | |
300 | GROUP_MINOR_ENTRY(niagara2_1_0) | |
301 | GROUP_MINOR_END(niagara2_1) | |
302 | GROUP_MAJOR_END(niagara2) | |
303 | ||
304 | GROUP_HCALL_TABLE(niagara2_1_0) | |
305 | GROUP_HCALL_ENTRY(NIAGARA2_GET_PERFREG, hcall_niagara2_getperf) | |
306 | GROUP_HCALL_ENTRY(NIAGARA2_SET_PERFREG, hcall_niagara2_setperf) | |
307 | GROUP_HCALL_END(niagara2_1) | |
308 | GROUP_END(niagara2) | |
309 | ||
310 | #ifdef CONFIG_PIU | |
311 | /* | |
312 | * Fire API group. Fire specific calls for I/O performance | |
313 | * monitoring. | |
314 | */ | |
315 | GROUP_BEGIN(n2piu, API_GROUP_NIAGARA2PIU) ! API group index #7 | |
316 | GROUP_MAJOR_ENTRY(n2piu, 1, 0) | |
317 | GROUP_MINOR_ENTRY(n2piu_1_0) | |
318 | GROUP_MINOR_END(n2piu_1) | |
319 | GROUP_MAJOR_END(n2piu) | |
320 | ||
321 | GROUP_HCALL_TABLE(n2piu_1_0) | |
322 | GROUP_HCALL_ENTRY(N2PIU_GET_PERFREG, hcall_vpci_get_perfreg) | |
323 | GROUP_HCALL_ENTRY(N2PIU_SET_PERFREG, hcall_vpci_set_perfreg) | |
324 | GROUP_HCALL_END(n2piu_1) | |
325 | GROUP_END(n2piu) | |
326 | #endif | |
327 | ||
328 | /* | |
329 | * Diag and Test API group. Special interfaces for lab test | |
330 | * and debug tools (like the error injector). Generally | |
331 | * require special access permissions be specified in the | |
332 | * machine description. Not intended for use in production | |
333 | * systems. | |
334 | */ | |
335 | GROUP_BEGIN(diag, API_GROUP_DIAG) ! API group index #8 | |
336 | GROUP_MAJOR_ENTRY(diag, 1, 0) | |
337 | GROUP_MINOR_ENTRY(diag_1_0) | |
338 | GROUP_MINOR_END(diag_1) | |
339 | GROUP_MAJOR_END(diag) | |
340 | ||
341 | GROUP_HCALL_TABLE(diag_1_0) | |
342 | GROUP_HCALL_ENTRY(DIAG_RA2PA, hcall_diag_ra2pa) | |
343 | GROUP_HCALL_ENTRY(DIAG_HEXEC, hcall_diag_hexec) | |
344 | GROUP_HCALL_END(diag_1) | |
345 | GROUP_END(diag) | |
346 | ||
347 | GROUP_BEGIN(ldc, API_GROUP_LDC) ! API group index #9 | |
348 | GROUP_MAJOR_ENTRY(ldc, 1, 0) | |
349 | GROUP_MINOR_ENTRY(ldc_1_0) | |
350 | GROUP_MINOR_END(ldc_1) | |
351 | GROUP_MAJOR_END(ldc) | |
352 | ||
353 | GROUP_HCALL_TABLE(ldc_1_0) | |
354 | GROUP_HCALL_ENTRY(LDC_TX_QCONF, hcall_ldc_tx_qconf) | |
355 | GROUP_HCALL_ENTRY(LDC_TX_QINFO, hcall_ldc_tx_qinfo) | |
356 | GROUP_HCALL_ENTRY(LDC_TX_GET_STATE, hcall_ldc_tx_get_state) | |
357 | GROUP_HCALL_ENTRY(LDC_TX_SET_QTAIL, hcall_ldc_tx_set_qtail) | |
358 | GROUP_HCALL_ENTRY(LDC_RX_QCONF, hcall_ldc_rx_qconf) | |
359 | GROUP_HCALL_ENTRY(LDC_RX_QINFO, hcall_ldc_rx_qinfo) | |
360 | GROUP_HCALL_ENTRY(LDC_RX_GET_STATE, hcall_ldc_rx_get_state) | |
361 | GROUP_HCALL_ENTRY(LDC_RX_SET_QHEAD, hcall_ldc_rx_set_qhead) | |
362 | GROUP_HCALL_ENTRY(LDC_SET_MAP_TABLE, hcall_ldc_set_map_table) | |
363 | GROUP_HCALL_ENTRY(LDC_GET_MAP_TABLE, hcall_ldc_get_map_table) | |
364 | GROUP_HCALL_ENTRY(LDC_COPY, hcall_ldc_copy) | |
365 | GROUP_HCALL_ENTRY(LDC_MAPIN, hcall_ldc_mapin) | |
366 | GROUP_HCALL_ENTRY(LDC_UNMAP, hcall_ldc_unmap) | |
367 | GROUP_HCALL_ENTRY(LDC_REVOKE, hcall_ldc_revoke) | |
368 | GROUP_HCALL_END(ldc_1) | |
369 | GROUP_END(ldc) | |
370 | ||
371 | /* | |
372 | * Niagara2 Random Number Generator (RNG) API group. | |
373 | */ | |
374 | GROUP_BEGIN(rng, API_GROUP_RNG) ! API group index #10 | |
375 | GROUP_MAJOR_ENTRY(rng, 1, 0) | |
376 | GROUP_MINOR_ENTRY(rng_1_0) | |
377 | GROUP_MINOR_END(rng_1) | |
378 | GROUP_MAJOR_END(rng) | |
379 | ||
380 | GROUP_HCALL_TABLE(rng_1_0) | |
381 | GROUP_HCALL_ENTRY(RNG_GET_DIAG_CONTROL, hcall_rng_get_diag_control) | |
382 | GROUP_HCALL_ENTRY(RNG_CTL_READ, hcall_rng_ctl_read) | |
383 | GROUP_HCALL_ENTRY(RNG_CTL_WRITE, hcall_rng_ctl_write) | |
384 | GROUP_HCALL_ENTRY(RNG_DATA_READ_DIAG, hcall_rng_data_read_diag) | |
385 | GROUP_HCALL_ENTRY(RNG_DATA_READ, hcall_rng_data_read) | |
386 | GROUP_HCALL_END(rng_1) | |
387 | GROUP_END(rng) | |
388 | ||
389 | /* | |
390 | * Niagara2 Network Interface Unit (NIU) API group. | |
391 | */ | |
392 | GROUP_BEGIN(n2niu, API_GROUP_NIAGARA2NIU) ! API group index #11 | |
393 | GROUP_MAJOR_ENTRY(n2niu, 1, 0) | |
394 | GROUP_MINOR_ENTRY(n2niu_1_0) | |
395 | GROUP_MINOR_END(n2niu_1) | |
396 | GROUP_MAJOR_END(n2niu) | |
397 | ||
398 | GROUP_HCALL_TABLE(n2niu_1_0) | |
399 | GROUP_HCALL_ENTRY(N2NIU_RX_LP_SET, hcall_niu_rx_lp_set) | |
400 | GROUP_HCALL_ENTRY(N2NIU_RX_LP_GET, hcall_niu_rx_lp_get) | |
401 | GROUP_HCALL_ENTRY(N2NIU_TX_LP_SET, hcall_niu_tx_lp_set) | |
402 | GROUP_HCALL_ENTRY(N2NIU_TX_LP_GET, hcall_niu_tx_lp_get) | |
403 | GROUP_HCALL_END(n2niu_1) | |
404 | GROUP_END(n2niu) | |
405 | ||
406 | #ifdef CONFIG_VERSION_TEST | |
407 | /* | |
408 | * Test API group. Here to enable debugging changes to | |
409 | * the set_version/get_version code, and/or to the table | |
410 | * structure. | |
411 | */ | |
412 | GROUP_BEGIN(test, 0x400) ! API group index #12 | |
413 | GROUP_MAJOR_ENTRY(test, 1, 2) | |
414 | GROUP_MINOR_ENTRY(test_1_0) | |
415 | GROUP_MINOR_ENTRY(test_1_1) | |
416 | GROUP_MINOR_ENTRY(test_1_2) | |
417 | GROUP_MINOR_END(test_1) | |
418 | GROUP_MAJOR_ENTRY(test, 2, 2) | |
419 | GROUP_MINOR_ENTRY(test_2_0) | |
420 | GROUP_MINOR_ENTRY(test_2_1) | |
421 | GROUP_MINOR_ENTRY(test_2_2) | |
422 | GROUP_MINOR_END(test_2) | |
423 | GROUP_MAJOR_ENTRY(test, 3, 0) | |
424 | GROUP_MINOR_ENTRY(test_3_0) | |
425 | GROUP_MINOR_END(test_3) | |
426 | GROUP_MAJOR_END(test) | |
427 | ||
428 | GROUP_HCALL_TABLE(test_1_0) | |
429 | GROUP_HCALL_ENTRY(0xe0, hcall_version_test_1_0) | |
430 | GROUP_HCALL_TABLE(test_1_1) | |
431 | GROUP_HCALL_ENTRY(0xe1, hcall_version_test_1_1) | |
432 | GROUP_HCALL_TABLE(test_1_2) | |
433 | GROUP_HCALL_ENTRY(0xe2, hcall_version_test_1_2) | |
434 | GROUP_HCALL_END(test_1) | |
435 | GROUP_HCALL_TABLE(test_2_0) | |
436 | GROUP_HCALL_ENTRY(0xe0, hcall_version_test_2_0) | |
437 | GROUP_HCALL_TABLE(test_2_1) | |
438 | GROUP_HCALL_ENTRY(0xe3, hcall_version_test_2_1) | |
439 | GROUP_HCALL_TABLE(test_2_2) | |
440 | GROUP_HCALL_ENTRY(0xe1, hcall_version_test_2_2) | |
441 | GROUP_HCALL_END(test_2) | |
442 | GROUP_HCALL_TABLE(test_3_0) | |
443 | GROUP_HCALL_ENTRY(0xe3, hcall_version_test_3_0) | |
444 | GROUP_HCALL_END(test_3) | |
445 | GROUP_END(test) | |
446 | #endif | |
447 | ||
448 | /* | |
449 | * You can add new groups here. Remember to update | |
450 | * NUM_API_GROUPS. | |
451 | */ | |
452 | ||
453 | /* End of API groups - delete this and be sorry */ | |
454 | .xword 0 | |
455 | SET_SIZE(hcall_api_group_map) |