diff options
Diffstat (limited to 'community')
-rw-r--r-- | community/py-greenlet/APKBUILD | 2 | ||||
-rw-r--r-- | community/py-greenlet/ppc64le_clobbering.patch | 32 |
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); |