From 3eb183bf8bf1e376121e6371c3b227bafe654d67 Mon Sep 17 00:00:00 2001 From: ossdev07 Date: Fri, 22 Nov 2019 12:04:27 +0000 Subject: [PATCH] community/rethinkdb:add register settings for aarch64 register settings are added for aarch64 platform Signed-off-by: ossdev07 --- community/rethinkdb/APKBUILD | 6 +- community/rethinkdb/support-fix-aarch64.patch | 132 ++++++++++++++++++ 2 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 community/rethinkdb/support-fix-aarch64.patch diff --git a/community/rethinkdb/APKBUILD b/community/rethinkdb/APKBUILD index 9830d4d0089c..d2bfbbbcb01b 100644 --- a/community/rethinkdb/APKBUILD +++ b/community/rethinkdb/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Daniel Treadwell pkgname=rethinkdb pkgver=2.3.6 -pkgrel=13 +pkgrel=14 pkgdesc="Distributed powerful and scalable NoSQL database" url="https://www.rethinkdb.com" arch="x86_64 ppc64le s390x aarch64" @@ -24,6 +24,7 @@ source="https://download.rethinkdb.com/dist/$pkgname-$pkgver.tgz support-aarch64.patch rethinkdb.initd rethinkdb.confd + support-fix-aarch64.patch " builddir="$srcdir/rethinkdb-$pkgver" @@ -92,4 +93,5 @@ sha512sums="653177750f7439fa1d61a121e488d578be1eab90f87c7d17ad52b9793d8543f22bbe c5a7905c116a2bf7af5ce5f8e6536c61e06ee9ac7cbead0358396e0989141890908eab694f4a88f0dcaf9f4ddcefe751dc7a949cbb4c870d87f61e720ef3b45a paxmark-x86_64.patch c392b409da5a2daf1fcf0868a070d9a12d9ce9cf2fc668e3171ed7b2185b57a1c90d6efe14a6da24a04ed98e0db5a945431d3df4b4aa1153b2a6ec4b95c0a24b support-aarch64.patch c27e21073048bd5e8e2ec91303b43ce873748573e2b44ba28ee57ca1b3080afb67e56880b6a6da7a0abf4f2967dce45aa27fe8d6dd44b70d874d776e876ef132 rethinkdb.initd -3a07f9c78ef96b2ca37fca508ee14a644d3c08612f662ba5260182fbfcceba064d20253f1261f56dc0a2c28d1a4d5e2320872c3c4e7595cb7ab4e202eb28ad42 rethinkdb.confd" +3a07f9c78ef96b2ca37fca508ee14a644d3c08612f662ba5260182fbfcceba064d20253f1261f56dc0a2c28d1a4d5e2320872c3c4e7595cb7ab4e202eb28ad42 rethinkdb.confd +078501dd75c3ba17e7ed5c171187d9153e863a4a2b327632d6b3525446a1f1ff7048751a889d55b14a302331117c69b871b649c0e2079affca2a961bc1bd718e support-fix-aarch64.patch" diff --git a/community/rethinkdb/support-fix-aarch64.patch b/community/rethinkdb/support-fix-aarch64.patch new file mode 100644 index 000000000000..8dc6befea6aa --- /dev/null +++ b/community/rethinkdb/support-fix-aarch64.patch @@ -0,0 +1,132 @@ +--- a/src/arch/runtime/context_switching.cc ++++ b/src/arch/runtime/context_switching.cc +@@ -98,9 +98,11 @@ + the stack by swapcontext; they're callee-saved, so whatever happens to be in + them will be ignored. */ + sp -= 6; +-#elif defined(__arm__) || defined(__aarch64__) ++#elif defined(__arm__) + /* We must preserve r4, r5, r6, r7, r8, r9, r10, and r11. Because we have to store the LR (r14) in swapcontext as well, we also store r12 in swapcontext to keep the stack double-word-aligned. However, we already accounted for both of those by decrementing sp twice above (once for r14 and once for r12, say). */ + sp -= 8; ++#elif defined(__aarch64__) ++ sp -=94; + #else + #error "Unsupported architecture." + #endif +@@ -303,16 +305,38 @@ + "push {r14}\n" + "push {r4-r11}\n" + #elif defined(__aarch64__) +- "str x12, [sp, #-8]!\n" +- "str x14, [sp, #-8]!\n" +- "str x4, [sp, #-8]!\n" +- "str x5, [sp, #-8]!\n" +- "str x6, [sp, #-8]!\n" +- "str x7, [sp, #-8]!\n" +- "str x8, [sp, #-8]!\n" +- "str x9, [sp, #-8]!\n" +- "str x10, [sp, #-8]!\n" +- "str x11, [sp, #-8]!\n" ++ "STP X30, X16, [SP, #-0x10]!\n" ++ "STP X29, X17, [SP, #-0x10]!\n" ++ "STP X0, X1, [SP, #-0x10]!\n" ++ "STP X2, X3, [SP, #-0x10]!\n" ++ "STP X4, X5, [SP, #-0x10]!\n" ++ "STP X6, X7, [SP, #-0x10]!\n" ++ "STP X9, X10, [SP, #-0x10]!\n" ++ "STP X11, X12, [SP, #-0x10]!\n" ++ "STP X13, X14, [SP, #-0x10]!\n" ++ "STP X15, X19, [SP, #-0x10]!\n" ++ "STP X20, X21, [SP, #-0x10]!\n" ++ "STP X22, X23, [SP, #-0x10]!\n" ++ "STP X24, X25, [SP, #-0x10]!\n" ++ "STP X26, X27, [SP, #-0x10]!\n" ++ "STP X28, X29, [SP, #-0x10]!\n" ++ "STP XZR, X18, [SP, #-0x10]!\n" ++ "STP Q0, Q1, [SP,#-0x20]!\n" ++ "STP Q2, Q3, [SP,#-0x20]!\n" ++ "STP Q4, Q5, [SP,#-0x20]!\n" ++ "STP Q6, Q7, [SP,#-0x20]!\n" ++ "STP Q8, Q9, [SP,#-0x20]!\n" ++ "STP Q10, Q11, [SP,#-0x20]!\n" ++ "STP Q12, Q13, [SP,#-0x20]!\n" ++ "STP Q14, Q15, [SP,#-0x20]!\n" ++ "STP Q16, Q17, [SP,#-0x20]!\n" ++ "STP Q18, Q19, [SP,#-0x20]!\n" ++ "STP Q20, Q21, [SP,#-0x20]!\n" ++ "STP Q22, Q23, [SP,#-0x20]!\n" ++ "STP Q24, Q25, [SP,#-0x20]!\n" ++ "STP Q26, Q27, [SP,#-0x20]!\n" ++ "STP Q28, Q29, [SP,#-0x20]!\n" ++ "STP Q30, Q31, [SP,#-0x20]!\n" + #endif + + /* Save old stack pointer. */ +@@ -329,7 +353,8 @@ + "str r13, [r0]\n" + #elif defined(__aarch64__) + /* On aarch64, the first argument is in `x0`. `sp` is the stack pointer. */ +- "str x0, [sp, #-8]\n" ++ "mov X2, SP\n" ++ "str X2, [x0]\n" + #endif + + /* Load the new stack pointer and the preserved registers. */ +@@ -346,7 +371,7 @@ + "mov r13, r1\n" + #elif defined(__aarch64__) + /* On aarch64, the second argument is in `x1` */ +- "mov x13, x1\n" ++ "mov SP, x1\n" + #endif + + #if defined(__i386__) +@@ -366,16 +391,38 @@ + "pop {r14}\n" + "pop {r12}\n" + #elif defined(__aarch64__) +- "ldr x4, [sp], #8\n" +- "ldr x5, [sp], #8\n" +- "ldr x6, [sp], #8\n" +- "ldr x7, [sp], #8\n" +- "ldr x8, [sp], #8\n" +- "ldr x9, [sp], #8\n" +- "ldr x10, [sp], #8\n" +- "ldr x11, [sp], #8\n" +- "ldr x14, [sp], #8\n" +- "ldr x12, [sp], #8\n" ++ "LDP Q30, Q31, [SP], #0x20\n" ++ "LDP Q28, Q29, [SP], #0x20\n" ++ "LDP Q26, Q27, [SP], #0x20\n" ++ "LDP Q24, Q25, [SP], #0x20\n" ++ "LDP Q22, Q23, [SP], #0x20\n" ++ "LDP Q20, Q21, [SP], #0x20\n" ++ "LDP Q18, Q19, [SP], #0x20\n" ++ "LDP Q16, Q17, [SP], #0x20\n" ++ "LDP Q14, Q15, [SP], #0x20\n" ++ "LDP Q12, Q13, [SP], #0x20\n" ++ "LDP Q10, Q11, [SP], #0x20\n" ++ "LDP Q8, Q9, [SP], #0x20\n" ++ "LDP Q6, Q7, [SP], #0x20\n" ++ "LDP Q4, Q5, [SP], #0x20\n" ++ "LDP Q2, Q3, [SP], #0x20\n" ++ "LDP Q0, Q1, [SP], #0x20\n" ++ "LDP XZR, X18, [SP], #0x10\n" ++ "LDP X28, X29, [SP], #0x10\n" ++ "LDP X26, X27, [SP], #0x10\n" ++ "LDP X24, X25, [SP], #0x10\n" ++ "LDP X22, X23, [SP], #0x10\n" ++ "LDP X20, X21, [SP], #0x10\n" ++ "LDP X15, X19, [SP], #0x10\n" ++ "LDP X13, X14, [SP], #0x10\n" ++ "LDP X11, X12, [SP], #0x10\n" ++ "LDP X9, X10, [SP], #0x10\n" ++ "LDP X6, X7, [SP], #0x10\n" ++ "LDP X4, X5, [SP], #0x10\n" ++ "LDP X2, X3, [SP], #0x10\n" ++ "LDP X0, X1, [SP], #0x10\n" ++ "LDP X29, X17, [SP], #0x10\n" ++ "LDP X30, X16, [SP], #0x10\n" + #endif + + #if defined(__i386__) || defined(__x86_64__)