Skip to content

Commit

Permalink
community/rethinkdb:add register settings for aarch64
Browse files Browse the repository at this point in the history
register settings are added for aarch64 platform

Signed-off-by: ossdev07 <ossdev@puresoftware.com>
  • Loading branch information
ossdev07 authored and maxice8 committed Nov 25, 2019
1 parent 198f9d8 commit 11c42c3
Show file tree
Hide file tree
Showing 2 changed files with 136 additions and 2 deletions.
6 changes: 4 additions & 2 deletions community/rethinkdb/APKBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Maintainer: Daniel Treadwell <daniel@djt.id.au>
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"
Expand All @@ -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"

Expand Down Expand Up @@ -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"
132 changes: 132 additions & 0 deletions community/rethinkdb/support-fix-aarch64.patch
Original file line number Diff line number Diff line change
@@ -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__)

0 comments on commit 11c42c3

Please sign in to comment.