add interrupt cookie hypervisor functions

This commit is contained in:
Kip Macy 2006-11-26 04:37:49 +00:00
parent ca0fa71fde
commit 548d785ec5
3 changed files with 167 additions and 1 deletions

View File

@ -52,6 +52,7 @@ typedef uint64_t io_addr_t;
* Section 10 Domain Services
*/
extern void hv_mach_exit(uint64_t exit_code);
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);
@ -75,7 +76,7 @@ typedef struct hv_tsb_info {
uint16_t hti_assoc; /* associativity of TSB */
uint32_t hti_ntte; /* size of TSB in TTEs */
uint32_t hti_ctx_index; /* context index */
uint32_t hti_pgszs; /* page size bitmasx */
uint32_t hti_pgszs; /* page size bitmask */
uint64_t hti_ra; /* real address of TSB base */
uint64_t hti_rsvd; /* reserved */
} hv_tsb_info_t;
@ -102,6 +103,16 @@ extern uint64_t hv_intr_setstate(uint64_t sysino, int state);
extern uint64_t hv_intr_gettarget(uint64_t sysino, int *cpuid);
extern uint64_t hv_intr_settarget(uint64_t sysino, int cpuid);
extern uint64_t hv_vintr_getcookie(devhandle_t dh, uint64_t devino, uint64_t *cookie);
extern uint64_t hv_vintr_setcookie(devhandle_t dh, uint64_t devino, uint64_t cookie);
extern uint64_t hv_vintr_getenabled(devhandle_t dh, uint64_t devino, int *enabled);
extern uint64_t hv_vintr_setenabled(devhandle_t dh, uint64_t devino, int enabled);
extern uint64_t hv_vintr_getstate(devhandle_t dh, uint64_t devino, int *state);
extern uint64_t hv_vintr_setstate(devhandle_t dh, uint64_t devino, int state);
extern uint64_t hv_vintr_gettarget(devhandle_t dh, uint64_t devino, int *cpuid);
extern uint64_t hv_vintr_settarget(devhandle_t dh, uint64_t devino, int cpuid);
/*
* Section 15 Time of Day Services
*/

View File

@ -158,6 +158,16 @@
#define INTR_GETTARGET 0xa5
#define INTR_SETTARGET 0xa6
#define VINTR_GETCOOKIE 0xa7
#define VINTR_SETCOOKIE 0xa8
#define VINTR_GETENABLED 0xa9
#define VINTR_SETENABLED 0xaa
#define VINTR_GETSTATE 0xab
#define VINTR_SETSTATE 0xac
#define VINTR_GETTARGET 0xad
#define VINTR_SETTARGET 0xae
#define PCI_IOMMU_MAP 0xb0
#define PCI_IOMMU_DEMAP 0xb1
#define PCI_IOMMU_GETMAP 0xb2

View File

@ -768,6 +768,151 @@ ENTRY(hv_intr_settarget)
nop
END(hv_intr_settarget)
/*
* get the cookie value that will be delivered
* in word 0 of a dev_mondo packet to a guest
*
* arg0 devhandle (%o0)
* arg1 devino (%o1)
*
* ret0 status (%o0)
* ret1 cookie_value (%o1)
*
*/
ENTRY(hv_vintr_getcookie)
mov VINTR_GETCOOKIE, %o5
ta FAST_TRAP
retl
stx %o1, [%o2]
END(hv_vintr_getcookie)
/*
* set the cookie value that will be delivered
* in word 0 of a dev_mondo packet to a guest
*
* arg0 devhandle (%o0)
* arg1 devino (%o1)
* ret2 cookie_value (%o2)
*
* ret0 status (%o0)
*
*/
ENTRY(hv_vintr_setcookie)
mov VINTR_SETCOOKIE, %o5
ta FAST_TRAP
retl
nop
END(hv_vintr_setcookie)
/*
* get the enabled status of the interrupt
* defined by devino
*
* arg0 devhandle (%o0)
* arg1 devino (%o1)
*
* ret0 status (%o0)
* ret1 intr_enabled (%o1)
*
*/
ENTRY(hv_vintr_getenabled)
mov VINTR_GETENABLED, %o5
ta FAST_TRAP
retl
st %o1, [%o2]
END(hv_vintr_getenabled)
/*
* set the enabled status of the interrupt
* defined by devino
*
* arg0 devhandle (%o0)
* arg1 devino (%o1)
* arg2 intr_enabled (%o2)
*
* ret0 status (%o0)
*
*/
ENTRY(hv_vintr_setenabled)
mov VINTR_SETENABLED, %o5
ta FAST_TRAP
retl
nop
END(hv_vintr_setenabled)
/*
* get the current state of the interrupt
* defined by devino
*
* arg0 devhandle (%o0)
* arg1 devino (%o1)
*
* ret0 status (%o0)
* ret1 intr_state (%o1)
*
*/
ENTRY(hv_vintr_getstate)
mov VINTR_GETSTATE, %o5
ta FAST_TRAP
retl
st %o1, [%o2]
END(hv_vintr_getstate)
/*
* set the current state of the interrupt
* defined by devino
*
* arg0 devhandle (%o0)
* arg1 devino (%o1)
* arg2 intr_state (%o2)
*
* ret0 status (%o0)
*
*/
ENTRY(hv_vintr_setstate)
mov VINTR_SETSTATE, %o5
ta FAST_TRAP
retl
nop
END(hv_vintr_setstate)
/*
* get the cpuid that is the current target
* of the interrupt defined by devino
*
* arg0 devhandle (%o0)
* arg1 devino (%o1)
*
* ret0 status (%o0)
* ret1 cpuid (%o1)
*
*/
ENTRY(hv_vintr_gettarget)
mov VINTR_GETTARGET, %o5
ta FAST_TRAP
retl
st %o1, [%o2]
END(hv_vintr_gettarget)
/*
* set the cpuid that is the current target
* of the interrupt defined by devino
*
* arg0 devhandle (%o0)
* arg1 devino (%o1)
* arg2 cpuid (%o2)
*
* ret0 status (%o0)
*
*/
ENTRY(hv_vintr_settarget)
mov VINTR_SETTARGET, %o5
ta FAST_TRAP
retl
nop
END(hv_vintr_settarget)
/*
* Section 15 Time of Day Services
*