]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Set the FSR and FAR registers if a Data Abort is detected.
authorNick Clifton <nickc@redhat.com>
Wed, 29 May 2002 19:01:36 +0000 (19:01 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 29 May 2002 19:01:36 +0000 (19:01 +0000)
sim/arm/ChangeLog
sim/arm/armcopro.c

index b5b17f2f5bd38527ba4fbfa2235227d4cfbd7a61..85de967d7c7ad149735764b8ef6dd6cab7dc0f98 100644 (file)
@@ -1,3 +1,8 @@
+2002-05-29  Nick Clifton  <nickc@cambridge.redhat.com>
+
+       * armcopro.c (XScale_check_memacc): Set the FSR and FAR registers
+       if a Data Abort is detected.
+
 2002-05-27  Nick Clifton  <nickc@cambridge.redhat.com>
 
        * armvirt.c (GetWord): Only perform access checks if 'check'
index 8b041862cc5244586761bb827a91155afe2379e8..2c2ca8505a6c4c9c77dd7a45d8765f9792a6ec20 100644 (file)
@@ -479,7 +479,14 @@ XScale_check_memacc (ARMul_State * state, ARMword * address, int store)
 
   /* Check alignment fault enable/disable.  */
   if ((read_cp15_reg (1, 0, 0) & ARMul_CP15_R1_ALIGN) && (* address & 3))
-    ARMul_Abort (state, ARMul_DataAbortV);
+    {
+      /* Set the FSR and FAR.
+        Do not use XScale_set_fsr_far as this checks the DCSR register.  */
+      write_cp15_reg (state, 5, 0, 0, ARMul_CP15_R5_MMU_EXCPT);
+      write_cp15_reg (state, 6, 0, 0, * address);
+
+      ARMul_Abort (state, ARMul_DataAbortV);
+    }
 
   if (XScale_debug_moe (state, -1))
     return;