Blame SOURCES/mozjs17-aarch64-support-64K-pages.patch

8d84ca
From f17bc0302100c885c84ebd06cd003aad9774cbb4 Mon Sep 17 00:00:00 2001
8d84ca
From: Mark Salter <msalter@redhat.com>
8d84ca
Date: Thu, 13 Mar 2014 13:16:27 -0400
8d84ca
Subject: [PATCH] Fix aarch64 support for 64K pagesize
8d84ca
8d84ca
A given AArch64 kernel may be using 4K or 64K pagesizes. When running
8d84ca
on a kernel with 64K pagesize, this check causes an intentionally
8d84ca
generated segfault:
8d84ca
8d84ca
  js/src/gc/Memory.cpp:
8d84ca
8d84ca
  void
8d84ca
  InitMemorySubsystem()
8d84ca
  {
8d84ca
      if (size_t(sysconf(_SC_PAGESIZE)) != PageSize)
8d84ca
         MOZ_CRASH();
8d84ca
  }
8d84ca
8d84ca
This happens because PageSize is fixed to 4K at build time. This mess
8d84ca
has been cleaned up in mozjs-24 by eliminating the build-time PageSize
8d84ca
definition. That is too intrusive for mosjs17, so just set PageSize
8d84ca
to 64K at build time and eliminate the check. This will work with both
8d84ca
4K and 64K aarch64 kernels.
8d84ca
8d84ca
Signed-off-by: Mark Salter <msalter@redhat.com>
8d84ca
---
8d84ca
 js/src/gc/Heap.h     |  2 +-
8d84ca
 js/src/gc/Memory.cpp |  3 +++
8d84ca
 3 files changed, 15 insertions(+), 1 deletion(-)
8d84ca
8d84ca
diff --git a/js/src/gc/Heap.h b/js/src/gc/Heap.h
8d84ca
index 1cfd269..f4dbcda 100644
8d84ca
--- a/js/src/gc/Heap.h
8d84ca
+++ b/js/src/gc/Heap.h
8d84ca
@@ -113,7 +113,7 @@ struct Cell
8d84ca
 #if defined(SOLARIS) && (defined(__sparc) || defined(__sparcv9))
8d84ca
 const size_t PageShift = 13;
8d84ca
 const size_t ArenaShift = PageShift;
8d84ca
-#elif defined(__powerpc__)
8d84ca
+#elif defined(__powerpc__) || defined(__aarch64__)
8d84ca
 const size_t PageShift = 16;
8d84ca
 const size_t ArenaShift = 12;
8d84ca
 #else
8d84ca
diff --git a/js/src/gc/Memory.cpp b/js/src/gc/Memory.cpp
8d84ca
index 5b386a2..e5ad018 100644
8d84ca
--- a/js/src/gc/Memory.cpp
8d84ca
+++ b/js/src/gc/Memory.cpp
8d84ca
@@ -302,8 +302,11 @@ GetPageFaultCount()
8d84ca
 void
8d84ca
 InitMemorySubsystem()
8d84ca
 {
8d84ca
+    /* aarch64 may have 64KB or 4KB pages */
8d84ca
+#ifndef __aarch64__
8d84ca
     if (size_t(sysconf(_SC_PAGESIZE)) != PageSize)
8d84ca
         MOZ_CRASH();
8d84ca
+#endif
8d84ca
 }
8d84ca
 
8d84ca
 void *
8d84ca
-- 
8d84ca
1.8.5.3
8d84ca