From a59ffccce3bf214fae9932cc42400eeeaec25c6c Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Thu, 24 Nov 2022 07:10:12 +0000 Subject: gentoo auto-resync : 24:11:2022 - 07:10:12 --- ...ey-60.5.2-ia64-fix-virtual-address-length.patch | 59 ---------------------- .../files/spidermonkey-60.5.2-ia64-support.patch | 44 ---------------- 2 files changed, 103 deletions(-) delete mode 100644 dev-lang/spidermonkey/files/spidermonkey-60.5.2-ia64-fix-virtual-address-length.patch delete mode 100644 dev-lang/spidermonkey/files/spidermonkey-60.5.2-ia64-support.patch (limited to 'dev-lang/spidermonkey/files') diff --git a/dev-lang/spidermonkey/files/spidermonkey-60.5.2-ia64-fix-virtual-address-length.patch b/dev-lang/spidermonkey/files/spidermonkey-60.5.2-ia64-fix-virtual-address-length.patch deleted file mode 100644 index 8b2245f1e353..000000000000 --- a/dev-lang/spidermonkey/files/spidermonkey-60.5.2-ia64-fix-virtual-address-length.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 8099213b51180254b322332ecd573239da4212c4 Mon Sep 17 00:00:00 2001 -From: Sergei Trofimovich -Date: Thu, 23 Jan 2020 22:57:53 +0000 -Subject: [PATCH] ProcessExecutableMemory.cpp: fix virtual address length on - ia64 - -ia64's usable virtual address space is page dependent. For 16K -pages with 3 levels of page tables de can address only 44 bits -of virtual memory, not default 47. - -The change makes page size detection dynamic and adapts to -addressable bits. On ia64 it is '4 * log2(page_size/8)'. - -Signed-off-by: Sergei Trofimovich ---- - js/src/jit/ProcessExecutableMemory.cpp | 25 +++++++++++++++++++++++++ - 1 file changed, 25 insertions(+) - -diff --git a/js/src/jit/ProcessExecutableMemory.cpp b/js/src/jit/ProcessExecutableMemory.cpp -index 9e55c262..8581c150 100644 ---- a/js/src/jit/ProcessExecutableMemory.cpp -+++ b/js/src/jit/ProcessExecutableMemory.cpp - -@@ -248,7 +248,32 @@ static void* ComputeRandomAllocationAddress() { - // x64 CPUs have a 48-bit address space and on some platforms the OS will - // give us access to 47 bits, so to be safe we right shift by 18 to leave - // 46 bits. -+# ifdef __ia64__ -+ // On ia64 virtual address space looks like one of: -+ // virt_addr_64 = [ <63..61> | | L3 | L2 | L1 | offset ] -+ // virt_addr_64 = [ <63..61> | | L4 | L3 | L2 | L1 | offset ] -+ // where L{1..L4} are page tables. Each page table (except top-level L3 or L4) -+ // is itself a page-size entry and can store PageSize / 8 entries. Top-level -+ // entry is 1/8 of of L1/L2 (as 3 upper bits are part of <63..61> address part). -+ // Note: that makes addressable size directly depend on page size. -+ // -+ // We conservatively assume 3 levels of page tables here. This makes the -+ // following formula: -+ // L3 = log2(PAGE / 8 / 8) = log2(PAGE / 8) - 3 -+ // L2 = log2(PAGE / 8) -+ // L1 = log2(PAGE / 8) -+ // offset = log2(PAGE) = log2(PAGE / 8) + 3 -+ // thus -+ // L3 + L2 + L1 + offset = 4 * log2(PAGE / 8) -+ // For more details see http://www.ia64-linux.org/doc/IA64linuxkernel.PDF -+ // (slide 19: "user regions"). -+ static uint64_t ia64_virt_bits = std::min( -+ 4 * (mozilla::FloorLog2(gc::SystemPageSize() / 8)), -+ 46); -+ rand >>= (64 - ia64_virt_bits); -+# else - rand >>= 18; -+# endif - #else - // On 32-bit, right shift by 34 to leave 30 bits, range [0, 1GiB). Then add - // 512MiB to get range [512MiB, 1.5GiB), or [0x20000000, 0x60000000). This --- -2.25.0 - diff --git a/dev-lang/spidermonkey/files/spidermonkey-60.5.2-ia64-support.patch b/dev-lang/spidermonkey/files/spidermonkey-60.5.2-ia64-support.patch deleted file mode 100644 index 90c8a4c9da3b..000000000000 --- a/dev-lang/spidermonkey/files/spidermonkey-60.5.2-ia64-support.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 35d787c782a075c0a01e29605d254950fd1e81a6 Mon Sep 17 00:00:00 2001 -From: Sergei Trofimovich -Date: Thu, 25 Jul 2019 10:17:39 -0500 -Subject: [PATCH] Add support for ia64 atomic-ops - -Signed-off-by: Jory Pratt ---- - js/src/jit/AtomicOperations.h | 2 ++ - js/src/jit/none/AtomicOperations-feeling-lucky.h | 6 ++++++ - 2 files changed, 8 insertions(+) - -diff --git a/js/src/jit/AtomicOperations.h b/js/src/jit/AtomicOperations.h -index 3501e65b..44c3f358 100644 ---- a/js/src/jit/AtomicOperations.h -+++ b/js/src/jit/AtomicOperations.h -@@ -393,6 +393,8 @@ inline bool AtomicOperations::isLockfreeJS(int32_t size) { - #include "jit/none/AtomicOperations-feeling-lucky.h" - #elif defined(__s390__) || defined(__s390x__) - #include "jit/none/AtomicOperations-feeling-lucky.h" -+#elif defined(__ia64__) -+#include "jit/none/AtomicOperations-feeling-lucky.h" - #else - #error "No AtomicOperations support provided for this platform" - #endif -diff --git a/js/src/jit/none/AtomicOperations-feeling-lucky.h b/js/src/jit/none/AtomicOperations-feeling-lucky.h -index c0b43699..a3f4497e 100644 ---- a/js/src/jit/none/AtomicOperations-feeling-lucky.h -+++ b/js/src/jit/none/AtomicOperations-feeling-lucky.h -@@ -80,6 +80,12 @@ - #define GNUC_COMPATIBLE - #endif - -+#ifdef __ia64__ -+#define HAS_64BIT_ATOMICS -+#define HAS_64BIT_LOCKFREE -+#define GNUC_COMPATIBLE -+#endif -+ - // The default implementation tactic for gcc/clang is to use the newer - // __atomic intrinsics added for use in C++11 . Where that - // isn't available, we use GCC's older __sync functions instead. --- -2.22.0 - -- cgit v1.2.3