Lines Matching refs:field

13 void vmread_error(unsigned long field);
14 void vmwrite_error(unsigned long field, unsigned long value);
31 * void vmread_error_trampoline(unsigned long field, bool fault);
39 void vmread_error_trampoline2(unsigned long field, bool fault);
43 static __always_inline void vmcs_check16(unsigned long field)
45 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2000,
46 "16-bit accessor invalid for 64-bit field");
47 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2001,
48 "16-bit accessor invalid for 64-bit high field");
49 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x4000,
50 "16-bit accessor invalid for 32-bit high field");
51 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x6000,
52 "16-bit accessor invalid for natural width field");
55 static __always_inline void vmcs_check32(unsigned long field)
57 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0,
58 "32-bit accessor invalid for 16-bit field");
59 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2000,
60 "32-bit accessor invalid for 64-bit field");
61 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2001,
62 "32-bit accessor invalid for 64-bit high field");
63 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x6000,
64 "32-bit accessor invalid for natural width field");
67 static __always_inline void vmcs_check64(unsigned long field)
69 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0,
70 "64-bit accessor invalid for 16-bit field");
71 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2001,
72 "64-bit accessor invalid for 64-bit high field");
73 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x4000,
74 "64-bit accessor invalid for 32-bit field");
75 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x6000,
76 "64-bit accessor invalid for natural width field");
79 static __always_inline void vmcs_checkl(unsigned long field)
81 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0,
82 "Natural width accessor invalid for 16-bit field");
83 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2000,
84 "Natural width accessor invalid for 64-bit field");
85 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6001) == 0x2001,
86 "Natural width accessor invalid for 64-bit high field");
87 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x4000,
88 "Natural width accessor invalid for 32-bit field");
91 static __always_inline unsigned long __vmcs_readl(unsigned long field)
97 asm_goto_output("1: vmread %[field], %[output]\n\t"
103 : [field] "r" (field)
111 vmread_error(field);
127 * @field, and bounce through the trampoline to preserve
147 : ASM_CALL_CONSTRAINT, "=&r"(value) : "r"(field) : "cc");
153 static __always_inline u16 vmcs_read16(unsigned long field)
155 vmcs_check16(field);
157 return evmcs_read16(field);
158 return __vmcs_readl(field);
161 static __always_inline u32 vmcs_read32(unsigned long field)
163 vmcs_check32(field);
165 return evmcs_read32(field);
166 return __vmcs_readl(field);
169 static __always_inline u64 vmcs_read64(unsigned long field)
171 vmcs_check64(field);
173 return evmcs_read64(field);
175 return __vmcs_readl(field);
177 return __vmcs_readl(field) | ((u64)__vmcs_readl(field+1) << 32);
181 static __always_inline unsigned long vmcs_readl(unsigned long field)
183 vmcs_checkl(field);
185 return evmcs_read64(field);
186 return __vmcs_readl(field);
223 static __always_inline void __vmcs_writel(unsigned long field, unsigned long value)
225 vmx_asm2(vmwrite, "r"(field), "rm"(value), field, value);
228 static __always_inline void vmcs_write16(unsigned long field, u16 value)
230 vmcs_check16(field);
232 return evmcs_write16(field, value);
234 __vmcs_writel(field, value);
237 static __always_inline void vmcs_write32(unsigned long field, u32 value)
239 vmcs_check32(field);
241 return evmcs_write32(field, value);
243 __vmcs_writel(field, value);
246 static __always_inline void vmcs_write64(unsigned long field, u64 value)
248 vmcs_check64(field);
250 return evmcs_write64(field, value);
252 __vmcs_writel(field, value);
254 __vmcs_writel(field+1, value >> 32);
258 static __always_inline void vmcs_writel(unsigned long field, unsigned long value)
260 vmcs_checkl(field);
262 return evmcs_write64(field, value);
264 __vmcs_writel(field, value);
267 static __always_inline void vmcs_clear_bits(unsigned long field, u32 mask)
269 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x2000,
272 return evmcs_write32(field, evmcs_read32(field) & ~mask);
274 __vmcs_writel(field, __vmcs_readl(field) & ~mask);
277 static __always_inline void vmcs_set_bits(unsigned long field, u32 mask)
279 BUILD_BUG_ON_MSG(__builtin_constant_p(field) && ((field) & 0x6000) == 0x2000,
282 return evmcs_write32(field, evmcs_read32(field) | mask);
284 __vmcs_writel(field, __vmcs_readl(field) | mask);