Index: Zend/asm/jump_sparc64_sysv_elf_gas.S
--- Zend/asm/jump_sparc64_sysv_elf_gas.S.orig
+++ Zend/asm/jump_sparc64_sysv_elf_gas.S
@@ -0,0 +1,51 @@
+/*
+       Copyright Claudio Jeker 2024
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENSE_1_0.txt or copy at
+          http://www.boost.org/LICENSE_1_0.txt)
+*/
+
+/*
+ * typedef struct {
+ *	void *handle;
+ *	zend_fiber_transfer *transfer;
+ * } boost_context_data;
+ *
+ * boost_context_data jump_fcontext(void *to, zend_fiber_transfer *transfer);
+ */
+#define FRAMESIZE 176
+#define BIAS 2047
+#define SP 128
+#define I7 136
+
+.file "jump_sparc64_sysv_elf_gas.S"
+.text
+.align  4
+.global jump_fcontext
+.type   jump_fcontext, %function
+jump_fcontext:
+	# prepare stack
+	save	%sp, -FRAMESIZE, %sp
+
+	# store framepointer and return address in slots reserved
+	# for arguments
+	stx %fp, [%sp + BIAS + SP]
+	stx %i7, [%sp + BIAS + I7]
+	mov %sp, %o0
+	# force flush register windows to stack and with that save context
+	flushw
+	# get SP (pointing to new context-data) from %i0 param
+	mov %i0, %sp
+	# load framepointer and return address from context
+	ldx [%sp + BIAS + SP], %fp
+	ldx [%sp + BIAS + I7], %i7
+
+	# store old %sp (pointing to old context-data) in %i0 as return
+	# *data stored in %i1 is unmodified
+	mov %o0, %i0
+
+	ret
+	 restore
+.size	jump_fcontext,.-jump_fcontext
+# Mark that we don't need executable stack.
+.section .note.GNU-stack,"",%progbits
