Title: [184170] trunk/Source/_javascript_Core
Revision
184170
Author
[email protected]
Date
2015-05-12 01:15:27 -0700 (Tue, 12 May 2015)

Log Message

Workaround for Cortex-A53 erratum 843419
https://bugs.webkit.org/show_bug.cgi?id=144680

Reviewed by Michael Saboff.

This patch is about to give simple workaround for Cortex-A53 erratum 843419.
It inserts nops after ADRP instruction to avoid wrong address accesses.

* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::adrp):
(JSC::ARM64Assembler::nopCortexA53Fix843419):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (184169 => 184170)


--- trunk/Source/_javascript_Core/ChangeLog	2015-05-12 08:06:53 UTC (rev 184169)
+++ trunk/Source/_javascript_Core/ChangeLog	2015-05-12 08:15:27 UTC (rev 184170)
@@ -1,3 +1,17 @@
+2015-05-12  Gabor Loki  <[email protected]>
+
+        Workaround for Cortex-A53 erratum 843419
+        https://bugs.webkit.org/show_bug.cgi?id=144680
+
+        Reviewed by Michael Saboff.
+
+        This patch is about to give simple workaround for Cortex-A53 erratum 843419.
+        It inserts nops after ADRP instruction to avoid wrong address accesses.
+
+        * assembler/ARM64Assembler.h:
+        (JSC::ARM64Assembler::adrp):
+        (JSC::ARM64Assembler::nopCortexA53Fix843419):
+
 2015-05-11  Commit Queue  <[email protected]>
 
         Unreviewed, rolling out r184009.

Modified: trunk/Source/_javascript_Core/assembler/ARM64Assembler.h (184169 => 184170)


--- trunk/Source/_javascript_Core/assembler/ARM64Assembler.h	2015-05-12 08:06:53 UTC (rev 184169)
+++ trunk/Source/_javascript_Core/assembler/ARM64Assembler.h	2015-05-12 08:15:27 UTC (rev 184170)
@@ -947,6 +947,7 @@
     {
         ASSERT(!(offset & 0xfff));
         insn(pcRelative(true, offset >> 12, rd));
+        nopCortexA53Fix843419();
     }
 
     template<int datasize, SetFlags setFlags = DontSetFlags>
@@ -3655,6 +3656,17 @@
 #endif
     }
 
+    // Workaround for Cortex-A53 erratum (843419). Emit extra nops to avoid
+    // wrong address access after ADRP instruction.
+    ALWAYS_INLINE void nopCortexA53Fix843419()
+    {
+#if CPU(ARM64_CORTEXA53)
+        nop();
+        nop();
+        nop();
+#endif
+    }
+
     AssemblerBuffer m_buffer;
     Vector<LinkRecord, 0, UnsafeVectorOverflow> m_jumpsToLink;
     int m_indexOfLastWatchpoint;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to