From b94c3ac93d57cf2711814932bf082b2ce496eb82 Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Sat, 28 Feb 2015 20:33:22 +0000 Subject: Ovmf/Xen: implement XenHypercallLib for ARM This patch adds an implementation of XenHypercallLib for both AArch64 and AArch32 execution modes on ARM systems. Contributed-under: TianoCore Contribution Agreement 1.0 Reviewed-by: Stefano Stabellini Signed-off-by: Ard Biesheuvel Signed-off-by: Laszlo Ersek git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16974 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Library/XenHypercallLib/Aarch64/Hypercall.S | 26 ++++++++++++++ OvmfPkg/Library/XenHypercallLib/Arm/Hypercall.S | 25 ++++++++++++++ .../Library/XenHypercallLib/XenHypercallLibArm.inf | 40 ++++++++++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 OvmfPkg/Library/XenHypercallLib/Aarch64/Hypercall.S create mode 100644 OvmfPkg/Library/XenHypercallLib/Arm/Hypercall.S create mode 100644 OvmfPkg/Library/XenHypercallLib/XenHypercallLibArm.inf (limited to 'OvmfPkg/Library/XenHypercallLib') diff --git a/OvmfPkg/Library/XenHypercallLib/Aarch64/Hypercall.S b/OvmfPkg/Library/XenHypercallLib/Aarch64/Hypercall.S new file mode 100644 index 0000000000..b1b5d4cc3f --- /dev/null +++ b/OvmfPkg/Library/XenHypercallLib/Aarch64/Hypercall.S @@ -0,0 +1,26 @@ + +/** @file + AArch64 implementation of XenHypercall2 + + Copyright (C) 2014, Linaro 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 + + .text + .global ASM_PFX(XenHypercall2) +ASM_PFX(XenHypercall2): + mov x16, x0 + mov x0, x1 + mov x1, x2 + hvc #XEN_HYPERCALL_TAG + ret diff --git a/OvmfPkg/Library/XenHypercallLib/Arm/Hypercall.S b/OvmfPkg/Library/XenHypercallLib/Arm/Hypercall.S new file mode 100644 index 0000000000..b38e1a8f18 --- /dev/null +++ b/OvmfPkg/Library/XenHypercallLib/Arm/Hypercall.S @@ -0,0 +1,25 @@ +/** @file + ARM (AArch32) implementation of XenHypercall2 + + Copyright (C) 2014, Linaro 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 + + .text + .global ASM_PFX(XenHypercall2) +ASM_PFX(XenHypercall2): + mov r12, r0 + mov r0, r1 + mov r1, r2 + hvc #XEN_HYPERCALL_TAG + bx lr diff --git a/OvmfPkg/Library/XenHypercallLib/XenHypercallLibArm.inf b/OvmfPkg/Library/XenHypercallLib/XenHypercallLibArm.inf new file mode 100644 index 0000000000..9cbbeb5d87 --- /dev/null +++ b/OvmfPkg/Library/XenHypercallLib/XenHypercallLibArm.inf @@ -0,0 +1,40 @@ +## @file +# Xen Hypercall abstraction lib for ARM architecture +# +# Copyright (c) 2014, Linaro Ltd. All rights reserved.
+# 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. +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = XenHypercallLibArm + FILE_GUID = 9607AC2E-FCB9-499B-9475-612282019568 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = XenHypercallLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = ARM AARCH64 +# + +[Sources.ARM] + Arm/Hypercall.S + +[Sources.AARCH64] + Aarch64/Hypercall.S + +[Sources] + XenHypercall.c + +[Packages] + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec -- cgit v1.2.3