summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorkmacy <kmacy@FreeBSD.org>2006-11-23 21:22:06 +0000
committerkmacy <kmacy@FreeBSD.org>2006-11-23 21:22:06 +0000
commitabe656e669ad85b8b95363d561a3a7e0fceed535 (patch)
treee01aed0cbfbacd20155b311f6afba830e69bfdba /sys
parentc784eb28fd564165eec1c920c5ea555324910901 (diff)
downloadFreeBSD-src-abe656e669ad85b8b95363d561a3a7e0fceed535.zip
FreeBSD-src-abe656e669ad85b8b95363d561a3a7e0fceed535.tar.gz
Remove system critical files with CDDL origin
with the plan being to create clean room versions
Diffstat (limited to 'sys')
-rw-r--r--sys/sun4v/include/hypervisor_api.h157
-rw-r--r--sys/sun4v/sun4v/hcall.S1269
2 files changed, 0 insertions, 1426 deletions
diff --git a/sys/sun4v/include/hypervisor_api.h b/sys/sun4v/include/hypervisor_api.h
deleted file mode 100644
index 2102bf5..0000000
--- a/sys/sun4v/include/hypervisor_api.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_HYPERVISOR_API_H
-#define _MACHINE_HYPERVISOR_API_H
-
-#include <machine/hypervisorvar.h>
-
-#ifndef _ASM
-
-typedef uint64_t devhandle_t;
-typedef uint64_t pci_device_t;
-typedef uint32_t pci_config_offset_t;
-typedef uint8_t pci_config_size_t;
-typedef union pci_cfg_data {
- uint8_t b;
- uint16_t w;
- uint32_t dw;
- uint64_t qw;
-} pci_cfg_data_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;
-
-typedef struct trap_trace_entry {
- uint8_t tte_type; /* Hypervisor or guest entry. */
- uint8_t tte_hpstat; /* Hyper-privileged state. */
- uint8_t tte_tl; /* Trap level. */
- uint8_t tte_gl; /* Global register level. */
- uint16_t tte_tt; /* Trap type.*/
- uint16_t tte_tag; /* Extended trap identifier. */
- uint64_t tte_tstate; /* Trap state. */
- uint64_t tte_tick; /* Tick. */
- uint64_t tte_tpc; /* Trap PC. */
- uint64_t tte_f1; /* Entry specific. */
- uint64_t tte_f2; /* Entry specific. */
- uint64_t tte_f3; /* Entry specific. */
- uint64_t tte_f4; /* Entry specific. */
-} trap_trace_entry_t;
-
-typedef struct ldc_state_info {
- uint64_t lsi_head_offset;
- uint64_t lsi_tail_offset;
- uint64_t lse_channel_state;
-} ldc_state_info_t;
-
-#define LDC_CHANNEL_DOWN 0
-#define LDC_CHANNEL_UP 1
-
-extern uint64_t hv_mmu_map_perm_addr(void *, int, uint64_t, int);
-extern uint64_t hv_mmu_unmap_perm_addr(void *, int, int);
-extern uint64_t hv_set_ctx0(uint64_t, uint64_t);
-extern uint64_t hv_set_ctxnon0(uint64_t, uint64_t);
-#ifdef SET_MMU_STATS
-extern uint64_t hv_mmu_set_stat_area(uint64_t, uint64_t);
-#endif /* SET_MMU_STATS */
-
-extern uint64_t hv_cpu_qconf(int queue, uint64_t paddr, int size);
-extern uint64_t hv_cpu_mondo_send(int n, vm_paddr_t cpu_list_ra);
-extern uint64_t hv_cpu_yield(void);
-
-extern uint64_t hv_cpu_state(uint64_t cpuid, uint64_t *cpu_state);
-extern uint64_t hv_mem_scrub(uint64_t real_addr, uint64_t length,
- uint64_t *scrubbed_len);
-extern uint64_t hv_mem_sync(uint64_t real_addr, uint64_t length,
- uint64_t *flushed_len);
-
-extern uint64_t hv_service_recv(uint64_t s_id, uint64_t buf_pa,
- uint64_t size, uint64_t *recv_bytes);
-extern uint64_t hv_service_send(uint64_t s_id, uint64_t buf_pa,
- uint64_t size, uint64_t *send_bytes);
-extern uint64_t hv_service_getstatus(uint64_t s_id, uint64_t *vreg);
-extern uint64_t hv_service_setstatus(uint64_t s_id, uint64_t bits);
-extern uint64_t hv_service_clrstatus(uint64_t s_id, uint64_t bits);
-
-extern uint64_t hv_mach_desc(uint64_t buffer_ra, uint64_t *buffer_sizep);
-extern uint64_t hv_mach_watchdog(uint64_t timeout, uint64_t *time_remaining);
-
-extern uint64_t hv_ttrace_buf_info(uint64_t *, uint64_t *);
-extern uint64_t hv_ttrace_buf_conf(uint64_t, uint64_t, uint64_t *);
-extern uint64_t hv_ttrace_enable(uint64_t, uint64_t *);
-extern uint64_t hv_ttrace_freeze(uint64_t, uint64_t *);
-extern uint64_t hv_ttrace_addentry(uint64_t, uint64_t, uint64_t, uint64_t, uint64_t);
-extern uint64_t hv_dump_buf_update(uint64_t, uint64_t, uint64_t *);
-
-extern int64_t hv_cnputchar(uint8_t);
-extern int64_t hv_cngetchar(uint8_t *);
-extern int64_t hv_cnwrite(uint64_t buf_raddr, uint64_t size, uint64_t *nwritten);
-extern int64_t hv_cnread(uint64_t buf_raddr, uint64_t size, uint64_t *nread);
-
-extern void hv_cnputs(char *);
-
-extern uint64_t hv_tod_get(uint64_t *seconds);
-extern uint64_t hv_tod_set(uint64_t);
-
-extern uint64_t hvio_intr_devino_to_sysino(uint64_t dev_hdl, uint32_t devino,
- uint64_t *sysino);
-extern uint64_t hvio_intr_getvalid(uint64_t sysino,
- int *intr_valid_state);
-extern uint64_t hvio_intr_setvalid(uint64_t sysino,
- int intr_valid_state);
-extern uint64_t hvio_intr_getstate(uint64_t sysino,
- int *intr_state);
-extern uint64_t hvio_intr_setstate(uint64_t sysino, int intr_state);
-extern uint64_t hvio_intr_gettarget(uint64_t sysino, uint32_t *cpuid);
-extern uint64_t hvio_intr_settarget(uint64_t sysino, uint32_t cpuid);
-extern uint64_t hvio_peek(devhandle_t dev_hdl, uint64_t r_addr, uint64_t size,
- uint32_t *err_flag, uint64_t *data);
-extern uint64_t hvio_poke(devhandle_t dev_hdl, uint64_t r_addr, uint64_t size,
- uint64_t data, uint64_t pcidev, uint32_t *err_flag);
-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 hvio_config_get(devhandle_t dev_hdl, pci_device_t pci_device,
- pci_config_offset_t off, pci_config_size_t size, pci_cfg_data_t *data);
-extern uint64_t hvio_config_put(devhandle_t dev_hdl, pci_device_t pci_device,
- pci_config_offset_t off, pci_config_size_t size,
- pci_cfg_data_t data);
-extern uint64_t hvio_iommu_map(devhandle_t dev_hdl, tsbid_t tsbid,
- pages_t pages, io_attributes_t io_attributes,
- io_page_list_t *io_page_list_p,
- pages_t *pages_mapped);
-extern uint64_t hvio_iommu_demap(devhandle_t dev_hdl, tsbid_t tsbid,
- pages_t pages, pages_t *pages_demapped);
-extern uint64_t hvio_iommu_getmap(devhandle_t dev_hdl, tsbid_t tsbid,
- io_attributes_t *attributes_p, r_addr_t *r_addr_p);
-extern uint64_t hvio_iommu_getbypass(devhandle_t dev_hdl, r_addr_t ra,
- io_attributes_t io_attributes,
- io_addr_t *io_addr_p);
-extern uint64_t hvio_dma_sync(devhandle_t dev_hdl, r_addr_t ra,
- size_t num_bytes, uint64_t io_sync_direction,
- size_t *bytes_synched);
-
-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
-
-#endif /* _MACHINE_HYPERVISOR_API_H */
diff --git a/sys/sun4v/sun4v/hcall.S b/sys/sun4v/sun4v/hcall.S
deleted file mode 100644
index 427c119..0000000
--- a/sys/sun4v/sun4v/hcall.S
+++ /dev/null
@@ -1,1269 +0,0 @@
-
-/*
- * Hypervisor calls
- */
-#define _ASM
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$")
-
-#include <machine/asi.h>
-#include <machine/asmacros.h>
-#include <machine/hypervisor_api.h>
-#include <machine/pstate.h>
-
-#include "assym.s"
-
-/*
- * %o0 - character
- */
-ENTRY(hv_cnputchar)
- mov CONS_PUTCHAR, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_cnputchar)
-
-/*
- * %o0 pointer to character buffer
- * return values:
- * 0 success
- * hv_errno failure
- */
-ENTRY(hv_cngetchar)
- mov %o0, %o2
- mov CONS_GETCHAR, %o5
- ta FAST_TRAP
- brnz,a %o0, 1f ! failure, just return error
- mov 1, %o0
-
- cmp %o1, H_BREAK
- be 1f
- mov %o1, %o0
-
- cmp %o1, H_HUP
- be 1f
- mov %o1, %o0
-
- stb %o1, [%o2] ! success, save character and return 0
- mov 0, %o0
-1:
- retl
- nop
-END(hv_cngetchar)
-
-/*
- * write characters in raddr to console
- * arg0 raddr (%o0)
- * arg1 size (%o1)
- *
- * ret0 status (%o0)
- * ret1 char written (%o1)
- *
- */
-ENTRY(hv_cnwrite)
- mov %o2, %o3
- mov CONS_WRITE, %o5
- ta FAST_TRAP
- brnz,a %o0, 1f ! failure, just return error
- mov 1, %o0
- stx %o1, [%o3]
-1: retl
- nop
-END(hv_cnwrite)
-
-/*
- * read up to size characters from console in to raddr
- * arg0 raddr (%o0)
- * arg1 size
- *
- * ret0 status (%o0)
- * ret1 char written (%o1)
- *
- */
-ENTRY(hv_cnread)
- mov %o2, %o3
- mov CONS_READ, %o5
- ta FAST_TRAP
- brnz,a %o0, 1f ! failure, just return error
- mov 1, %o0
-
- cmp %o1, H_BREAK
- be 1f
- mov %o1, %o0
-
- cmp %o1, H_HUP
- be 1f
- mov %o1, %o0
-
- stx %o1, [%o3]
-1: retl
- nop
-END(hv_cnread)
-
-ENTRY(hv_tod_get)
- mov %o0, %o4
- mov TOD_GET, %o5
- ta FAST_TRAP
- retl
- stx %o1, [%o4]
-END(hv_tod_get)
-
-ENTRY(hv_tod_set)
- mov TOD_SET, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_tod_set)
-
-/*
- * Map permanent address
- * arg0 vaddr (%o0)
- * arg1 context (%o1)
- * arg2 tte (%o2)
- * arg3 flags (%o3) 0x1=d 0x2=i
- */
-ENTRY(hv_mmu_map_perm_addr)
- mov MAP_PERM_ADDR, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_mmu_map_perm_addr)
-
-/*
- * Unmap permanent address
- * arg0 vaddr (%o0)
- * arg1 context (%o1)
- * arg2 flags (%o2) 0x1=d 0x2=i
- */
-ENTRY(hv_mmu_unmap_perm_addr)
- mov UNMAP_PERM_ADDR, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_mmu_unmap_perm_addr)
-
-/*
- * Set TSB for context 0
- * arg0 ntsb_descriptor (%o0)
- * arg1 desc_ra (%o1)
- */
-ENTRY(hv_set_ctx0)
- mov MMU_TSB_CTX0, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_set_ctx0)
-
-/*
- * Set TSB for context non0
- * arg0 ntsb_descriptor (%o0)
- * arg1 desc_ra (%o1)
- */
-ENTRY(hv_set_ctxnon0)
- mov MMU_TSB_CTXNON0, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_set_ctxnon0)
-
-#ifdef SET_MMU_STATS
- /*
- * Returns old stat area on success
- */
-ENTRY(hv_mmu_set_stat_area)
- mov MMU_STAT_AREA, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_mmu_set_stat_area)
-#endif /* SET_MMU_STATS */
-
-/*
- * CPU Q Configure
- * arg0 queue (%o0)
- * arg1 Base address RA (%o1)
- * arg2 Size (%o2)
- */
-ENTRY(hv_cpu_qconf)
- mov CPU_QCONF, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_cpu_qconf)
-
-/*
- * CPU Mondo Send
- * arg0-1 cpulist (%o0, %o1)
- * arg2 data (%o2)
- *
- */
-ENTRY(hv_cpu_mondo_send)
- ldx [PCPU(MONDO_DATA_RA)], %o2
- mov HV_INTR_SEND, %o5
- ta FAST_TRAP
- retl
- membar #Sync
-END(hv_cpu_mondo_send)
-
-/*
- * configure ldc tx queue
- * arg0 ldc_id (%o0)
- * arg1 base_raddr (%o1)
- * arg2 nentries (%o2)
- *
- * ret0 status (%o0)
- *
- */
-ENTRY(hvio_ldc_tx_qconf)
- mov HVIO_LDC_TX_QCONF, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_ldc_tx_qconf)
-
-/*
- * return configuration info for ldc tx queue
- * arg0 ldc_id (%o0)
- *
- * ret0 status (%o0)
- * ret1 base_raddr (%o1)
- * ret2 nentries (%o2)
- *
- */
-ENTRY(hvio_ldc_tx_qinfo)
- mov %o1, %o3
- mov %o2, %o4
- mov HVIO_LDC_TX_QINFO, %o5
- ta FAST_TRAP
- brnz %o0, 1f
- nop
- stx %o1, [%o3]
- stx %o2, [%o4]
-1: retl
- nop
-END(hvio_ldc_tx_qinfo)
-
-/*
- * get the state of the ldc tx queue
- * arg0 ldc_id (%o0)
- *
- * ret0 status (%o0)
- * ret1 head_offset (%o1)
- * ret2 tail_offset (%o2)
- * ret3 channel_state (%o3)
- *
- */
-ENTRY(hvio_ldc_tx_get_state)
- mov %o1, %o4
- mov HVIO_LDC_TX_GET_STATE, %o5
- ta FAST_TRAP
- brnz %o0, 1f
- nop
- stx %o1, [%o4]
- stx %o2, [%o4 + 8]
- stx %o3, [%o4 + 16]
-1: retl
- nop
-END(hvio_ldc_tx_get_state)
-
-/*
- * update the tail pointer of the ldc tx queue
- * arg0 ldc_id (%o0)
- * arg1 tail_offset (%o1)
- *
- * ret0 status (%o0)
- *
- */
-ENTRY(hvio_ldc_tx_set_qtail)
- mov HVIO_LDC_TX_SET_QTAIL, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_ldc_tx_set_qtail)
-
-/*
- * configure ldc rx queue
- * arg0 ldc_id (%o0)
- * arg1 base_raddr (%o1)
- * arg2 nentries (%o2)
- *
- * ret0 status (%o0)
- *
- */
-ENTRY(hvio_ldc_rx_qconf)
- mov HVIO_LDC_RX_QCONF, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_ldc_rx_qconf)
-
-/*
- * return configuration info for ldc rx queue
- * arg0 ldc_id (%o0)
- *
- * ret0 status (%o0)
- * ret1 base_raddr (%o1)
- * ret2 nentries (%o2)
- *
- */
-ENTRY(hvio_ldc_rx_qinfo)
- mov %o1, %o3
- mov %o2, %o4
- mov HVIO_LDC_RX_QINFO, %o5
- ta FAST_TRAP
- brnz %o0, 1f
- nop
- stx %o1, [%o3]
- stx %o2, [%o4]
-1: retl
- nop
-END(hvio_ldc_rx_qinfo)
-
-/*
- * get the state of the ldc rx queue
- * arg0 ldc_id (%o0)
- *
- * ret0 status (%o0)
- * ret1 head_offset (%o1)
- * ret2 tail_offset (%o2)
- * ret3 channel_state (%o3)
- *
- */
-ENTRY(hvio_ldc_rx_get_state)
- mov %o1, %o4
- mov HVIO_LDC_RX_GET_STATE, %o5
- ta FAST_TRAP
- brnz %o0, 1f
- nop
- stx %o1, [%o4]
- stx %o2, [%o4 + 8]
- stx %o3, [%o4 + 16]
-1: retl
- nop
-END(hvio_ldc_rx_get_state)
-
-/*
- * update the head pointer of the ldc rx queue
- * arg0 ldc_id (%o0)
- * arg1 head_offset (%o1)
- *
- * ret0 status (%o0)
- *
- */
-ENTRY(hvio_ldc_rx_set_qhead)
- mov HVIO_LDC_RX_SET_QHEAD, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_ldc_rx_set_qhead)
-
-
-/*
- * arg0 - devhandle
- * arg1 - pci_device
- * arg2 - pci_config_offset
- * arg3 - pci_config_size
- *
- * ret0 - status
- * ret1 - error_flag
- * ret2 - pci_cfg_data
- */
-ENTRY(hvio_config_get)
- mov HVIO_CONFIG_GET, %o5
- ta FAST_TRAP
- brnz %o0, 1f
- movrnz %o1, -1, %o2
- brz,a %o1, 1f
- stuw %o2, [%o4]
-1: retl
- nop
-END(hvio_config_get)
-
-/*
- * arg0 - devhandle
- * arg1 - pci_device
- * arg2 - pci_config_offset
- * arg3 - pci_config_size
- * arg4 - pci_cfg_data
- *
- * ret0 - status
- * ret1 - error_flag
- */
-ENTRY(hvio_config_put)
- mov HVIO_CONFIG_PUT, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_config_put)
-
-/*
- * arg0 - devhandle
- * arg1 - devino
- *
- * ret0 - status
- * ret1 - sysino
- */
-ENTRY(hvio_intr_devino_to_sysino)
- mov HVIO_INTR_DEVINO2SYSINO, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stx %o1, [%o2]
-1: retl
- nop
-END(hvio_intr_devino_to_sysino)
-
-/*
- * arg0 - sysino
- *
- * ret0 - status
- * ret1 - intr_valid_state
- */
-ENTRY(hvio_intr_getvalid)
- mov %o1, %o2
- mov HVIO_INTR_GETENABLED, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stuw %o1, [%o2]
-1: retl
- nop
-END(hvio_intr_getvalid)
-
-/*
- * arg0 - sysino
- * arg1 - intr_valid_state
- *
- * ret0 - status
- */
-ENTRY(hvio_intr_setvalid)
- mov HVIO_INTR_SETENABLED, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_intr_setvalid)
-
-/*
- * arg0 - sysino
- *
- * ret0 - status
- * ret1 - intr_state
- */
-ENTRY(hvio_intr_getstate)
- mov %o1, %o2
- mov HVIO_INTR_GETSTATE, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stuw %o1, [%o2]
-1: retl
- nop
-END(hvio_intr_getstate)
-
-/*
- * arg0 - sysino
- * arg1 - intr_state
- *
- * ret0 - status
- */
-ENTRY(hvio_intr_setstate)
- mov HVIO_INTR_SETSTATE, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_intr_setstate)
-
-/*
- * arg0 - sysino
- *
- * ret0 - status
- * ret1 - cpu_id
- */
-ENTRY(hvio_intr_gettarget)
- mov %o1, %o2
- mov HVIO_INTR_GETTARGET, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stuw %o1, [%o2]
-1: retl
- nop
-END(hvio_intr_gettarget)
-
-/*
- * arg0 - sysino
- * arg1 - cpu_id
- *
- * ret0 - status
- */
-ENTRY(hvio_intr_settarget)
- mov HVIO_INTR_SETTARGET, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_intr_settarget)
-
-/*
- * arg0 - devhandle
- * arg1 - tsbid
- * arg2 - pages
- * arg3 - io_attributes
- * arg4 - io_page_list_p
- *
- * ret1 - pages_mapped
- */
-ENTRY(hvio_iommu_map)
- save %sp, -SA(MINFRAME64), %sp
- mov %i0, %o0
- mov %i1, %o1
- mov %i2, %o2
- mov %i3, %o3
- mov %i4, %o4
- mov HVIO_IOMMU_MAP, %o5
- ta FAST_TRAP
- brnz %o0, 1f
- mov %o0, %i0
- stuw %o1, [%i5]
-1:
- ret
- restore
-END(hvio_iommu_map)
-
-/*
- * arg0 - devhandle
- * arg1 - tsbid
- * arg2 - pages
- *
- * ret1 - pages_demapped
- */
-ENTRY(hvio_iommu_demap)
- mov HVIO_IOMMU_DEMAP, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stuw %o1, [%o3]
-1: retl
- nop
-END(hvio_iommu_demap)
-
-/*
- * arg0 - devhandle
- * arg1 - tsbid
- *
- *
- * ret0 - status
- * ret1 - io_attributes
- * ret2 - r_addr
- */
-ENTRY(hvio_iommu_getmap)
- mov %o2, %o4
- mov HVIO_IOMMU_GETMAP, %o5
- ta FAST_TRAP
- brnz %o0, 1f
- nop
- stx %o2, [%o3]
- st %o1, [%o4]
-1:
- retl
- nop
-END(hvio_iommu_getmap)
-
-/*
- * arg0 - devhandle
- * arg1 - r_addr
- * arg2 - io_attributes
- *
- *
- * ret0 - status
- * ret1 - io_addr
- */
-ENTRY(hvio_iommu_getbypass)
- mov HVIO_IOMMU_GETBYPASS, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stx %o1, [%o3]
-1: retl
- nop
-END(hvio_iommu_getbypass)
-
-/*
- * arg0 - devhandle
- * arg1 - r_addr
- * arg2 - size
- *
- * ret1 - error_flag
- * ret2 - data
- */
-ENTRY(hvio_peek)
- mov HVIO_PEEK, %o5
- ta FAST_TRAP
- brnz %o0, 1f
- nop
- stx %o2, [%o4]
- st %o1, [%o3]
-1:
- retl
- nop
-END(hvio_peek)
-
-/*
- * arg0 - devhandle
- * arg1 - r_addr
- * arg2 - sizes
- * arg3 - data
- * arg4 - r_addr2
- *
- * ret1 - error_flag
- */
-ENTRY(hvio_poke)
- save %sp, -SA(MINFRAME64), %sp
- mov %i0, %o0
- mov %i1, %o1
- mov %i2, %o2
- mov %i3, %o3
- mov %i4, %o4
- mov HVIO_POKE, %o5
- ta FAST_TRAP
- brnz %o0, 1f
- mov %o0, %i0
- stuw %o1, [%i5]
-1:
- ret
- restore
-END(hvio_poke)
-
-/*
- * arg0 - devhandle
- * arg1 - r_addr
- * arg2 - num_bytes
- * arg3 - io_sync_direction
- *
- * ret0 - status
- * ret1 - bytes_synched
- */
-ENTRY(hvio_dma_sync)
- mov HVIO_DMA_SYNC, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stx %o1, [%o4]
-1: retl
- nop
-END(hvio_dma_sync)
-
-/*
- * arg0 - devhandle
- * arg1 - msiq_id
- * arg2 - r_addr
- * arg3 - nentries
- *
- * ret0 - status
- */
-ENTRY(hvio_msiq_conf)
- mov HVIO_MSIQ_CONF, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_msiq_conf)
-
-/*
- * arg0 - devhandle
- * arg1 - msiq_id
- *
- * ret0 - status
- * ret1 - r_addr
- * ret1 - nentries
- */
-ENTRY(hvio_msiq_info)
- mov %o2, %o4
- mov HVIO_MSIQ_INFO, %o5
- ta FAST_TRAP
- brnz %o0, 1f
- nop
- stx %o1, [%o4]
- stuw %o2, [%o3]
-1: retl
- nop
-END(hvio_msiq_info)
-
-/*
- * arg0 - devhandle
- * arg1 - msiq_id
- *
- * ret0 - status
- * ret1 - msiq_valid_state
- */
-ENTRY(hvio_msiq_getvalid)
- mov HVIO_MSIQ_GETVALID, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stuw %o1, [%o2]
-1: retl
- nop
-END(hvio_msiq_getvalid)
-
-/*
- * arg0 - devhandle
- * arg1 - msiq_id
- * arg2 - msiq_valid_state
- *
- * ret0 - status
- */
-ENTRY(hvio_msiq_setvalid)
- mov HVIO_MSIQ_SETVALID, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_msiq_setvalid)
-
-/*
- * arg0 - devhandle
- * arg1 - msiq_id
- *
- * ret0 - status
- * ret1 - msiq_state
- */
-ENTRY(hvio_msiq_getstate)
- mov HVIO_MSIQ_GETSTATE, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stuw %o1, [%o2]
-1: retl
- nop
-END(hvio_msiq_getstate)
-
-/*
- * arg0 - devhandle
- * arg1 - msiq_id
- * arg2 - msiq_state
- *
- * ret0 - status
- */
-ENTRY(hvio_msiq_setstate)
- mov HVIO_MSIQ_SETSTATE, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_msiq_setstate)
-
-/*
- * arg0 - devhandle
- * arg1 - msiq_id
- *
- * ret0 - status
- * ret1 - msiq_head
- */
-ENTRY(hvio_msiq_gethead)
- mov HVIO_MSIQ_GETHEAD, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stx %o1, [%o2]
-1: retl
- nop
-END(hvio_msiq_gethead)
-
-/*
- * arg0 - devhandle
- * arg1 - msiq_id
- * arg2 - msiq_head
- *
- * ret0 - status
- */
-ENTRY(hvio_msiq_sethead)
- mov HVIO_MSIQ_SETHEAD, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_msiq_sethead)
-
-/*
- * arg0 - devhandle
- * arg1 - msiq_id
- *
- * ret0 - status
- * ret1 - msiq_tail
- */
-ENTRY(hvio_msiq_gettail)
- mov HVIO_MSIQ_GETTAIL, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stx %o1, [%o2]
-1: retl
- nop
-END(hvio_msiq_gettail)
-
-/*
- * arg0 - devhandle
- * arg1 - msi_num
- *
- * ret0 - status
- * ret1 - msiq_id
- */
-ENTRY(hvio_msi_getmsiq)
- mov HVIO_MSI_GETMSIQ, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stuw %o1, [%o2]
-1: retl
- nop
-END(hvio_msi_getmsiq)
-
-/*
- * arg0 - devhandle
- * arg1 - msi_num
- * arg2 - msiq_id
- * arg2 - msitype
- *
- * ret0 - status
- */
-ENTRY(hvio_msi_setmsiq)
- mov HVIO_MSI_SETMSIQ, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_msi_setmsiq)
-
-/*
- * arg0 - devhandle
- * arg1 - msi_num
- *
- * ret0 - status
- * ret1 - msi_valid_state
- */
-ENTRY(hvio_msi_getvalid)
- mov HVIO_MSI_GETVALID, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stuw %o1, [%o2]
-1: retl
- nop
-END(hvio_msi_getvalid)
-
-/*
- * arg0 - devhandle
- * arg1 - msi_num
- * arg2 - msi_valid_state
- *
- * ret0 - status
- */
-ENTRY(hvio_msi_setvalid)
- mov HVIO_MSI_SETVALID, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_msi_setvalid)
-
-/*
- * arg0 - devhandle
- * arg1 - msi_num
- *
- * ret0 - status
- * ret1 - msi_state
- */
-ENTRY(hvio_msi_getstate)
- mov HVIO_MSI_GETSTATE, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stuw %o1, [%o2]
-1: retl
- nop
-END(hvio_msi_getstate)
-
-/*
- * arg0 - devhandle
- * arg1 - msi_num
- * arg2 - msi_state
- *
- * ret0 - status
- */
-ENTRY(hvio_msi_setstate)
- mov HVIO_MSI_SETSTATE, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_msi_setstate)
-
-/*
- * arg0 - devhandle
- * arg1 - msg_type
- *
- * ret0 - status
- * ret1 - msiq_id
- */
-ENTRY(hvio_msg_getmsiq)
- mov HVIO_MSG_GETMSIQ, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stuw %o1, [%o2]
-1: retl
- nop
-END(hvio_msg_getmsiq)
-
-/*
- * arg0 - devhandle
- * arg1 - msg_type
- * arg2 - msiq_id
- *
- * ret0 - status
- */
-ENTRY(hvio_msg_setmsiq)
- mov HVIO_MSG_SETMSIQ, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_msg_setmsiq)
-
-/*
- * arg0 - devhandle
- * arg1 - msg_type
- *
- * ret0 - status
- * ret1 - msg_valid_state
- */
-ENTRY(hvio_msg_getvalid)
- mov HVIO_MSG_GETVALID, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stuw %o1, [%o2]
-1: retl
- nop
-END(hvio_msg_getvalid)
-
-/*
- * arg0 - devhandle
- * arg1 - msg_type
- * arg2 - msg_valid_state
- *
- * ret0 - status
- */
-ENTRY(hvio_msg_setvalid)
- mov HVIO_MSG_SETVALID, %o5
- ta FAST_TRAP
- retl
- nop
-END(hvio_msg_setvalid)
-
-/*
- * hv_cpu_yield(void)
- */
-ENTRY(hv_cpu_yield)
- mov HV_CPU_YIELD, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_cpu_yield)
-
-/*
- * hv_service_recv(uint64_t s_id, uint64_t buf_pa,
- * uint64_t size, uint64_t *recv_bytes);
- */
-ENTRY(hv_service_recv)
- save %sp, -SA(MINFRAME), %sp
- mov %i0, %o0
- mov %i1, %o1
- mov %i2, %o2
- mov %i3, %o3
- mov SVC_RECV, %o5
- ta FAST_TRAP
- brnz %o0, 1f
- mov %o0, %i0
- stx %o1, [%i3]
-1:
- ret
- restore
-END(hv_service_recv)
-
-/*
- * hv_service_send(uint64_t s_id, uint64_t buf_pa,
- * uint64_t size, uint64_t *recv_bytes);
- */
-ENTRY(hv_service_send)
- save %sp, -SA(MINFRAME), %sp
- mov %i0, %o0
- mov %i1, %o1
- mov %i2, %o2
- mov %i3, %o3
- mov SVC_SEND, %o5
- ta FAST_TRAP
- brnz %o0, 1f
- mov %o0, %i0
- stx %o1, [%i3]
-1:
- ret
- restore
-END(hv_service_send)
-
-/*
- * hv_service_getstatus(uint64_t s_id, uint64_t *vreg);
- */
-ENTRY(hv_service_getstatus)
- mov %o1, %o4 ! save datap
- mov SVC_GETSTATUS, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stx %o1, [%o4]
-1:
- retl
- nop
-END(hv_service_getstatus)
-
-/*
- * hv_service_setstatus(uint64_t s_id, uint64_t bits);
- */
-ENTRY(hv_service_setstatus)
- mov SVC_SETSTATUS, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_service_setstatus)
-
-/*
- * hv_service_clrstatus(uint64_t s_id, uint64_t bits);
- */
-ENTRY(hv_service_clrstatus)
- mov SVC_CLRSTATUS, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_service_clrstatus)
-
-/*
- * int hv_cpu_state(uint64_t cpuid, uint64_t *cpu_state);
- */
-ENTRY(hv_cpu_state)
- mov %o1, %o4 ! save datap
- mov HV_CPU_STATE, %o5
- ta FAST_TRAP
- brz,a %o0, 1f
- stx %o1, [%o4]
-1:
- retl
- nop
-END(hv_cpu_state)
-
-/*
- * HV state dump zone Configure
- * arg0 real adrs of dump buffer (%o0)
- * arg1 size of dump buffer (%o1)
- * ret0 status (%o0)
- * ret1 size of buffer on success and min size on EINVAL (%o1)
- * hv_dump_buf_update(uint64_t paddr, uint64_t size, uint64_t *ret_size)
- */
-ENTRY(hv_dump_buf_update)
- mov DUMP_BUF_UPDATE, %o5
- ta FAST_TRAP
- retl
- stx %o1, [%o2]
-END(hv_dump_buf_update)
-
-
-/*
- * For memory scrub
- * int hv_mem_scrub(uint64_t real_addr, uint64_t length,
- * uint64_t *scrubbed_len);
- * Return %o0 -- status
- * %o1 -- bytes scrubbed
- */
-ENTRY(hv_mem_scrub)
- mov %o2, %o4
- mov HV_MEM_SCRUB, %o5
- ta FAST_TRAP
- retl
- stx %o1, [%o4]
-END(hv_mem_scrub)
-
-/*
- * Flush ecache
- * int hv_mem_sync(uint64_t real_addr, uint64_t length,
- * uint64_t *flushed_len);
- * Return %o0 -- status
- * %o1 -- bytes flushed
- */
-ENTRY(hv_mem_sync)
- mov %o2, %o4
- mov HV_MEM_SYNC, %o5
- ta FAST_TRAP
- retl
- stx %o1, [%o4]
-END(hv_mem_sync)
-
-/*
- * TTRACE_BUF_CONF Configure
- * arg0 RA base of buffer (%o0)
- * arg1 buf size in no. of entries (%o1)
- * ret0 status (%o0)
- * ret1 minimum size in no. of entries on failure,
- * actual size in no. of entries on success (%o1)
- */
-ENTRY(hv_ttrace_buf_conf)
- mov TTRACE_BUF_CONF, %o5
- ta FAST_TRAP
- retl
- stx %o1, [%o2]
-END(hv_ttrace_buf_conf)
-
- /*
- * TTRACE_BUF_INFO
- * ret0 status (%o0)
- * ret1 RA base of buffer (%o1)
- * ret2 size in no. of entries (%o2)
- */
-ENTRY(hv_ttrace_buf_info)
- mov %o0, %o3
- mov %o1, %o4
- mov TTRACE_BUF_INFO, %o5
- ta FAST_TRAP
- stx %o1, [%o3]
- retl
- stx %o2, [%o4]
-END(hv_ttrace_buf_info)
-
-/*
- * TTRACE_ENABLE
- * arg0 enable/ disable (%o0)
- * ret0 status (%o0)
- * ret1 previous enable state (%o1)
- */
-ENTRY(hv_ttrace_enable)
- mov %o1, %o2
- mov TTRACE_ENABLE, %o5
- ta FAST_TRAP
- retl
- stx %o1, [%o2]
-END(hv_ttrace_enable)
-
-/*
- * TTRACE_FREEZE
- * arg0 enable/ freeze (%o0)
- * ret0 status (%o0)
- * ret1 previous freeze state (%o1)
-*/
-ENTRY(hv_ttrace_freeze)
- mov %o1, %o2
- mov TTRACE_FREEZE, %o5
- ta FAST_TRAP
- retl
- stx %o1, [%o2]
-END(hv_ttrace_freeze)
-
-/*
- * TTRACE_ADDENTRY
- * arg0 tag (16-bits) (%o0)
- * arg1 data word 0 (%o1)
- * arg2 data word 1 (%o2)
- * arg3 data word 2 (%o3)
- * arg4 data word 3 (%o4)
- * ret0 status (%o0)
-*/
-ENTRY(hv_ttrace_addentry)
- ta TTRACE_ADDENTRY
- retl
- nop
-END(hv_ttrace_addentry)
-
-/*
- * MACH_EXIT
- * arg0 exit code
- *
- */
-ENTRY(hv_mach_exit)
- mov HV_MACH_EXIT, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_mach_exit)
-
-/*
- * MACH_DESC
- * arg0 buffer real address
- * arg1 pointer to uint64_t for size of buffer
- *
- * ret0 status
- * ret1 return required size of buffer / returned data size
- *
- */
-ENTRY(hv_mach_desc)
- mov %o1, %o4 ! save datap
- ldx [%o1], %o1
- mov HV_MACH_DESC, %o5
- ta FAST_TRAP
- retl
- stx %o1, [%o4]
-END(hv_mach_desc)
-
-ENTRY(hv_mach_watchdog)
- mov %o1, %o2
- mov HV_MACH_SET_WATCHDOG, %o5
- ta FAST_TRAP
- brnz,pn %o0, 1f
- nop
- stx %o1, [%o2]
-1: retl
- nop
-END(hv_mach_watchdog)
-/*
- * hv_ncs_request(int cmd, uint64_t realaddr, size_t sz)
- */
-ENTRY(hv_ncs_request)
- mov HV_NCS_REQUEST, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_ncs_request)
-
-/*
- * hv_ra2pa(uint64_t ra)
- *
- * arg0 Real address to convert
- * ret0 Returned physical address or -1 on error
- */
-ENTRY(hv_ra2pa)
- mov HV_RA2PA, %o5
- ta FAST_TRAP
- cmp %o0, 0
- move %xcc, %o1, %o0
- movne %xcc, -1, %o0
- retl
- nop
-END(hv_ra2pa)
-
-/*
- * hv_hpriv(void *func, uint64_t arg1, uint64_t arg2, uint64_t arg3)
- *
- * arg0 OS function to call
- * arg1 First arg to OS function
- * arg2 Second arg to OS function
- * arg3 Third arg to OS function
- * ret0 Returned value from function
- */
-
-ENTRY(hv_hpriv)
- mov HV_HPRIV, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_hpriv)
-
-ENTRY(hv_magic_trap_on)
- ta 0x77
- retl
- nop
-END(hv_magic_trap_on)
-
-ENTRY(hv_magic_trap_off)
- ta 0x78
- retl
- nop
-END(hv_magic_trap_off)
-
-
-ENTRY(hv_sim_read)
- mov HVIO_SIM_READ, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_read)
-
-ENTRY(hv_sim_write)
- mov HVIO_SIM_WRITE, %o5
- ta FAST_TRAP
- retl
- nop
-END(hv_write)
-
-
OpenPOWER on IntegriCloud