diff options
author | kmacy <kmacy@FreeBSD.org> | 2006-11-24 05:27:49 +0000 |
---|---|---|
committer | kmacy <kmacy@FreeBSD.org> | 2006-11-24 05:27:49 +0000 |
commit | 2dc265a00d8f29127772b66853fa080fa43569d1 (patch) | |
tree | 881314c3a1c3db96ea91e750b1e96c38a8b7ab12 /sys/sun4v/include/hv_api.h | |
parent | d863ef25a608e0aa0ab758213d9aa6716e4605d1 (diff) | |
download | FreeBSD-src-2dc265a00d8f29127772b66853fa080fa43569d1.zip FreeBSD-src-2dc265a00d8f29127772b66853fa080fa43569d1.tar.gz |
- Comment most of the remaining hypercalls in hcall.S
- implement hypercalls returning a single value
- start fixing the fallout of the recent changes needed to get
the kernel compiling again
Diffstat (limited to 'sys/sun4v/include/hv_api.h')
-rw-r--r-- | sys/sun4v/include/hv_api.h | 52 |
1 files changed, 42 insertions, 10 deletions
diff --git a/sys/sun4v/include/hv_api.h b/sys/sun4v/include/hv_api.h index 55d7bf6..846225d 100644 --- a/sys/sun4v/include/hv_api.h +++ b/sys/sun4v/include/hv_api.h @@ -34,6 +34,20 @@ typedef uint64_t pci_device_t; typedef uint32_t pci_config_offset_t; typedef uint8_t pci_config_size_t; +typedef uint64_t tsbid_t; +typedef uint32_t pages_t; +typedef enum io_attributes { + PCI_MAP_ATTR_READ = (uint32_t)0x01, + PCI_MAP_ATTR_WRITE = (uint32_t)0x02, +} io_attributes_t; +typedef enum io_sync_direction { + IO_SYNC_DEVICE = (uint32_t)0x01, + IO_SYNC_CPU = (uint32_t)0x02, +} io_sync_direction_t; +typedef uint64_t io_page_list_t; +typedef uint64_t r_addr_t; +typedef uint64_t io_addr_t; + /* * Section 10 Domain Services */ @@ -62,8 +76,8 @@ typedef struct hv_tsb_info { } hv_tsb_info_t; -extern uint64_t hv_tsb_ctx0(uint64_t, uint64_t); -extern uint64_t hv_tsb_ctxnon0(uint64_t, uint64_t); +extern uint64_t hv_mmu_tsb_ctx0(uint64_t, uint64_t); +extern uint64_t hv_mmu_tsb_ctxnon0(uint64_t, uint64_t); /* * Section 13 Cache and Memory Services @@ -137,14 +151,14 @@ typedef struct ldc_state_info { #define LDC_CHANNEL_DOWN 0 #define LDC_CHANNEL_UP 1 -extern uint64_t hvio_ldc_tx_qconf(uint64_t ldc_id, uint64_t base_raddr, uint64_t nentries); -extern uint64_t hvio_ldc_tx_qinfo(uint64_t ldc_id, uint64_t *base_raddr, uint64_t *nentries); -extern uint64_t hvio_ldc_tx_get_state(uint64_t ldc_id, ldc_state_info_t *info); -extern uint64_t hvio_ldc_tx_set_qtail(uint64_t ldc_id, uint64_t tail_offset); -extern uint64_t hvio_ldc_rx_get_state(uint64_t ldc_id, ldc_state_info_t *info); -extern uint64_t hvio_ldc_rx_qconf(uint64_t ldc_id, uint64_t base_raddr, uint64_t nentries); -extern uint64_t hvio_ldc_rx_qinfo(uint64_t ldc_id, uint64_t *base_raddr, uint64_t *nentries); -extern uint64_t hvio_ldc_rx_set_qhead(uint64_t ldc_id, uint64_t head_offset); +extern uint64_t hv_ldc_tx_qconf(uint64_t ldc_id, uint64_t base_raddr, uint64_t nentries); +extern uint64_t hv_ldc_tx_qinfo(uint64_t ldc_id, uint64_t *base_raddr, uint64_t *nentries); +extern uint64_t hv_ldc_tx_get_state(uint64_t ldc_id, ldc_state_info_t *info); +extern uint64_t hv_ldc_tx_set_qtail(uint64_t ldc_id, uint64_t tail_offset); +extern uint64_t hv_ldc_rx_get_state(uint64_t ldc_id, ldc_state_info_t *info); +extern uint64_t hv_ldc_rx_qconf(uint64_t ldc_id, uint64_t base_raddr, uint64_t nentries); +extern uint64_t hv_ldc_rx_qinfo(uint64_t ldc_id, uint64_t *base_raddr, uint64_t *nentries); +extern uint64_t hv_ldc_rx_set_qhead(uint64_t ldc_id, uint64_t head_offset); /* @@ -152,6 +166,22 @@ extern uint64_t hvio_ldc_rx_set_qhead(uint64_t ldc_id, uint64_t head_offset); * */ +extern uint64_t hv_pci_iommu_map(devhandle_t dh, uint64_t tsbid, uint64_t nttes, uint64_t io_attributes, + vm_paddr_t io_page_list, pages_t *nttes_mapped); +extern uint64_t hv_pci_iommu_demap(devhandle_t dh, uint64_t tsbid, uint64_t nttes, pages_t *nttes_demapped); +extern uint64_t hv_pci_iommu_getmap(devhandle_t dh, uint64_t tsbid, uint64_t nttes, uint64_t *io_attributes, + vm_paddr_t *ra); +extern uint64_t hv_pci_iommu_getbypass(devhandle_t dh, vm_paddr_t ra, uint64_t io_attributes, uint64_t *io_addr); +extern uint64_t hv_pci_config_get(devhandle_t dh, uint64_t pci_device, uint64_t pci_config_offset, uint64_t size, + uint64_t *error, uint64_t *data); +extern uint64_t hv_pci_config_put(devhandle_t dh, uint64_t pci_device, uint64_t pci_config_offset, uint64_t size, + uint64_t data, uint64_t *error_flag); +extern uint64_t hv_pci_peek(devhandle_t dh, vm_paddr_t ra, uint64_t size, uint64_t *error_flag, uint64_t *data); +extern uint64_t hv_pci_poke(devhandle_t dh, vm_paddr_t ra, uint64_t size, uint64_t data, uint64_t pci_device, + uint64_t *error_flag); +extern uint64_t hv_pci_dma_sync(devhandle_t dh, vm_paddr_t ra, uint64_t size, uint64_t io_sync_direction, + uint64_t *nsynced); + /* * Section 21 MSI Services @@ -175,3 +205,5 @@ extern void hv_magic_trap_on(void); extern void hv_magic_trap_off(void); extern int hv_sim_read(uint64_t offset, vm_paddr_t buffer_ra, uint64_t size); extern int hv_sim_write(uint64_t offset, vm_paddr_t buffer_ra, uint64_t size); + +#endif /* _MACHINE_HV_API_H */ |