summaryrefslogtreecommitdiff
path: root/kvm-stub.c
blob: 9ec2b3cd5b3e8f519bea190b73819252b9887f08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
/*
 * QEMU KVM stub
 *
 * Copyright Red Hat, Inc. 2010
 *
 * Author: Paolo Bonzini     <pbonzini@redhat.com>
 *
 * This work is licensed under the terms of the GNU GPL, version 2 or later.
 * See the COPYING file in the top-level directory.
 *
 */

#include "qemu-common.h"
#include "sysemu.h"
#include "hw/hw.h"
#include "exec-all.h"
#include "gdbstub.h"
#include "kvm.h"

int kvm_irqchip_in_kernel(void)
{
    return 0;
}

int kvm_pit_in_kernel(void)
{
    return 0;
}


int kvm_init_vcpu(CPUState *env)
{
    return -ENOSYS;
}

int kvm_log_start(target_phys_addr_t phys_addr, ram_addr_t size)
{
    return -ENOSYS;
}

int kvm_log_stop(target_phys_addr_t phys_addr, ram_addr_t size)
{
    return -ENOSYS;
}

int kvm_coalesce_mmio_region(target_phys_addr_t start, ram_addr_t size)
{
    return -ENOSYS;
}

int kvm_uncoalesce_mmio_region(target_phys_addr_t start, ram_addr_t size)
{
    return -ENOSYS;
}

int kvm_check_extension(KVMState *s, unsigned int extension)
{
    return 0;
}

int kvm_init(void)
{
    return -ENOSYS;
}

void kvm_flush_coalesced_mmio_buffer(void)
{
}

void kvm_cpu_synchronize_state(CPUState *env)
{
}

void kvm_cpu_synchronize_post_reset(CPUState *env)
{
}

void kvm_cpu_synchronize_post_init(CPUState *env)
{
}

int kvm_cpu_exec(CPUState *env)
{
    abort ();
}

int kvm_has_sync_mmu(void)
{
    return 0;
}

int kvm_has_vcpu_events(void)
{
    return 0;
}

int kvm_has_robust_singlestep(void)
{
    return 0;
}

int kvm_has_many_ioeventfds(void)
{
    return 0;
}

void kvm_setup_guest_memory(void *start, size_t size)
{
}

int kvm_update_guest_debug(CPUState *env, unsigned long reinject_trap)
{
    tb_flush(env);
    return 0;
}

int kvm_insert_breakpoint(CPUState *current_env, target_ulong addr,
                          target_ulong len, int type)
{
    return -EINVAL;
}

int kvm_remove_breakpoint(CPUState *current_env, target_ulong addr,
                          target_ulong len, int type)
{
    return -EINVAL;
}

void kvm_remove_all_breakpoints(CPUState *current_env)
{
}

#ifndef _WIN32
int kvm_set_signal_mask(CPUState *env, const sigset_t *sigset)
{
    abort();
}
#endif

int kvm_set_ioeventfd_pio_word(int fd, uint16_t addr, uint16_t val, bool assign)
{
    return -ENOSYS;
}

int kvm_set_ioeventfd_mmio_long(int fd, uint32_t adr, uint32_t val, bool assign)
{
    return -ENOSYS;
}

int kvm_has_gsi_routing(void)
{
    return 0;
}

int kvm_get_irq_route_gsi(void)
{
    return -ENOSYS;
}

int kvm_add_msix(uint32_t gsi, uint32_t addr_lo,
                 uint32_t addr_hi, uint32_t data)
{
    return -ENOSYS;
}

int kvm_del_msix(uint32_t gsi, uint32_t addr_lo,
                 uint32_t addr_hi, uint32_t data)
{
    return -ENOSYS;
}

int kvm_update_msix(uint32_t old_gsi, uint32_t old_addr_lo,
                    uint32_t old_addr_hi, uint32_t old_data,
                    uint32_t new_gsi, uint32_t new_addr_lo,
                    uint32_t new_addr_hi, uint32_t new_data)
{
    return -ENOSYS;
}

int kvm_commit_irq_routes(void)
{
    return -ENOSYS;
}

int kvm_set_irq(int irq, int level, int *status)
{
    assert(0);
    return -ENOSYS;
}
int kvm_on_sigbus(int code, void *addr)
{
    return 1;
}