diff options
author | Giacomo Gabrielli <giacomo.gabrielli@arm.com> | 2018-10-16 16:09:02 +0100 |
---|---|---|
committer | Giacomo Gabrielli <giacomo.gabrielli@arm.com> | 2019-03-14 10:42:27 +0000 |
commit | c4cc3145cd1eeed236b5cd3f7b2424bc0761878e (patch) | |
tree | b38eab6f5f389dfc53c2cf74275a83bacd2e9b18 /src/arch/arm/utility.cc | |
parent | 91195ae7f637d1d4879cc3bf0860147333846e75 (diff) | |
download | gem5-c4cc3145cd1eeed236b5cd3f7b2424bc0761878e.tar.xz |
arch-arm,cpu: Add initial support for Arm SVE
This changeset adds initial support for the Arm Scalable Vector Extension
(SVE) by implementing:
- support for most data-processing instructions (no loads/stores yet);
- basic system-level support.
Additional authors:
- Javier Setoain <javier.setoain@arm.com>
- Gabor Dozsa <gabor.dozsa@arm.com>
- Giacomo Travaglini <giacomo.travaglini@arm.com>
Thanks to Pau Cabre for his contribution of bugfixes.
Change-Id: I1808b5ff55b401777eeb9b99c9a1129e0d527709
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/13515
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/arch/arm/utility.cc')
-rw-r--r-- | src/arch/arm/utility.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/arch/arm/utility.cc b/src/arch/arm/utility.cc index bee801358..29b39b89e 100644 --- a/src/arch/arm/utility.cc +++ b/src/arch/arm/utility.cc @@ -297,6 +297,17 @@ ELIs32(ThreadContext *tc, ExceptionLevel el) return aarch32; } +bool +ELIsInHost(ThreadContext *tc, ExceptionLevel el) +{ + if (!ArmSystem::haveVirtualization(tc)) { + return false; + } + HCR hcr = tc->readMiscReg(MISCREG_HCR_EL2); + return (!isSecureBelowEL3(tc) && !ELIs32(tc, EL2) && hcr.e2h == 1 && + (el == EL2 || (el == EL0 && hcr.tge == 1))); +} + std::pair<bool, bool> ELUsingAArch32K(ThreadContext *tc, ExceptionLevel el) { |