aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/greenlet/platform/switch_arm64_masm.asm
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_arm64_masm.asm
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_arm64_masm.asm')
-rw-r--r--.venv/lib/python3.12/site-packages/greenlet/platform/switch_arm64_masm.asm53
1 files changed, 53 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/greenlet/platform/switch_arm64_masm.asm b/.venv/lib/python3.12/site-packages/greenlet/platform/switch_arm64_masm.asm
new file mode 100644
index 00000000..29f9c225
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/greenlet/platform/switch_arm64_masm.asm
@@ -0,0 +1,53 @@
+ AREA switch_arm64_masm, CODE, READONLY;
+ GLOBAL slp_switch [FUNC]
+ EXTERN slp_save_state_asm
+ EXTERN slp_restore_state_asm
+
+slp_switch
+ ; push callee saved registers to stack
+ stp x19, x20, [sp, #-16]!
+ stp x21, x22, [sp, #-16]!
+ stp x23, x24, [sp, #-16]!
+ stp x25, x26, [sp, #-16]!
+ stp x27, x28, [sp, #-16]!
+ stp x29, x30, [sp, #-16]!
+ stp d8, d9, [sp, #-16]!
+ stp d10, d11, [sp, #-16]!
+ stp d12, d13, [sp, #-16]!
+ stp d14, d15, [sp, #-16]!
+
+ ; call slp_save_state_asm with stack pointer
+ mov x0, sp
+ bl slp_save_state_asm
+
+ ; early return for return value of 1 and -1
+ cmp x0, #-1
+ b.eq RETURN
+ cmp x0, #1
+ b.eq RETURN
+
+ ; increment stack and frame pointer
+ add sp, sp, x0
+ add x29, x29, x0
+
+ bl slp_restore_state_asm
+
+ ; store return value for successful completion of routine
+ mov x0, #0
+
+RETURN
+ ; pop registers from stack
+ ldp d14, d15, [sp], #16
+ ldp d12, d13, [sp], #16
+ ldp d10, d11, [sp], #16
+ ldp d8, d9, [sp], #16
+ ldp x29, x30, [sp], #16
+ ldp x27, x28, [sp], #16
+ ldp x25, x26, [sp], #16
+ ldp x23, x24, [sp], #16
+ ldp x21, x22, [sp], #16
+ ldp x19, x20, [sp], #16
+
+ ret
+
+ END