summaryrefslogtreecommitdiffstats
path: root/meta-python/recipes-devtools/python/python3-greenlet/0001-slp_switch-Implement-for-RISCV32.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-python/recipes-devtools/python/python3-greenlet/0001-slp_switch-Implement-for-RISCV32.patch')
-rw-r--r--meta-python/recipes-devtools/python/python3-greenlet/0001-slp_switch-Implement-for-RISCV32.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/meta-python/recipes-devtools/python/python3-greenlet/0001-slp_switch-Implement-for-RISCV32.patch b/meta-python/recipes-devtools/python/python3-greenlet/0001-slp_switch-Implement-for-RISCV32.patch
new file mode 100644
index 0000000000..83877d3860
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python3-greenlet/0001-slp_switch-Implement-for-RISCV32.patch
@@ -0,0 +1,48 @@
1From 524fd7244cfec4ec6760e52001c9a41d1913066e Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sun, 6 Apr 2025 20:54:08 -0700
4Subject: [PATCH] slp_switch: Implement for RISCV32
5
6Changed data types from long to int for fp variable
7stackref pointer and stsizediff variable
8
9Changed the load instruction from ld (64-bit load) to lw (32-bit load)
10
11Upstream-Status: Submitted [https://github.com/python-greenlet/greenlet/pull/439]
12Signed-off-by: Khem Raj <raj.khem@gmail.com>
13---
14 src/greenlet/platform/switch_riscv_unix.h | 11 ++++++++++-
15 1 file changed, 10 insertions(+), 1 deletion(-)
16
17diff --git a/src/greenlet/platform/switch_riscv_unix.h b/src/greenlet/platform/switch_riscv_unix.h
18index e74f37a..32ca78c 100644
19--- a/src/greenlet/platform/switch_riscv_unix.h
20+++ b/src/greenlet/platform/switch_riscv_unix.h
21@@ -11,9 +11,14 @@
22 static int
23 slp_switch(void)
24 {
25- long fp;
26 int ret;
27+#if __riscv_xlen == 32
28+ long fp;
29 long *stackref, stsizediff;
30+#else
31+ int fp;
32+ int *stackref, stsizediff;
33+#endif
34 __asm__ volatile ("" : : : REGS_TO_SAVE);
35 __asm__ volatile ("mv %0, fp" : "=r" (fp) : );
36 __asm__ volatile ("mv %0, sp" : "=r" (stackref) : );
37@@ -28,7 +33,11 @@ slp_switch(void)
38 SLP_RESTORE_STATE();
39 }
40 __asm__ volatile ("" : : : REGS_TO_SAVE);
41+#if __riscv_xlen == 32
42+ __asm__ volatile ("lw fp, %0" : : "m" (fp));
43+#else
44 __asm__ volatile ("ld fp, %0" : : "m" (fp));
45+#endif
46 __asm__ volatile ("mv %0, zero" : "=r" (ret) : );
47 return ret;
48 }