arm: Add check to fault routing for hypervisor/virtualization
authorDylan Johnson <Dylan.Johnson@ARM.com>
Tue, 2 Aug 2016 09:38:02 +0000 (10:38 +0100)
committerDylan Johnson <Dylan.Johnson@ARM.com>
Tue, 2 Aug 2016 09:38:02 +0000 (10:38 +0100)
This patch adds the option for faults to be routed to the hypervisor
using the pre-existing routeToHyp() functions that are present in each
fault type.

Change-Id: I9735512c094457636b9870456a5be5432288e004

src/arch/arm/faults.cc

index 061e1299af5eb4e3872f8668e3dabdd75ee2279b..d195d1a1443f62cc1058a4be5be93b42db790a0a 100644 (file)
@@ -439,6 +439,8 @@ ArmFault::invoke(ThreadContext *tc, const StaticInstPtr &inst)
         // Determine target exception level
         if (ArmSystem::haveSecurity(tc) && routeToMonitor(tc))
             toEL = EL3;
+        else if (ArmSystem::haveVirtualization(tc) && routeToHyp(tc))
+            toEL = EL2;
         else
             toEL = opModeToEL(nextMode());
         if (fromEL > toEL)