Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / hypervisor / src / greatlakes / huron / src / hcall_groups.s
CommitLineData
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)