|
|
1.1 root 1: /*
2: * Copyright 2008 IBM Corporation.
3: * Authors: Hollis Blanchard <[email protected]>
4: *
5: * This work is licensed under the GNU GPL license version 2 or later.
6: *
7: */
8:
9: #ifndef __KVM_PPC_H__
10: #define __KVM_PPC_H__
11:
1.1.1.5 ! root 12: #include "memory.h"
! 13:
1.1 root 14: void kvmppc_init(void);
1.1.1.5 ! root 15:
! 16: #ifdef CONFIG_KVM
1.1 root 17:
1.1.1.2 root 18: uint32_t kvmppc_get_tbfreq(void);
1.1.1.5 ! root 19: uint64_t kvmppc_get_clockfreq(void);
! 20: uint32_t kvmppc_get_vmx(void);
! 21: uint32_t kvmppc_get_dfp(void);
1.1.1.3 root 22: int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len);
23: int kvmppc_set_interrupt(CPUState *env, int irq, int level);
1.1.1.5 ! root 24: void kvmppc_set_papr(CPUState *env);
! 25: int kvmppc_smt_threads(void);
! 26: #ifndef CONFIG_USER_ONLY
! 27: off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem);
! 28: void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd);
! 29: int kvmppc_remove_spapr_tce(void *table, int pfd, uint32_t window_size);
! 30: #endif /* !CONFIG_USER_ONLY */
! 31: const ppc_def_t *kvmppc_host_cpu_def(void);
! 32:
! 33: #else
! 34:
! 35: static inline uint32_t kvmppc_get_tbfreq(void)
! 36: {
! 37: return 0;
! 38: }
! 39:
! 40: static inline uint64_t kvmppc_get_clockfreq(void)
! 41: {
! 42: return 0;
! 43: }
! 44:
! 45: static inline uint32_t kvmppc_get_vmx(void)
! 46: {
! 47: return 0;
! 48: }
! 49:
! 50: static inline uint32_t kvmppc_get_dfp(void)
! 51: {
! 52: return 0;
! 53: }
! 54:
! 55: static inline int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len)
! 56: {
! 57: return -1;
! 58: }
! 59:
! 60: static inline int kvmppc_set_interrupt(CPUState *env, int irq, int level)
! 61: {
! 62: return -1;
! 63: }
! 64:
! 65: static inline void kvmppc_set_papr(CPUState *env)
! 66: {
! 67: }
! 68:
! 69: static inline int kvmppc_smt_threads(void)
! 70: {
! 71: return 1;
! 72: }
! 73:
! 74: #ifndef CONFIG_USER_ONLY
! 75: static inline off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem)
! 76: {
! 77: return 0;
! 78: }
! 79:
! 80: static inline void *kvmppc_create_spapr_tce(uint32_t liobn,
! 81: uint32_t window_size, int *fd)
! 82: {
! 83: return NULL;
! 84: }
! 85:
! 86: static inline int kvmppc_remove_spapr_tce(void *table, int pfd,
! 87: uint32_t window_size)
! 88: {
! 89: return -1;
! 90: }
! 91: #endif /* !CONFIG_USER_ONLY */
! 92:
! 93: static inline const ppc_def_t *kvmppc_host_cpu_def(void)
! 94: {
! 95: return NULL;
! 96: }
! 97:
! 98: #endif
1.1.1.3 root 99:
1.1.1.4 root 100: #ifndef CONFIG_KVM
101: #define kvmppc_eieio() do { } while (0)
102: #else
103: #define kvmppc_eieio() \
104: do { \
105: if (kvm_enabled()) { \
106: asm volatile("eieio" : : : "memory"); \
107: } \
108: } while (0)
109: #endif
110:
1.1.1.3 root 111: #ifndef KVM_INTERRUPT_SET
112: #define KVM_INTERRUPT_SET -1
113: #endif
114:
115: #ifndef KVM_INTERRUPT_UNSET
116: #define KVM_INTERRUPT_UNSET -2
117: #endif
118:
119: #ifndef KVM_INTERRUPT_SET_LEVEL
120: #define KVM_INTERRUPT_SET_LEVEL -3
121: #endif
1.1.1.2 root 122:
1.1 root 123: #endif /* __KVM_PPC_H__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.