OvmfPkg/XenHypercallLib: enable virt extensions for ARM

XenHypercallLib uses the 'hvc' instruction, which is not implemented
on all ARMv7 CPUs, and so we need to explicitly specify a CPU that
has the virtualization extensions.

This override used to be set at the platform level, but this was removed
in commit 0d36a219c7
('ArmPlatformPkg/PL031RealTimeClockLib: drop ArmPlatformSysConfigLib
reference), under the assumption that all users of the 'hvc' instruction
had already been fixed.

So fix this for GNU binutils by adding the 'virt' arch extension
directive, and for RVCT by setting the --cpu command line option to a
CPU that is virt capable.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
Ard Biesheuvel 2017-11-16 16:51:49 +00:00
parent 77af86688c
commit 12c6484058
2 changed files with 5 additions and 0 deletions

View File

@ -16,6 +16,8 @@
#include <IndustryStandard/Xen/arch-arm/xen.h>
.text
.arch_extension virt
GCC_ASM_EXPORT(XenHypercall2)
ASM_PFX(XenHypercall2):

View File

@ -64,3 +64,6 @@
[Guids.IA32, Guids.X64]
gEfiXenInfoGuid
[BuildOptions.ARM]
RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A15