/** @file | |
Functions to make Xen hypercalls. | |
Copyright (C) 2014, Citrix Ltd. | |
This program and the accompanying materials | |
are licensed and made available under the terms and conditions of the BSD License | |
which accompanies this distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
**/ | |
#include <PiDxe.h> | |
#include <IndustryStandard/Xen/hvm/params.h> | |
#include <IndustryStandard/Xen/memory.h> | |
#include <Library/DebugLib.h> | |
#include <Library/XenHypercallLib.h> | |
UINT64 | |
EFIAPI | |
XenHypercallHvmGetParam ( | |
IN UINT32 Index | |
) | |
{ | |
xen_hvm_param_t Parameter; | |
INTN Error; | |
Parameter.domid = DOMID_SELF; | |
Parameter.index = Index; | |
Error = XenHypercall2 (__HYPERVISOR_hvm_op, | |
HVMOP_get_param, (INTN) &Parameter); | |
if (Error != 0) { | |
DEBUG ((EFI_D_ERROR, | |
"XenHypercall: Error %Ld trying to get HVM parameter %d\n", | |
(INT64)Error, Index)); | |
return 0; | |
} | |
return Parameter.value; | |
} | |
INTN | |
EFIAPI | |
XenHypercallMemoryOp ( | |
IN UINTN Operation, | |
IN OUT VOID *Arguments | |
) | |
{ | |
return XenHypercall2 (__HYPERVISOR_memory_op, | |
Operation, (INTN) Arguments); | |
} | |
INTN | |
EFIAPI | |
XenHypercallEventChannelOp ( | |
IN INTN Operation, | |
IN OUT VOID *Arguments | |
) | |
{ | |
return XenHypercall2 (__HYPERVISOR_event_channel_op, | |
Operation, (INTN) Arguments); | |
} |