target-arm: Fix lpae bit in FSR on an alignment fault
authorSergey Sorokin <afarallax@yandex.ru>
Tue, 6 Sep 2016 18:52:17 +0000 (19:52 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 6 Sep 2016 18:52:17 +0000 (19:52 +0100)
If an alignment fault occurred and target EL is using AArch32,
then DFSR/IFSR bit LPAE[9] must be set correctly.

Signed-off-by: Sergey Sorokin <afarallax@yandex.ru>
Message-id: 1471283293-169850-1-git-send-email-afarallax@yandex.ru
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
target-arm/op_helper.c

index 3e8588ee6a70d84bb2941cf77486c317f9739afd..be27b21d522cb5e6e869f9bd0af22ce2a11b7001 100644 (file)
@@ -194,7 +194,7 @@ void arm_cpu_do_unaligned_access(CPUState *cs, vaddr vaddr,
      * the LPAE long descriptor format, or the short descriptor format
      */
     if (arm_s1_regime_using_lpae_format(env, cpu_mmu_index(env, false))) {
-        env->exception.fsr = 0x21;
+        env->exception.fsr = (1 << 9) | 0x21;
     } else {
         env->exception.fsr = 0x1;
     }