mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
x86: fix build with old gcc after CPU policy changes
Old gcc won't cope with initializers involving unnamed struct/union
fields.
Fixes: 441b1b2a50 ("x86/emul: Switch x86_emulate_ctxt to cpu_policy")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
741599fa52
commit
768846690d
3 files changed
+9
-3
No files matched your search
@@ -893,12 +893,14 @@ int LLVMFuzzerTestOneInput(const uint8_t *data_p, size_t size)
|
||||
struct x86_emulate_ctxt ctxt = {
|
||||
.data = &state,
|
||||
.regs = &input.regs,
|
||||
.cpu_policy = &cp,
|
||||
.addr_size = 8 * sizeof(void *),
|
||||
.sp_size = 8 * sizeof(void *),
|
||||
};
|
||||
int rc;
|
||||
|
||||
/* Not part of the initializer, for old gcc to cope. */
|
||||
ctxt.cpu_policy = &cp;
|
||||
|
||||
/* Reset all global state variables */
|
||||
memset(&input, 0, sizeof(input));
|
||||
|
||||
|
||||
@@ -1313,12 +1313,14 @@ int pv_emulate_privileged_op(struct cpu_user_regs *regs)
|
||||
struct domain *currd = curr->domain;
|
||||
struct priv_op_ctxt ctxt = {
|
||||
.ctxt.regs = regs,
|
||||
.ctxt.cpu_policy = currd->arch.cpu_policy,
|
||||
.ctxt.lma = !is_pv_32bit_domain(currd),
|
||||
};
|
||||
int rc;
|
||||
unsigned int eflags, ar;
|
||||
|
||||
/* Not part of the initializer, for old gcc to cope. */
|
||||
ctxt.ctxt.cpu_policy = currd->arch.cpu_policy;
|
||||
|
||||
if ( !pv_emul_read_descriptor(regs->cs, curr, &ctxt.cs.base,
|
||||
&ctxt.cs.limit, &ar, 1) ||
|
||||
!(ar & _SEGMENT_S) ||
|
||||
|
||||
@@ -344,7 +344,6 @@ int pv_ro_page_fault(unsigned long addr, struct cpu_user_regs *regs)
|
||||
unsigned int addr_size = is_pv_32bit_domain(currd) ? 32 : BITS_PER_LONG;
|
||||
struct x86_emulate_ctxt ctxt = {
|
||||
.regs = regs,
|
||||
.cpu_policy = currd->arch.cpu_policy,
|
||||
.addr_size = addr_size,
|
||||
.sp_size = addr_size,
|
||||
.lma = addr_size > 32,
|
||||
@@ -352,6 +351,9 @@ int pv_ro_page_fault(unsigned long addr, struct cpu_user_regs *regs)
|
||||
int rc;
|
||||
bool mmio_ro;
|
||||
|
||||
/* Not part of the initializer, for old gcc to cope. */
|
||||
ctxt.cpu_policy = currd->arch.cpu_policy;
|
||||
|
||||
/* Attempt to read the PTE that maps the VA being accessed. */
|
||||
pte = guest_get_eff_kern_l1e(addr);
|
||||
|
||||
|
||||