1*aad94166Spalle /* $NetBSD: hypervisor.h,v 1.8 2021/07/03 19:18:55 palle Exp $ */ 2fbadee00Spalle /* $OpenBSD: hypervisor.h,v 1.14 2011/06/26 17:23:46 kettenis Exp $ */ 3fbadee00Spalle 4fbadee00Spalle /* 5fbadee00Spalle * Copyright (c) 2008 Mark Kettenis 6fbadee00Spalle * 7fbadee00Spalle * Permission to use, copy, modify, and distribute this software for any 8fbadee00Spalle * purpose with or without fee is hereby granted, provided that the above 9fbadee00Spalle * copyright notice and this permission notice appear in all copies. 10fbadee00Spalle * 11fbadee00Spalle * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12fbadee00Spalle * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13fbadee00Spalle * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14fbadee00Spalle * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15fbadee00Spalle * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16fbadee00Spalle * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 17fbadee00Spalle * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18fbadee00Spalle */ 19fbadee00Spalle 202fd31a2cSpalle #ifndef _HYPERVISOR_H_ 212fd31a2cSpalle #define _HYPERVISOR_H_ 222fd31a2cSpalle 23fbadee00Spalle /* 24fbadee00Spalle * UltraSPARC Hypervisor API. 25fbadee00Spalle */ 26fbadee00Spalle 27fbadee00Spalle /* 28328930aeSpalle * FAST_TRAP function numbers 29328930aeSpalle */ 30328930aeSpalle 31328930aeSpalle #define FT_MMU_MAP_PERM_ADDR 0x25 32328930aeSpalle 33328930aeSpalle /* 34fbadee00Spalle * API versioning 35fbadee00Spalle */ 36fbadee00Spalle 373b6687aeSpalle #ifndef _LOCORE 38fbadee00Spalle int64_t hv_api_get_version(uint64_t api_group, 39661f65cfSpalle uint64_t *major_number, 40661f65cfSpalle uint64_t *minor_number); 41661f65cfSpalle int64_t hv_api_set_version(uint64_t api_group, 42661f65cfSpalle uint64_t major_number, 43661f65cfSpalle uint64_t req_minor_number, 44661f65cfSpalle uint64_t* actual_minor_number); 45661f65cfSpalle #define HV_API_GROUP_INTERRUPT 0x002 463b6687aeSpalle #endif 47fbadee00Spalle /* 48fbadee00Spalle * Domain services 49fbadee00Spalle */ 50fbadee00Spalle 513b6687aeSpalle #ifndef _LOCORE 52fbadee00Spalle int64_t hv_mach_desc(paddr_t buffer, psize_t *length); 533b6687aeSpalle #endif 54fbadee00Spalle 55fbadee00Spalle /* 56fbadee00Spalle * CPU services 57fbadee00Spalle */ 58fbadee00Spalle 593b6687aeSpalle #ifndef _LOCORE 60fbadee00Spalle void hv_cpu_yield(void); 61fbadee00Spalle int64_t hv_cpu_qconf(uint64_t queue, uint64_t base, uint64_t nentries); 623b6687aeSpalle #endif 63fbadee00Spalle 64fbadee00Spalle #define CPU_MONDO_QUEUE 0x3c 65fbadee00Spalle #define DEVICE_MONDO_QUEUE 0x3d 66fbadee00Spalle 673b6687aeSpalle #ifndef _LOCORE 68fbadee00Spalle int64_t hv_cpu_mondo_send(uint64_t ncpus, paddr_t cpulist, paddr_t data); 69fbadee00Spalle int64_t hv_cpu_myid(uint64_t *cpuid); 703b6687aeSpalle #endif 71fbadee00Spalle 72fbadee00Spalle /* 73fbadee00Spalle * MMU services 74fbadee00Spalle */ 75fbadee00Spalle 763b6687aeSpalle #ifndef _LOCORE 77fbadee00Spalle int64_t hv_mmu_demap_page(vaddr_t vaddr, uint64_t context, uint64_t flags); 78fbadee00Spalle int64_t hv_mmu_demap_ctx(uint64_t context, uint64_t flags); 79fbadee00Spalle int64_t hv_mmu_demap_all(uint64_t flags); 80fbadee00Spalle int64_t hv_mmu_map_perm_addr(vaddr_t vaddr, uint64_t tte, uint64_t flags); 81fbadee00Spalle int64_t hv_mmu_unmap_perm_addr(vaddr_t vaddr, uint64_t flags); 82fbadee00Spalle int64_t hv_mmu_map_addr(vaddr_t vaddr, uint64_t context, uint64_t tte, 83fbadee00Spalle uint64_t flags); 84fbadee00Spalle int64_t hv_mmu_unmap_addr(vaddr_t vaddr, uint64_t context, uint64_t flags); 853b6687aeSpalle #endif 86fbadee00Spalle 87fbadee00Spalle #define MAP_DTLB 0x1 88fbadee00Spalle #define MAP_ITLB 0x2 89fbadee00Spalle 903b6687aeSpalle #ifndef _LOCORE 91fbadee00Spalle struct tsb_desc { 92fbadee00Spalle uint16_t td_idxpgsz; 93fbadee00Spalle uint16_t td_assoc; 94fbadee00Spalle uint32_t td_size; 95fbadee00Spalle uint32_t td_ctxidx; 96fbadee00Spalle uint32_t td_pgsz; 97fbadee00Spalle paddr_t td_pa; 98fbadee00Spalle uint64_t td_reserved; 99fbadee00Spalle }; 100fbadee00Spalle 10188429e42Spalle struct mmufsa { 10288429e42Spalle uint64_t ift; /* instruction fault type */ 10388429e42Spalle uint64_t ifa; /* instruction fault address */ 10488429e42Spalle uint64_t ifc; /* instruction fault context */ 10588429e42Spalle uint64_t reserved1[5]; /* reserved */ 10688429e42Spalle uint64_t dft; /* data fault type */ 10788429e42Spalle uint64_t dfa; /* data fault address */ 10888429e42Spalle uint64_t dfc; /* data fault context */ 10988429e42Spalle uint64_t reserved2[5]; /* reserved */ 11088429e42Spalle }; 11188429e42Spalle 112fbadee00Spalle int64_t hv_mmu_tsb_ctx0(uint64_t ntsb, paddr_t tsbptr); 113fbadee00Spalle int64_t hv_mmu_tsb_ctxnon0(uint64_t ntsb, paddr_t tsbptr); 1143b6687aeSpalle #endif 115fbadee00Spalle 116fbadee00Spalle /* 117fbadee00Spalle * Cache and memory services 118fbadee00Spalle */ 119fbadee00Spalle 1203b6687aeSpalle #ifndef _LOCORE 121fbadee00Spalle int64_t hv_mem_scrub(paddr_t raddr, psize_t length); 122fbadee00Spalle int64_t hv_mem_sync(paddr_t raddr, psize_t length); 1233b6687aeSpalle #endif 124fbadee00Spalle 125fbadee00Spalle /* 126fbadee00Spalle * Device interrupt services 127fbadee00Spalle */ 128fbadee00Spalle 1293b6687aeSpalle #ifndef _LOCORE 130fbadee00Spalle int64_t hv_intr_devino_to_sysino(uint64_t devhandle, uint64_t devino, 131fbadee00Spalle uint64_t *sysino); 132fbadee00Spalle int64_t hv_intr_getenabled(uint64_t sysino, uint64_t *intr_enabled); 133fbadee00Spalle int64_t hv_intr_setenabled(uint64_t sysino, uint64_t intr_enabled); 134fbadee00Spalle int64_t hv_intr_getstate(uint64_t sysino, uint64_t *intr_state); 135fbadee00Spalle int64_t hv_intr_setstate(uint64_t sysino, uint64_t intr_state); 136fbadee00Spalle int64_t hv_intr_gettarget(uint64_t sysino, uint64_t *cpuid); 137fbadee00Spalle int64_t hv_intr_settarget(uint64_t sysino, uint64_t cpuid); 1383b6687aeSpalle #endif 139fbadee00Spalle 140fbadee00Spalle #define INTR_DISABLED 0 141fbadee00Spalle #define INTR_ENABLED 1 142fbadee00Spalle 143fbadee00Spalle #define INTR_IDLE 0 144fbadee00Spalle #define INTR_RECEIVED 1 145fbadee00Spalle #define INTR_DELIVERED 2 146fbadee00Spalle 1473b6687aeSpalle #ifndef _LOCORE 148fbadee00Spalle int64_t hv_vintr_getcookie(uint64_t devhandle, uint64_t devino, 149fbadee00Spalle uint64_t *cookie_value); 150fbadee00Spalle int64_t hv_vintr_setcookie(uint64_t devhandle, uint64_t devino, 151fbadee00Spalle uint64_t cookie_value); 152fbadee00Spalle int64_t hv_vintr_getenabled(uint64_t devhandle, uint64_t devino, 153fbadee00Spalle uint64_t *intr_enabled); 154fbadee00Spalle int64_t hv_vintr_setenabled(uint64_t devhandle, uint64_t devino, 155fbadee00Spalle uint64_t intr_enabled); 156fbadee00Spalle int64_t hv_vintr_getstate(uint64_t devhandle, uint64_t devino, 157fbadee00Spalle uint64_t *intr_state); 158fbadee00Spalle int64_t hv_vintr_setstate(uint64_t devhandle, uint64_t devino, 159fbadee00Spalle uint64_t intr_state); 160fbadee00Spalle int64_t hv_vintr_gettarget(uint64_t devhandle, uint64_t devino, 161fbadee00Spalle uint64_t *cpuid); 162fbadee00Spalle int64_t hv_vintr_settarget(uint64_t devhandle, uint64_t devino, 163fbadee00Spalle uint64_t cpuid); 1643b6687aeSpalle #endif 165fbadee00Spalle 166fbadee00Spalle /* 167fbadee00Spalle * Time of day services 168fbadee00Spalle */ 169fbadee00Spalle 1703b6687aeSpalle #ifndef _LOCORE 171fbadee00Spalle int64_t hv_tod_get(uint64_t *tod); 172fbadee00Spalle int64_t hv_tod_set(uint64_t tod); 1733b6687aeSpalle #endif 174fbadee00Spalle 175fbadee00Spalle /* 176fbadee00Spalle * Console services 177fbadee00Spalle */ 178fbadee00Spalle 1793b6687aeSpalle #ifndef _LOCORE 180fbadee00Spalle int64_t hv_cons_getchar(int64_t *ch); 181fbadee00Spalle int64_t hv_cons_putchar(int64_t ch); 182fbadee00Spalle int64_t hv_api_putchar(int64_t ch); 1833b6687aeSpalle #endif 184fbadee00Spalle 185fbadee00Spalle #define CONS_BREAK -1 186fbadee00Spalle #define CONS_HUP -2 187fbadee00Spalle 188fbadee00Spalle /* 189fbadee00Spalle * Domain state services 190fbadee00Spalle */ 191fbadee00Spalle 1923b6687aeSpalle #ifndef _LOCORE 193fbadee00Spalle int64_t hv_soft_state_set(uint64_t software_state, 194fbadee00Spalle paddr_t software_description_ptr); 1953b6687aeSpalle #endif 196fbadee00Spalle 197fbadee00Spalle #define SIS_NORMAL 0x1 198fbadee00Spalle #define SIS_TRANSITION 0x2 199fbadee00Spalle 200fbadee00Spalle /* 201fbadee00Spalle * PCI I/O services 202fbadee00Spalle */ 203fbadee00Spalle 2043b6687aeSpalle #ifndef _LOCORE 205fbadee00Spalle int64_t hv_pci_iommu_map(uint64_t devhandle, uint64_t tsbid, 206fbadee00Spalle uint64_t nttes, uint64_t io_attributes, paddr_t io_page_list_p, 207fbadee00Spalle uint64_t *nttes_mapped); 208fbadee00Spalle int64_t hv_pci_iommu_demap(uint64_t devhandle, uint64_t tsbid, 209fbadee00Spalle uint64_t nttes, uint64_t *nttes_demapped); 210fbadee00Spalle int64_t hv_pci_iommu_getmap(uint64_t devhandle, uint64_t tsbid, 211fbadee00Spalle uint64_t *io_attributes, paddr_t *r_addr); 212fbadee00Spalle int64_t hv_pci_iommu_getbypass(uint64_t devhandle, paddr_t r_addr, 213fbadee00Spalle uint64_t io_attributes, uint64_t *io_addr); 214fbadee00Spalle 215fbadee00Spalle int64_t hv_pci_config_get(uint64_t devhandle, uint64_t pci_device, 216fbadee00Spalle uint64_t pci_config_offset, uint64_t size, 217fbadee00Spalle uint64_t *error_flag, uint64_t *data); 218fbadee00Spalle int64_t hv_pci_config_put(uint64_t devhandle, uint64_t pci_device, 219fbadee00Spalle uint64_t pci_config_offset, uint64_t size, uint64_t data, 220fbadee00Spalle uint64_t *error_flag); 2213b6687aeSpalle #endif 222fbadee00Spalle 223fbadee00Spalle #define PCI_MAP_ATTR_READ 0x01 /* From memory */ 224fbadee00Spalle #define PCI_MAP_ATTR_WRITE 0x02 /* To memory */ 225fbadee00Spalle 226fbadee00Spalle /* 227fbadee00Spalle * PCI MSI services 228fbadee00Spalle */ 229fbadee00Spalle 2303b6687aeSpalle #ifndef _LOCORE 231fbadee00Spalle int64_t hv_pci_msiq_conf(uint64_t devhandle, uint64_t msiqid, 232fbadee00Spalle uint64_t r_addr, uint64_t nentries); 233fbadee00Spalle int64_t hv_pci_msiq_info(uint64_t devhandle, uint64_t msiqid, 234fbadee00Spalle uint64_t *r_addr, uint64_t *nentries); 235fbadee00Spalle 236fbadee00Spalle int64_t hv_pci_msiq_getvalid(uint64_t devhandle, uint64_t msiqid, 237fbadee00Spalle uint64_t *msiqvalid); 238fbadee00Spalle int64_t hv_pci_msiq_setvalid(uint64_t devhandle, uint64_t msiqid, 239fbadee00Spalle uint64_t msiqvalid); 2403b6687aeSpalle #endif 241fbadee00Spalle 242fbadee00Spalle #define PCI_MSIQ_INVALID 0 243fbadee00Spalle #define PCI_MSIQ_VALID 1 244fbadee00Spalle 2453b6687aeSpalle #ifndef _LOCORE 246fbadee00Spalle int64_t hv_pci_msiq_getstate(uint64_t devhandle, uint64_t msiqid, 247fbadee00Spalle uint64_t *msiqstate); 248fbadee00Spalle int64_t hv_pci_msiq_setstate(uint64_t devhandle, uint64_t msiqid, 249fbadee00Spalle uint64_t msiqstate); 2503b6687aeSpalle #endif 251fbadee00Spalle 252fbadee00Spalle #define PCI_MSIQSTATE_IDLE 0 253fbadee00Spalle #define PCI_MSIQSTATE_ERROR 1 254fbadee00Spalle 2553b6687aeSpalle #ifndef _LOCORE 256fbadee00Spalle int64_t hv_pci_msiq_gethead(uint64_t devhandle, uint64_t msiqid, 257fbadee00Spalle uint64_t *msiqhead); 258fbadee00Spalle int64_t hv_pci_msiq_sethead(uint64_t devhandle, uint64_t msiqid, 259fbadee00Spalle uint64_t msiqhead); 260fbadee00Spalle int64_t hv_pci_msiq_gettail(uint64_t devhandle, uint64_t msiqid, 261fbadee00Spalle uint64_t *msiqtail); 262fbadee00Spalle 263fbadee00Spalle int64_t hv_pci_msi_getvalid(uint64_t devhandle, uint64_t msinum, 264fbadee00Spalle uint64_t *msivalidstate); 265fbadee00Spalle int64_t hv_pci_msi_setvalid(uint64_t devhandle, uint64_t msinum, 266fbadee00Spalle uint64_t msivalidstate); 2673b6687aeSpalle #endif 268fbadee00Spalle 269fbadee00Spalle #define PCI_MSI_INVALID 0 270fbadee00Spalle #define PCI_MSI_VALID 1 271fbadee00Spalle 2723b6687aeSpalle #ifndef _LOCORE 273fbadee00Spalle int64_t hv_pci_msi_getmsiq(uint64_t devhandle, uint64_t msinum, 274fbadee00Spalle uint64_t *msiqid); 275fbadee00Spalle int64_t hv_pci_msi_setmsiq(uint64_t devhandle, uint64_t msinum, 276fbadee00Spalle uint64_t msitype, uint64_t msiqid); 277fbadee00Spalle 278fbadee00Spalle int64_t hv_pci_msi_getstate(uint64_t devhandle, uint64_t msinum, 279fbadee00Spalle uint64_t *msistate); 280fbadee00Spalle int64_t hv_pci_msi_setstate(uint64_t devhandle, uint64_t msinum, 281fbadee00Spalle uint64_t msistate); 2823b6687aeSpalle #endif 283fbadee00Spalle 284fbadee00Spalle #define PCI_MSISTATE_IDLE 0 285fbadee00Spalle #define PCI_MSISTATE_DELIVERED 1 286fbadee00Spalle 2873b6687aeSpalle #ifndef _LOCORE 288fbadee00Spalle int64_t hv_pci_msg_getmsiq(uint64_t devhandle, uint64_t msg, 289fbadee00Spalle uint64_t *msiqid); 290fbadee00Spalle int64_t hv_pci_msg_setmsiq(uint64_t devhandle, uint64_t msg, 291fbadee00Spalle uint64_t msiqid); 292fbadee00Spalle 293fbadee00Spalle int64_t hv_pci_msg_getvalid(uint64_t devhandle, uint64_t msg, 294fbadee00Spalle uint64_t *msgvalidstate); 295fbadee00Spalle int64_t hv_pci_msg_setvalid(uint64_t devhandle, uint64_t msg, 296fbadee00Spalle uint64_t msgvalidstate); 2973b6687aeSpalle #endif 298fbadee00Spalle 299fbadee00Spalle #define PCIE_MSG_INVALID 0 300fbadee00Spalle #define PCIE_MSG_VALID 1 301fbadee00Spalle 302fbadee00Spalle #define PCIE_PME_MSG 0x18 303fbadee00Spalle #define PCIE_PME_ACK_MSG 0x1b 304fbadee00Spalle #define PCIE_CORR_MSG 0x30 305fbadee00Spalle #define PCIE_NONFATAL_MSG 0x31 306fbadee00Spalle #define PCIE_FATAL_MSG 0x32 307fbadee00Spalle 308fbadee00Spalle /* 309fbadee00Spalle * Logical Domain Channel services 310fbadee00Spalle */ 311fbadee00Spalle 3123b6687aeSpalle #ifndef _LOCORE 313fbadee00Spalle int64_t hv_ldc_tx_qconf(uint64_t ldc_id, paddr_t base_raddr, 314fbadee00Spalle uint64_t nentries); 315fbadee00Spalle int64_t hv_ldc_tx_qinfo(uint64_t ldc_id, paddr_t *base_raddr, 316fbadee00Spalle uint64_t *nentries); 317fbadee00Spalle int64_t hv_ldc_tx_get_state(uint64_t ldc_id, uint64_t *head_offset, 318fbadee00Spalle uint64_t *tail_offset, uint64_t *channel_state); 319fbadee00Spalle int64_t hv_ldc_tx_set_qtail(uint64_t ldc_id, uint64_t tail_offset); 320fbadee00Spalle int64_t hv_ldc_rx_qconf(uint64_t ldc_id, paddr_t base_raddr, 321fbadee00Spalle uint64_t nentries); 322fbadee00Spalle int64_t hv_ldc_rx_qinfo(uint64_t ldc_id, paddr_t *base_raddr, 323fbadee00Spalle uint64_t *nentries); 324fbadee00Spalle int64_t hv_ldc_rx_get_state(uint64_t ldc_id, uint64_t *head_offset, 325fbadee00Spalle uint64_t *tail_offset, uint64_t *channel_state); 326fbadee00Spalle int64_t hv_ldc_rx_set_qhead(uint64_t ldc_id, uint64_t head_offset); 3273b6687aeSpalle #endif 328fbadee00Spalle 329fbadee00Spalle #define LDC_CHANNEL_DOWN 0 330fbadee00Spalle #define LDC_CHANNEL_UP 1 331fbadee00Spalle #define LDC_CHANNEL_RESET 2 332fbadee00Spalle 3333b6687aeSpalle #ifndef _LOCORE 334fbadee00Spalle int64_t hv_ldc_set_map_table(uint64_t ldc_id, paddr_t base_raddr, 335fbadee00Spalle uint64_t nentries); 336fbadee00Spalle int64_t hv_ldc_get_map_table(uint64_t ldc_id, paddr_t *base_raddr, 337fbadee00Spalle uint64_t *nentries); 338fbadee00Spalle int64_t hv_ldc_copy(uint64_t ldc_id, uint64_t flags, uint64_t cookie, 339fbadee00Spalle paddr_t raddr, psize_t length, psize_t *ret_length); 3403b6687aeSpalle #endif 341fbadee00Spalle 342fbadee00Spalle #define LDC_COPY_IN 0 343fbadee00Spalle #define LDC_COPY_OUT 1 344fbadee00Spalle 3453b6687aeSpalle #ifndef _LOCORE 346fbadee00Spalle int64_t hv_ldc_mapin(uint64_t ldc_id, uint64_t cookie, paddr_t *raddr, 347fbadee00Spalle uint64_t *perms); 348fbadee00Spalle int64_t hv_ldc_unmap(paddr_t raddr, uint64_t *perms); 3493b6687aeSpalle #endif 350fbadee00Spalle 351fbadee00Spalle /* 352fbadee00Spalle * Cryptographic services 353fbadee00Spalle */ 354fbadee00Spalle 3553b6687aeSpalle #ifndef _LOCORE 356fbadee00Spalle int64_t hv_rng_get_diag_control(void); 357fbadee00Spalle int64_t hv_rng_ctl_read(paddr_t raddr, uint64_t *state, uint64_t *delta); 358fbadee00Spalle int64_t hv_rng_ctl_write(paddr_t raddr, uint64_t state, uint64_t timeout, 359fbadee00Spalle uint64_t *delta); 3603b6687aeSpalle #endif 361fbadee00Spalle 362fbadee00Spalle #define RNG_STATE_UNCONFIGURED 0 363fbadee00Spalle #define RNG_STATE_CONFIGURED 1 364fbadee00Spalle #define RNG_STATE_HEALTHCHECK 2 365fbadee00Spalle #define RNG_STATE_ERROR 3 366fbadee00Spalle 3673b6687aeSpalle #ifndef _LOCORE 368fbadee00Spalle int64_t hv_rng_data_read_diag(paddr_t raddr, uint64_t size, uint64_t *delta); 369fbadee00Spalle int64_t hv_rng_data_read(paddr_t raddr, uint64_t *delta); 3703b6687aeSpalle #endif 371fbadee00Spalle 372fbadee00Spalle /* 373fbadee00Spalle * Error codes 374fbadee00Spalle */ 375fbadee00Spalle 376fbadee00Spalle #define H_EOK 0 377fbadee00Spalle #define H_ENOCPU 1 378fbadee00Spalle #define H_ENORADDR 2 379fbadee00Spalle #define H_ENOINTR 3 380fbadee00Spalle #define H_EBADPGSZ 4 381fbadee00Spalle #define H_EBADTSB 5 382fbadee00Spalle #define H_EINVAL 6 383fbadee00Spalle #define H_EBADTRAP 7 384fbadee00Spalle #define H_EBADALIGN 8 385fbadee00Spalle #define H_EWOULDBLOCK 9 386fbadee00Spalle #define H_ENOACCESS 10 387fbadee00Spalle #define H_EIO 11 388fbadee00Spalle #define H_ECPUERROR 12 389fbadee00Spalle #define H_ENOTSUPPORTED 13 390fbadee00Spalle #define H_ENOMAP 14 391fbadee00Spalle #define H_ETOOMANY 15 392fbadee00Spalle #define H_ECHANNEL 16 3932fd31a2cSpalle 394*aad94166Spalle #ifndef _LOCORE 395*aad94166Spalle extern uint64_t sun4v_group_interrupt_major; 396*aad94166Spalle extern uint64_t sun4v_group_sdio_major; 397*aad94166Spalle 398*aad94166Spalle int64_t sun4v_intr_devino_to_sysino(uint64_t, uint64_t, uint64_t *); 399*aad94166Spalle int64_t sun4v_intr_setcookie(uint64_t, uint64_t, uint64_t); 400*aad94166Spalle int64_t sun4v_intr_setenabled(uint64_t, uint64_t, uint64_t); 401*aad94166Spalle int64_t sun4v_intr_setstate(uint64_t, uint64_t, uint64_t); 402*aad94166Spalle int64_t sun4v_intr_settarget(uint64_t, uint64_t, uint64_t); 403*aad94166Spalle #endif 404*aad94166Spalle 4052fd31a2cSpalle #endif /* _HYPERVISOR_H_ */ 406