aboutsummaryrefslogtreecommitdiffstats
path: root/community
diff options
context:
space:
mode:
Diffstat (limited to 'community')
-rw-r--r--community/py-greenlet/APKBUILD2
-rw-r--r--community/py-greenlet/ppc64le_clobbering.patch32
2 files changed, 31 insertions, 3 deletions
diff --git a/community/py-greenlet/APKBUILD b/community/py-greenlet/APKBUILD
index 1bdd937f2d..068d3aa965 100644
--- a/community/py-greenlet/APKBUILD
+++ b/community/py-greenlet/APKBUILD
@@ -52,4 +52,4 @@ _py3() {
}
sha512sums="a3b7856aadc988fe153f5cf62552dd6219358f35ee2ca136e5eb5c9871cb7545986753af299e6b3e95877e9aa564559e95c548785f78e680766630b047a1ec89 greenlet-0.4.15.tar.gz
-3770c57f6a2cf36d33a5d39d5a3d12596a5b3255727fa24b6a7f1c18eda18c491ad140ff12bc804e818975e31461ff37d6705448de7ed7a0e5c3cd60137962d9 ppc64le_clobbering.patch"
+7dde3227207c3d637031c37f4ea2e81d454a3481164b58984528fa186e3edfa30d7f6075fef31c6b5f75c3b08129ec38ccc4d10c0c2cf3fb763803fc6dbd4643 ppc64le_clobbering.patch"
diff --git a/community/py-greenlet/ppc64le_clobbering.patch b/community/py-greenlet/ppc64le_clobbering.patch
index 0b8f9f1f6c..bb76ac8519 100644
--- a/community/py-greenlet/ppc64le_clobbering.patch
+++ b/community/py-greenlet/ppc64le_clobbering.patch
@@ -1,5 +1,7 @@
---- greenlet-0.4.15/platform/switch_ppc64_linux.h.a
-+++ greenlet-0.4.15/platform/switch_ppc64_linux.h
+diff --git a/platform/switch_ppc64_linux.h b/platform/switch_ppc64_linux.h
+index 88e6847..feb60d4 100644
+--- a/platform/switch_ppc64_linux.h
++++ b/platform/switch_ppc64_linux.h
@@ -66,7 +66,6 @@
#define REGS_TO_SAVE "r14", "r15", "r16", "r17", "r18", "r19", "r20", \
@@ -8,3 +10,29 @@
"fr14", "fr15", "fr16", "fr17", "fr18", "fr19", "fr20", "fr21", \
"fr22", "fr23", "fr24", "fr25", "fr26", "fr27", "fr28", "fr29", \
"fr30", "fr31", \
+@@ -80,21 +79,25 @@ slp_switch(void)
+ register long *stackref, stsizediff;
+ void * toc;
+ void * r30;
++ void * r31;
+ __asm__ volatile ("" : : : REGS_TO_SAVE);
+ __asm__ volatile ("std 2, %0" : "=m" (toc));
+ __asm__ volatile ("std 30, %0" : "=m" (r30));
++ __asm__ volatile ("std 31, %0" : "=m" (r31));
+ __asm__ ("mr %0, 1" : "=r" (stackref) : );
+ {
+ SLP_SAVE_STATE(stackref, stsizediff);
+ __asm__ volatile (
+ "mr 11, %0\n"
+ "add 1, 1, 11\n"
++ "add 31, 31, 11\n"
+ : /* no outputs */
+ : "r" (stsizediff)
+ : "11"
+ );
+ SLP_RESTORE_STATE();
+ }
++ __asm__ volatile ("ld 31, %0" : : "m" (r31));
+ __asm__ volatile ("ld 30, %0" : : "m" (r30));
+ __asm__ volatile ("ld 2, %0" : : "m" (toc));
+ __asm__ volatile ("" : : : REGS_TO_SAVE);