struct vcpu *curr = current;
unsigned long op;
- if ( !is_pv_32bit_vcpu(curr) )
+#ifdef CONFIG_PV32
+ if ( is_pv_32bit_vcpu(curr) )
{
- struct multicall_entry *call = &state->call;
+ struct compat_multicall_entry *call = &state->compat_call;
op = call->op;
if ( (op < ARRAY_SIZE(pv_hypercall_table)) &&
- pv_hypercall_table[op].native )
- call->result = pv_hypercall_table[op].native(
+ pv_hypercall_table[op].compat )
+ call->result = pv_hypercall_table[op].compat(
call->args[0], call->args[1], call->args[2],
call->args[3], call->args[4], call->args[5]);
else
call->result = -ENOSYS;
}
-#ifdef CONFIG_PV32
else
+#endif
{
- struct compat_multicall_entry *call = &state->compat_call;
+ struct multicall_entry *call = &state->call;
op = call->op;
if ( (op < ARRAY_SIZE(pv_hypercall_table)) &&
- pv_hypercall_table[op].compat )
- call->result = pv_hypercall_table[op].compat(
+ pv_hypercall_table[op].native )
+ call->result = pv_hypercall_table[op].native(
call->args[0], call->args[1], call->args[2],
call->args[3], call->args[4], call->args[5]);
else
call->result = -ENOSYS;
}
-#endif
return unlikely(op == __HYPERVISOR_iret)
? mc_exit