1
#ifndef __XEN_X86_SHARED_H__
2
#define __XEN_X86_SHARED_H__
6
#define nmi_reason(d) (!has_32bit_shinfo(d) ? \
7
(u32 *)&(d)->shared_info->native.arch.nmi_reason : \
8
(u32 *)&(d)->shared_info->compat.arch.nmi_reason)
10
#define GET_SET_SHARED(type, field) \
11
static inline type arch_get_##field(const struct domain *d) \
13
return !has_32bit_shinfo(d) ? \
14
d->shared_info->native.arch.field : \
15
d->shared_info->compat.arch.field; \
17
static inline void arch_set_##field(struct domain *d, \
20
if ( !has_32bit_shinfo(d) ) \
21
d->shared_info->native.arch.field = val; \
23
d->shared_info->compat.arch.field = val; \
26
#define GET_SET_VCPU(type, field) \
27
static inline type arch_get_##field(const struct vcpu *v) \
29
return !has_32bit_shinfo(v->domain) ? \
30
v->vcpu_info->native.arch.field : \
31
v->vcpu_info->compat.arch.field; \
33
static inline void arch_set_##field(struct vcpu *v, \
36
if ( !has_32bit_shinfo(v->domain) ) \
37
v->vcpu_info->native.arch.field = val; \
39
v->vcpu_info->compat.arch.field = val; \
44
#define nmi_reason(d) ((u32 *)&(d)->shared_info->arch.nmi_reason)
46
#define GET_SET_SHARED(type, field) \
47
static inline type arch_get_##field(const struct domain *d) \
49
return d->shared_info->arch.field; \
51
static inline void arch_set_##field(struct domain *d, \
54
d->shared_info->arch.field = val; \
57
#define GET_SET_VCPU(type, field) \
58
static inline type arch_get_##field(const struct vcpu *v) \
60
return v->vcpu_info->arch.field; \
62
static inline void arch_set_##field(struct vcpu *v, \
65
v->vcpu_info->arch.field = val; \
69
GET_SET_SHARED(unsigned long, max_pfn)
70
GET_SET_SHARED(xen_pfn_t, pfn_to_mfn_frame_list_list)
71
GET_SET_SHARED(unsigned long, nmi_reason)
73
GET_SET_VCPU(unsigned long, cr2)
78
#endif /* __XEN_X86_SHARED_H__ */