1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#ifndef HVF_X86_DESCR_H
20#define HVF_X86_DESCR_H
21
22#include "x86.h"
23
24typedef struct vmx_segment {
25 uint16_t sel;
26 uint64_t base;
27 uint64_t limit;
28 uint64_t ar;
29} vmx_segment;
30
31
32void vmx_read_segment_descriptor(struct CPUState *cpu,
33 struct vmx_segment *desc, enum X86Seg seg);
34void vmx_write_segment_descriptor(CPUState *cpu, struct vmx_segment *desc,
35 enum X86Seg seg);
36
37x68_segment_selector vmx_read_segment_selector(struct CPUState *cpu,
38 enum X86Seg seg);
39void vmx_write_segment_selector(struct CPUState *cpu,
40 x68_segment_selector selector,
41 enum X86Seg seg);
42
43uint64_t vmx_read_segment_base(struct CPUState *cpu, enum X86Seg seg);
44void vmx_write_segment_base(struct CPUState *cpu, enum X86Seg seg,
45 uint64_t base);
46
47void x86_segment_descriptor_to_vmx(struct CPUState *cpu,
48 x68_segment_selector selector,
49 struct x86_segment_descriptor *desc,
50 struct vmx_segment *vmx_desc);
51
52uint32_t vmx_read_segment_limit(CPUState *cpu, enum X86Seg seg);
53uint32_t vmx_read_segment_ar(CPUState *cpu, enum X86Seg seg);
54void vmx_segment_to_x86_descriptor(struct CPUState *cpu,
55 struct vmx_segment *vmx_desc,
56 struct x86_segment_descriptor *desc);
57
58#endif
59