aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/greenlet/platform/switch_sh_gcc.h
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/greenlet/platform/switch_sh_gcc.h
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/greenlet/platform/switch_sh_gcc.h')
-rw-r--r--.venv/lib/python3.12/site-packages/greenlet/platform/switch_sh_gcc.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/greenlet/platform/switch_sh_gcc.h b/.venv/lib/python3.12/site-packages/greenlet/platform/switch_sh_gcc.h
new file mode 100644
index 00000000..5ecc3b39
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/greenlet/platform/switch_sh_gcc.h
@@ -0,0 +1,36 @@
+#define STACK_REFPLUS 1
+
+#ifdef SLP_EVAL
+#define STACK_MAGIC 0
+#define REGS_TO_SAVE "r8", "r9", "r10", "r11", "r13", \
+ "fr12", "fr13", "fr14", "fr15"
+
+// r12 Global context pointer, GP
+// r14 Frame pointer, FP
+// r15 Stack pointer, SP
+
+static int
+slp_switch(void)
+{
+ int err;
+ void* fp;
+ int *stackref, stsizediff;
+ __asm__ volatile("" : : : REGS_TO_SAVE);
+ __asm__ volatile("mov.l r14, %0" : "=m"(fp) : :);
+ __asm__("mov r15, %0" : "=r"(stackref));
+ {
+ SLP_SAVE_STATE(stackref, stsizediff);
+ __asm__ volatile(
+ "add %0, r15\n"
+ "add %0, r14\n"
+ : /* no outputs */
+ : "r"(stsizediff));
+ SLP_RESTORE_STATE();
+ __asm__ volatile("mov r0, %0" : "=r"(err) : :);
+ }
+ __asm__ volatile("mov.l %0, r14" : : "m"(fp) :);
+ __asm__ volatile("" : : : REGS_TO_SAVE);
+ return err;
+}
+
+#endif