kvm_ppc.h 1.5 KB
Newer Older
A
aurel32 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13
/*
 * Copyright 2008 IBM Corporation.
 * Authors: Hollis Blanchard <hollisb@us.ibm.com>
 *
 * This work is licensed under the GNU GPL license version 2 or later.
 *
 */

#ifndef __KVM_PPC_H__
#define __KVM_PPC_H__

void kvmppc_init(void);

14 15
#ifdef CONFIG_KVM

16
uint32_t kvmppc_get_tbfreq(void);
17
uint64_t kvmppc_get_clockfreq(void);
18
int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len);
19
int kvmppc_set_interrupt(CPUState *env, int irq, int level);
20
void kvmppc_set_papr(CPUState *env);
21
int kvmppc_smt_threads(void);
22

23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
#else

static inline uint32_t kvmppc_get_tbfreq(void)
{
    return 0;
}

static inline uint64_t kvmppc_get_clockfreq(void)
{
    return 0;
}

static inline int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len)
{
    return -1;
}

static inline int kvmppc_set_interrupt(CPUState *env, int irq, int level)
{
    return -1;
}

45 46 47 48
static inline void kvmppc_set_papr(CPUState *env)
{
}

49 50 51 52 53
static inline int kvmppc_smt_threads(void)
{
    return 1;
}

54 55
#endif

56 57 58 59 60 61 62 63 64 65 66
#ifndef CONFIG_KVM
#define kvmppc_eieio() do { } while (0)
#else
#define kvmppc_eieio() \
    do {                                          \
        if (kvm_enabled()) {                          \
            asm volatile("eieio" : : : "memory"); \
        } \
    } while (0)
#endif

67 68 69 70 71 72 73 74 75 76 77
#ifndef KVM_INTERRUPT_SET
#define KVM_INTERRUPT_SET -1
#endif

#ifndef KVM_INTERRUPT_UNSET
#define KVM_INTERRUPT_UNSET -2
#endif

#ifndef KVM_INTERRUPT_SET_LEVEL
#define KVM_INTERRUPT_SET_LEVEL -3
#endif
78

A
aurel32 已提交
79
#endif /* __KVM_PPC_H__ */