Statistics
| Branch: | Revision:

root / target-ppc / kvm_ppc.h @ 01e26b0e

History | View | Annotate | Download (3.1 kB)

1
/*
2
 * Copyright 2008 IBM Corporation.
3
 * Authors: Hollis Blanchard <hollisb@us.ibm.com>
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

    
12
#include "memory.h"
13

    
14
void kvmppc_init(void);
15

    
16
#ifdef CONFIG_KVM
17

    
18
uint32_t kvmppc_get_tbfreq(void);
19
uint64_t kvmppc_get_clockfreq(void);
20
uint32_t kvmppc_get_vmx(void);
21
uint32_t kvmppc_get_dfp(void);
22
int kvmppc_get_hypercall(CPUPPCState *env, uint8_t *buf, int buf_len);
23
int kvmppc_set_interrupt(CPUPPCState *env, int irq, int level);
24
void kvmppc_set_papr(CPUPPCState *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
int kvmppc_reset_htab(int shift_hint);
31
uint64_t kvmppc_rma_size(uint64_t current_size, unsigned int hash_shift);
32
#endif /* !CONFIG_USER_ONLY */
33
const ppc_def_t *kvmppc_host_cpu_def(void);
34
int kvmppc_fixup_cpu(CPUPPCState *env);
35

    
36
#else
37

    
38
static inline uint32_t kvmppc_get_tbfreq(void)
39
{
40
    return 0;
41
}
42

    
43
static inline uint64_t kvmppc_get_clockfreq(void)
44
{
45
    return 0;
46
}
47

    
48
static inline uint32_t kvmppc_get_vmx(void)
49
{
50
    return 0;
51
}
52

    
53
static inline uint32_t kvmppc_get_dfp(void)
54
{
55
    return 0;
56
}
57

    
58
static inline int kvmppc_get_hypercall(CPUPPCState *env, uint8_t *buf, int buf_len)
59
{
60
    return -1;
61
}
62

    
63
static inline int kvmppc_read_segment_page_sizes(uint32_t *prop, int maxcells)
64
{
65
    return -1;
66
}
67

    
68
static inline int kvmppc_set_interrupt(CPUPPCState *env, int irq, int level)
69
{
70
    return -1;
71
}
72

    
73
static inline void kvmppc_set_papr(CPUPPCState *env)
74
{
75
}
76

    
77
static inline int kvmppc_smt_threads(void)
78
{
79
    return 1;
80
}
81

    
82
#ifndef CONFIG_USER_ONLY
83
static inline off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem)
84
{
85
    return 0;
86
}
87

    
88
static inline void *kvmppc_create_spapr_tce(uint32_t liobn,
89
                                            uint32_t window_size, int *fd)
90
{
91
    return NULL;
92
}
93

    
94
static inline int kvmppc_remove_spapr_tce(void *table, int pfd,
95
                                          uint32_t window_size)
96
{
97
    return -1;
98
}
99

    
100
static inline int kvmppc_reset_htab(int shift_hint)
101
{
102
    return -1;
103
}
104

    
105
static inline uint64_t kvmppc_rma_size(uint64_t current_size,
106
                                       unsigned int hash_shift)
107
{
108
    return ram_size;
109
}
110

    
111
static inline int kvmppc_update_sdr1(CPUPPCState *env)
112
{
113
    return 0;
114
}
115

    
116
#endif /* !CONFIG_USER_ONLY */
117

    
118
static inline const ppc_def_t *kvmppc_host_cpu_def(void)
119
{
120
    return NULL;
121
}
122

    
123
static inline int kvmppc_fixup_cpu(CPUPPCState *env)
124
{
125
    return -1;
126
}
127
#endif
128

    
129
#ifndef CONFIG_KVM
130
#define kvmppc_eieio() do { } while (0)
131
#else
132
#define kvmppc_eieio() \
133
    do {                                          \
134
        if (kvm_enabled()) {                          \
135
            asm volatile("eieio" : : : "memory"); \
136
        } \
137
    } while (0)
138
#endif
139

    
140
#ifndef KVM_INTERRUPT_SET
141
#define KVM_INTERRUPT_SET -1
142
#endif
143

    
144
#ifndef KVM_INTERRUPT_UNSET
145
#define KVM_INTERRUPT_UNSET -2
146
#endif
147

    
148
#ifndef KVM_INTERRUPT_SET_LEVEL
149
#define KVM_INTERRUPT_SET_LEVEL -3
150
#endif
151

    
152
#endif /* __KVM_PPC_H__ */