Since I like my sparc64 server and I like it to run roundcube lets bring
modern php to sparc64.

I sat down and implemented the necessary fiber ASM which could also be
used in boost-context (but that code needs an additional ontop_fcontext()
function).

I built 8.1, 8.2 and 8.3 with this diff and ran make test (for 8.2 and
8.1). All fiber related tests pass so I think this could be good enough.

sparc64 is a funky arch since the register windows hide all callee saved
registers (if you save and restore in the jump function). So the
implementation of jump_fcontext() is trivial. Also no FPU context needs to
be saved (again all registers are volatile accross function calls).
I'm not 100% sure about %g2, %g3, %g6 and %g7 from my understanding those
are either scratch regs (and therefor volatile) or must not be changed by
userland code (e.g. %g7 for TLS). From my understanding only %g7 has a
special meaning on OpenBSD but this information about the ABI is very
vague.

In make_fcontext() I need an extra trampoline since stackghost does not
allow me to alter / fake the return address of the function called.

Does someone know of some PHP code that heavily depends on fiber?
-- 
:wq Claudio

Index: 8.1/Makefile
===================================================================
RCS file: /cvs/ports/lang/php/8.1/Makefile,v
diff -u -p -r1.45 Makefile
--- 8.1/Makefile        22 Dec 2023 13:30:56 -0000      1.45
+++ 8.1/Makefile        6 Feb 2024 16:32:11 -0000
@@ -1,5 +1,3 @@
-BROKEN-sparc64=        fibers requires either ucontext or asm code (not 
present for sparc64)
-
 PHP_VERSION=   8.1.27
 PHP_PKGSPEC=   >=8.1,<8.2
 
Index: 8.1/patches/patch-Zend_asm_jump_sparc64_sysv_elf_gas_S
===================================================================
RCS file: 8.1/patches/patch-Zend_asm_jump_sparc64_sysv_elf_gas_S
diff -N 8.1/patches/patch-Zend_asm_jump_sparc64_sysv_elf_gas_S
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 8.1/patches/patch-Zend_asm_jump_sparc64_sysv_elf_gas_S      6 Feb 2024 
16:32:11 -0000
@@ -0,0 +1,55 @@
+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
Index: 8.1/patches/patch-Zend_asm_make_sparc64_sysv_elf_gas_S
===================================================================
RCS file: 8.1/patches/patch-Zend_asm_make_sparc64_sysv_elf_gas_S
diff -N 8.1/patches/patch-Zend_asm_make_sparc64_sysv_elf_gas_S
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 8.1/patches/patch-Zend_asm_make_sparc64_sysv_elf_gas_S      6 Feb 2024 
16:32:11 -0000
@@ -0,0 +1,73 @@
+Index: Zend/asm/make_sparc64_sysv_elf_gas.S
+--- Zend/asm/make_sparc64_sysv_elf_gas.S.orig
++++ Zend/asm/make_sparc64_sysv_elf_gas.S
+@@ -0,0 +1,69 @@
++/*
++       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)
++*/
++
++/*
++ * void *make_fcontext(void *sp, size_t size, void (*fn)(boost_context_data));
++ */
++#define FRAMESIZE 176
++#define BIAS 2047
++#define FP 112
++#define SP 128
++#define I7 136
++
++.file "make_sparc64_sysv_elf_gas.S"
++.text
++.align  4
++.global make_fcontext
++.type   make_fcontext, %function
++make_fcontext:
++      save    %sp, -FRAMESIZE, %sp
++
++      # shift address in %i0 (allocated stack) to lower 16 byte boundary
++      and     %i0, -0xf, %i0
++
++      # reserve space for two frames on the stack
++      # the first frame is for the call the second one holds the data
++      # for jump_fcontext
++      sub     %i0, 2 * FRAMESIZE, %i0
++      
++      # third argument of make_fcontext() is the context-function to call
++      # store it in the first stack frame, also clear %fp there to indicate
++      # the end of the stack.
++      stx     %i2, [%i0 + FRAMESIZE + I7]
++      stx     %g0, [%i0 + FRAMESIZE + FP]
++
++      # On OpenBSD stackghost prevents overriding the return address on
++      # a stack frame. So this code uses an extra trampoline to load
++      # to call the context-function and then do the _exit(0) dance.
++      # Extract the full address of the trampoline via pc relative addressing
++1:
++      rd      %pc, %l0
++      add     %l0, (trampoline - 1b - 8), %l0
++      stx     %l0, [%i0 + I7]
++
++      # Save framepointer to first stack frame but first substract the BIAS 
++      add     %i0, FRAMESIZE - BIAS, %l0
++      stx     %l0, [%i0 + SP]
++
++      # Return context-data which is also includes the BIAS
++      sub     %i0, BIAS, %i0
++      ret
++       restore
++
++trampoline:
++      ldx     [%sp + BIAS + I7], %l0
++
++      # no need to setup boost_context_data, already in %o0 and %o1
++      jmpl    %l0, %o7
++       nop
++
++      call    _exit
++       clr    %o0
++      unimp
++.size make_fcontext,.-make_fcontext
++# Mark that we don't need executable stack.
++.section .note.GNU-stack,"",%progbits
Index: 8.1/patches/patch-configure_ac
===================================================================
RCS file: /cvs/ports/lang/php/8.1/patches/patch-configure_ac,v
diff -u -p -r1.11 patch-configure_ac
--- 8.1/patches/patch-configure_ac      28 Sep 2023 23:29:08 -0000      1.11
+++ 8.1/patches/patch-configure_ac      6 Feb 2024 16:32:11 -0000
@@ -21,7 +21,23 @@ Index: configure.ac
      if test -z "$PHP_MODULES" && test -z "$PHP_ZEND_EX"; then
        enable_shared=no
      fi
-@@ -1383,7 +1383,7 @@ EXPANDED_SYSCONFDIR=`eval echo $sysconfdir`
+@@ -1216,6 +1216,7 @@ AS_CASE([$host_cpu],
+   [s390x*], [fiber_cpu="s390x"],
+   [mips64*], [fiber_cpu="mips64"],
+   [mips*], [fiber_cpu="mips32"],
++  [sparc64], [fiber_cpu="sparc64"],
+   [fiber_cpu="unknown"]
+ )
+ 
+@@ -1237,6 +1238,7 @@ AS_CASE([$fiber_cpu],
+   [s390x], [fiber_asm_file_prefix="s390x_sysv"],
+   [mips64], [fiber_asm_file_prefix="mips64_n64"],
+   [mips32], [fiber_asm_file_prefix="mips32_o32"],
++  [sparc64], [fiber_asm_file_prefix="sparc64_sysv"],
+   [fiber_asm_file_prefix="unknown"]
+ )
+ 
+@@ -1383,7 +1385,7 @@ EXPANDED_SYSCONFDIR=`eval echo $sysconfdir`
  EXPANDED_DATADIR=$datadir
  EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"`
  EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=`eval echo "$PHP_CONFIG_FILE_SCAN_DIR"`
Index: 8.2/Makefile
===================================================================
RCS file: /cvs/ports/lang/php/8.2/Makefile,v
diff -u -p -r1.21 Makefile
--- 8.2/Makefile        21 Jan 2024 10:51:30 -0000      1.21
+++ 8.2/Makefile        6 Feb 2024 16:32:11 -0000
@@ -1,5 +1,3 @@
-BROKEN-sparc64= fibers requires either ucontext or asm code (not present for 
sparc64)
-
 PHP_VERSION=   8.2.15
 PHP_PKGSPEC=   >=8.2,<8.3
 
Index: 8.2/patches/patch-Zend_asm_jump_sparc64_sysv_elf_gas_S
===================================================================
RCS file: 8.2/patches/patch-Zend_asm_jump_sparc64_sysv_elf_gas_S
diff -N 8.2/patches/patch-Zend_asm_jump_sparc64_sysv_elf_gas_S
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 8.2/patches/patch-Zend_asm_jump_sparc64_sysv_elf_gas_S      6 Feb 2024 
16:32:11 -0000
@@ -0,0 +1,55 @@
+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
Index: 8.2/patches/patch-Zend_asm_make_sparc64_sysv_elf_gas_S
===================================================================
RCS file: 8.2/patches/patch-Zend_asm_make_sparc64_sysv_elf_gas_S
diff -N 8.2/patches/patch-Zend_asm_make_sparc64_sysv_elf_gas_S
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 8.2/patches/patch-Zend_asm_make_sparc64_sysv_elf_gas_S      6 Feb 2024 
16:32:11 -0000
@@ -0,0 +1,73 @@
+Index: Zend/asm/make_sparc64_sysv_elf_gas.S
+--- Zend/asm/make_sparc64_sysv_elf_gas.S.orig
++++ Zend/asm/make_sparc64_sysv_elf_gas.S
+@@ -0,0 +1,69 @@
++/*
++       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)
++*/
++
++/*
++ * void *make_fcontext(void *sp, size_t size, void (*fn)(boost_context_data));
++ */
++#define FRAMESIZE 176
++#define BIAS 2047
++#define FP 112
++#define SP 128
++#define I7 136
++
++.file "make_sparc64_sysv_elf_gas.S"
++.text
++.align  4
++.global make_fcontext
++.type   make_fcontext, %function
++make_fcontext:
++      save    %sp, -FRAMESIZE, %sp
++
++      # shift address in %i0 (allocated stack) to lower 16 byte boundary
++      and     %i0, -0xf, %i0
++
++      # reserve space for two frames on the stack
++      # the first frame is for the call the second one holds the data
++      # for jump_fcontext
++      sub     %i0, 2 * FRAMESIZE, %i0
++      
++      # third argument of make_fcontext() is the context-function to call
++      # store it in the first stack frame, also clear %fp there to indicate
++      # the end of the stack.
++      stx     %i2, [%i0 + FRAMESIZE + I7]
++      stx     %g0, [%i0 + FRAMESIZE + FP]
++
++      # On OpenBSD stackghost prevents overriding the return address on
++      # a stack frame. So this code uses an extra trampoline to load
++      # to call the context-function and then do the _exit(0) dance.
++      # Extract the full address of the trampoline via pc relative addressing
++1:
++      rd      %pc, %l0
++      add     %l0, (trampoline - 1b - 8), %l0
++      stx     %l0, [%i0 + I7]
++
++      # Save framepointer to first stack frame but first substract the BIAS 
++      add     %i0, FRAMESIZE - BIAS, %l0
++      stx     %l0, [%i0 + SP]
++
++      # Return context-data which is also includes the BIAS
++      sub     %i0, BIAS, %i0
++      ret
++       restore
++
++trampoline:
++      ldx     [%sp + BIAS + I7], %l0
++
++      # no need to setup boost_context_data, already in %o0 and %o1
++      jmpl    %l0, %o7
++       nop
++
++      call    _exit
++       clr    %o0
++      unimp
++.size make_fcontext,.-make_fcontext
++# Mark that we don't need executable stack.
++.section .note.GNU-stack,"",%progbits
Index: 8.2/patches/patch-configure_ac
===================================================================
RCS file: /cvs/ports/lang/php/8.2/patches/patch-configure_ac,v
diff -u -p -r1.6 patch-configure_ac
--- 8.2/patches/patch-configure_ac      28 Sep 2023 23:28:58 -0000      1.6
+++ 8.2/patches/patch-configure_ac      6 Feb 2024 16:32:11 -0000
@@ -21,7 +21,23 @@ Index: configure.ac
      if test -z "$PHP_MODULES" && test -z "$PHP_ZEND_EX"; then
        enable_shared=no
      fi
-@@ -1424,7 +1424,7 @@ EXPANDED_SYSCONFDIR=`eval echo $sysconfdir`
+@@ -1257,6 +1257,7 @@ AS_CASE([$host_cpu],
+   [s390x*], [fiber_cpu="s390x"],
+   [mips64*], [fiber_cpu="mips64"],
+   [mips*], [fiber_cpu="mips32"],
++  [sparc64], [fiber_cpu="sparc64"],
+   [fiber_cpu="unknown"]
+ )
+ 
+@@ -1278,6 +1279,7 @@ AS_CASE([$fiber_cpu],
+   [s390x], [fiber_asm_file_prefix="s390x_sysv"],
+   [mips64], [fiber_asm_file_prefix="mips64_n64"],
+   [mips32], [fiber_asm_file_prefix="mips32_o32"],
++  [sparc64], [fiber_asm_file_prefix="sparc64_sysv"],
+   [fiber_asm_file_prefix="unknown"]
+ )
+ 
+@@ -1424,7 +1426,7 @@ EXPANDED_SYSCONFDIR=`eval echo $sysconfdir`
  EXPANDED_DATADIR=$datadir
  EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"`
  EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=`eval echo "$PHP_CONFIG_FILE_SCAN_DIR"`
Index: 8.3/Makefile
===================================================================
RCS file: /cvs/ports/lang/php/8.3/Makefile,v
diff -u -p -r1.3 Makefile
--- 8.3/Makefile        21 Jan 2024 10:51:45 -0000      1.3
+++ 8.3/Makefile        6 Feb 2024 16:32:11 -0000
@@ -1,5 +1,3 @@
-BROKEN-sparc64= fibers requires either ucontext or asm code (not present for 
sparc64)
-
 PHP_VERSION=   8.3.2
 PHP_PKGSPEC=   >=8.3,<8.4
 
Index: 8.3/patches/patch-Zend_asm_jump_sparc64_sysv_elf_gas_S
===================================================================
RCS file: 8.3/patches/patch-Zend_asm_jump_sparc64_sysv_elf_gas_S
diff -N 8.3/patches/patch-Zend_asm_jump_sparc64_sysv_elf_gas_S
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 8.3/patches/patch-Zend_asm_jump_sparc64_sysv_elf_gas_S      6 Feb 2024 
16:32:11 -0000
@@ -0,0 +1,55 @@
+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
Index: 8.3/patches/patch-Zend_asm_make_sparc64_sysv_elf_gas_S
===================================================================
RCS file: 8.3/patches/patch-Zend_asm_make_sparc64_sysv_elf_gas_S
diff -N 8.3/patches/patch-Zend_asm_make_sparc64_sysv_elf_gas_S
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 8.3/patches/patch-Zend_asm_make_sparc64_sysv_elf_gas_S      6 Feb 2024 
16:32:11 -0000
@@ -0,0 +1,73 @@
+Index: Zend/asm/make_sparc64_sysv_elf_gas.S
+--- Zend/asm/make_sparc64_sysv_elf_gas.S.orig
++++ Zend/asm/make_sparc64_sysv_elf_gas.S
+@@ -0,0 +1,69 @@
++/*
++       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)
++*/
++
++/*
++ * void *make_fcontext(void *sp, size_t size, void (*fn)(boost_context_data));
++ */
++#define FRAMESIZE 176
++#define BIAS 2047
++#define FP 112
++#define SP 128
++#define I7 136
++
++.file "make_sparc64_sysv_elf_gas.S"
++.text
++.align  4
++.global make_fcontext
++.type   make_fcontext, %function
++make_fcontext:
++      save    %sp, -FRAMESIZE, %sp
++
++      # shift address in %i0 (allocated stack) to lower 16 byte boundary
++      and     %i0, -0xf, %i0
++
++      # reserve space for two frames on the stack
++      # the first frame is for the call the second one holds the data
++      # for jump_fcontext
++      sub     %i0, 2 * FRAMESIZE, %i0
++      
++      # third argument of make_fcontext() is the context-function to call
++      # store it in the first stack frame, also clear %fp there to indicate
++      # the end of the stack.
++      stx     %i2, [%i0 + FRAMESIZE + I7]
++      stx     %g0, [%i0 + FRAMESIZE + FP]
++
++      # On OpenBSD stackghost prevents overriding the return address on
++      # a stack frame. So this code uses an extra trampoline to load
++      # to call the context-function and then do the _exit(0) dance.
++      # Extract the full address of the trampoline via pc relative addressing
++1:
++      rd      %pc, %l0
++      add     %l0, (trampoline - 1b - 8), %l0
++      stx     %l0, [%i0 + I7]
++
++      # Save framepointer to first stack frame but first substract the BIAS 
++      add     %i0, FRAMESIZE - BIAS, %l0
++      stx     %l0, [%i0 + SP]
++
++      # Return context-data which is also includes the BIAS
++      sub     %i0, BIAS, %i0
++      ret
++       restore
++
++trampoline:
++      ldx     [%sp + BIAS + I7], %l0
++
++      # no need to setup boost_context_data, already in %o0 and %o1
++      jmpl    %l0, %o7
++       nop
++
++      call    _exit
++       clr    %o0
++      unimp
++.size make_fcontext,.-make_fcontext
++# Mark that we don't need executable stack.
++.section .note.GNU-stack,"",%progbits
Index: 8.3/patches/patch-configure_ac
===================================================================
RCS file: /cvs/ports/lang/php/8.3/patches/patch-configure_ac,v
diff -u -p -r1.1 patch-configure_ac
--- 8.3/patches/patch-configure_ac      27 Nov 2023 19:02:16 -0000      1.1
+++ 8.3/patches/patch-configure_ac      6 Feb 2024 16:32:11 -0000
@@ -21,7 +21,23 @@ Index: configure.ac
      if test -z "$PHP_MODULES" && test -z "$PHP_ZEND_EX"; then
        enable_shared=no
      fi
-@@ -1463,7 +1463,7 @@ EXPANDED_SYSCONFDIR=`eval echo $sysconfdir`
+@@ -1272,6 +1272,7 @@ AS_CASE([$host_cpu],
+   [s390x*], [fiber_cpu="s390x"],
+   [mips64*], [fiber_cpu="mips64"],
+   [mips*], [fiber_cpu="mips32"],
++  [sparc64], [fiber_cpu="sparc64"],
+   [fiber_cpu="unknown"]
+ )
+ 
+@@ -1293,6 +1294,7 @@ AS_CASE([$fiber_cpu],
+   [s390x], [fiber_asm_file_prefix="s390x_sysv"],
+   [mips64], [fiber_asm_file_prefix="mips64_n64"],
+   [mips32], [fiber_asm_file_prefix="mips32_o32"],
++  [sparc64], [fiber_asm_file_prefix="sparc64_sysv"],
+   [fiber_asm_file_prefix="unknown"]
+ )
+ 
+@@ -1463,7 +1465,7 @@ EXPANDED_SYSCONFDIR=`eval echo $sysconfdir`
  EXPANDED_DATADIR=$datadir
  EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"`
  EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=`eval echo "$PHP_CONFIG_FILE_SCAN_DIR"`

Reply via email to