]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Library/XenHypercallLib/XenHypercall.c
BaseTools: Library hashing fix and optimization for --hash feature
[mirror_edk2.git] / OvmfPkg / Library / XenHypercallLib / XenHypercall.c
CommitLineData
abcbbb14
AP
1/** @file\r
2 Functions to make Xen hypercalls.\r
3\r
4 Copyright (C) 2014, Citrix Ltd.\r
5\r
b26f0cf9 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
abcbbb14
AP
7\r
8**/\r
9\r
10#include <PiDxe.h>\r
abcbbb14
AP
11\r
12#include <IndustryStandard/Xen/hvm/params.h>\r
13#include <IndustryStandard/Xen/memory.h>\r
14\r
cd8ff8fd
AB
15#include <Library/DebugLib.h>\r
16#include <Library/XenHypercallLib.h>\r
abcbbb14
AP
17\r
18UINT64\r
6ad157c3 19EFIAPI\r
abcbbb14 20XenHypercallHvmGetParam (\r
cec6ad0a 21 IN UINT32 Index\r
abcbbb14
AP
22 )\r
23{\r
24 xen_hvm_param_t Parameter;\r
25 INTN Error;\r
26\r
abcbbb14
AP
27 Parameter.domid = DOMID_SELF;\r
28 Parameter.index = Index;\r
bbc3758a 29 Error = XenHypercall2 (__HYPERVISOR_hvm_op,\r
abcbbb14
AP
30 HVMOP_get_param, (INTN) &Parameter);\r
31 if (Error != 0) {\r
32 DEBUG ((EFI_D_ERROR,\r
6394c35a
LE
33 "XenHypercall: Error %Ld trying to get HVM parameter %d\n",\r
34 (INT64)Error, Index));\r
abcbbb14
AP
35 return 0;\r
36 }\r
37 return Parameter.value;\r
38}\r
39\r
40INTN\r
6ad157c3 41EFIAPI\r
abcbbb14 42XenHypercallMemoryOp (\r
abcbbb14
AP
43 IN UINTN Operation,\r
44 IN OUT VOID *Arguments\r
45 )\r
46{\r
bbc3758a 47 return XenHypercall2 (__HYPERVISOR_memory_op,\r
abcbbb14
AP
48 Operation, (INTN) Arguments);\r
49}\r
50\r
51INTN\r
6ad157c3 52EFIAPI\r
abcbbb14 53XenHypercallEventChannelOp (\r
abcbbb14
AP
54 IN INTN Operation,\r
55 IN OUT VOID *Arguments\r
56 )\r
57{\r
bbc3758a 58 return XenHypercall2 (__HYPERVISOR_event_channel_op,\r
abcbbb14
AP
59 Operation, (INTN) Arguments);\r
60}\r