aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/shadow_ops.h
blob: 8765ed8b10531ad4360aa1c7735826fd5aa5e103 (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
/******************************************************************************
 * include/asm-x86/shadow_ops.h
 * 
 * Copyright (c) 2005 Michael A Fetterman
 * Based on an earlier implementation by Ian Pratt et al
 * 
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifndef _XEN_SHADOW_OPS_H
#define _XEN_SHADOW_OPS_H

#define PAGING_L4      4UL
#define PAGING_L3      3UL
#define PAGING_L2      2UL
#define PAGING_L1      1UL

#define PAE_CR3_ALIGN       5
#define PAE_CR3_IDX_MASK    0x7f

#if defined( GUEST_PGENTRY_32 )

#define GUEST_L1_PAGETABLE_ENTRIES     L1_PAGETABLE_ENTRIES_32
#define GUEST_L2_PAGETABLE_ENTRIES     L2_PAGETABLE_ENTRIES_32
#define GUEST_ROOT_PAGETABLE_ENTRIES   ROOT_PAGETABLE_ENTRIES_32
#define GUEST_L2_PAGETABLE_SHIFT       L2_PAGETABLE_SHIFT_32

#define guest_l1_pgentry_t      l1_pgentry_32_t
#define guest_l2_pgentry_t      l2_pgentry_32_t
#define guest_root_pgentry_t    l2_pgentry_32_t

#define guest_l1e_get_paddr     l1e_get_paddr_32
#define guest_l2e_get_paddr     l2e_get_paddr_32

#define guest_get_pte_flags     get_pte_flags_32
#define guest_put_pte_flags     put_pte_flags_32

#define guest_l1e_get_flags     l1e_get_flags_32
#define guest_l2e_get_flags     l2e_get_flags_32
#define guest_root_get_flags          l2e_get_flags_32
#define guest_root_get_intpte         l2e_get_intpte

#define guest_l1e_empty         l1e_empty_32
#define guest_l2e_empty         l2e_empty_32

#define guest_l1e_from_pfn      l1e_from_pfn_32
#define guest_l2e_from_pfn      l2e_from_pfn_32

#define guest_l1e_from_paddr    l1e_from_paddr_32
#define guest_l2e_from_paddr    l2e_from_paddr_32

#define guest_l1e_from_page     l1e_from_page_32
#define guest_l2e_from_page     l2e_from_page_32

#define guest_l1e_add_flags     l1e_add_flags_32
#define guest_l2e_add_flags     l2e_add_flags_32

#define guest_l1e_remove_flag   l1e_remove_flags_32
#define guest_l2e_remove_flag   l2e_remove_flags_32

#define guest_l1e_has_changed   l1e_has_changed_32
#define guest_l2e_has_changed   l2e_has_changed_32
#define root_entry_has_changed  l2e_has_changed_32

#define guest_l1_table_offset   l1_table_offset_32
#define guest_l2_table_offset   l2_table_offset_32

#define guest_linear_l1_table   linear_pg_table_32
#define guest_linear_l2_table   linear_l2_table_32

#define guest_va_to_l1mfn       va_to_l1mfn_32

#else

#define GUEST_L1_PAGETABLE_ENTRIES      L1_PAGETABLE_ENTRIES
#define GUEST_L2_PAGETABLE_ENTRIES      L2_PAGETABLE_ENTRIES
#define GUEST_ROOT_PAGETABLE_ENTRIES    ROOT_PAGETABLE_ENTRIES
#define GUEST_L2_PAGETABLE_SHIFT        L2_PAGETABLE_SHIFT

#define guest_l1_pgentry_t      l1_pgentry_t
#define guest_l2_pgentry_t      l2_pgentry_t
#define guest_root_pgentry_t    l4_pgentry_t

#define guest_l1e_get_paddr     l1e_get_paddr
#define guest_l2e_get_paddr     l2e_get_paddr

#define guest_get_pte_flags     get_pte_flags
#define guest_put_pte_flags     put_pte_flags

#define guest_l1e_get_flags     l1e_get_flags
#define guest_l2e_get_flags     l2e_get_flags
#define guest_root_get_flags    l4e_get_flags
#define guest_root_get_intpte   l4e_get_intpte

#define guest_l1e_empty         l1e_empty
#define guest_l2e_empty         l2e_empty

#define guest_l1e_from_pfn      l1e_from_pfn
#define guest_l2e_from_pfn      l2e_from_pfn

#define guest_l1e_from_paddr    l1e_from_paddr
#define guest_l2e_from_paddr    l2e_from_paddr

#define guest_l1e_from_page     l1e_from_page
#define guest_l2e_from_page     l2e_from_page

#define guest_l1e_add_flags     l1e_add_flags
#define guest_l2e_add_flags     l2e_add_flags

#define guest_l1e_remove_flag   l1e_remove_flags
#define guest_l2e_remove_flag   l2e_remove_flags

#define guest_l1e_has_changed   l1e_has_changed
#define guest_l2e_has_changed   l2e_has_changed
#define root_entry_has_changed  l4e_has_changed

#define guest_l1_table_offset   l1_table_offset
#define guest_l2_table_offset   l2_table_offset

#define guest_linear_l1_table   linear_pg_table
#define guest_linear_l2_table   linear_l2_table

#define guest_va_to_l1mfn       va_to_l1mfn
#endif

#endif /* _XEN_SHADOW_OPS_H */