ports/devel/ocaml-opam/files/patch-src__ext_ocaml-patches_0002-powerpc64.patch

253 lines
6.8 KiB
Diff

--- src_ext/ocaml-patches/0002-powerpc64.patch 2024-12-20 11:31:53 UTC
+++ src_ext/ocaml-patches/0002-powerpc64.patch
@@ -0,0 +1,250 @@
+--- a/asmcomp/power/arch.ml.orig 2024-03-14 14:46:35.000000000 +0000
++++ b/asmcomp/power/arch.ml
+@@ -28,7 +28,7 @@
+ let abi =
+ match Config.model with
+ | "ppc" -> ELF32
+- | "ppc64" -> ELF64v1
++ | "ppc64" -> ELF64v2
+ | "ppc64le" -> ELF64v2
+ | _ -> assert false
+
+--- a/runtime/caml/stack.h.orig 2024-03-14 14:46:35.000000000 +0000
++++ b/runtime/caml/stack.h
+@@ -35,10 +35,10 @@
+ #if defined(MODEL_ppc)
+ #define Saved_return_address(sp) *((intnat *)((sp) - 4))
+ #define Callback_link(sp) ((struct caml_context *)((sp) + 16))
+-#elif defined(MODEL_ppc64)
++#elif _CALL_ELF == 1
+ #define Saved_return_address(sp) *((intnat *)((sp) + 16))
+ #define Callback_link(sp) ((struct caml_context *)((sp) + (48 + 32)))
+-#elif defined(MODEL_ppc64le)
++#elif _CALL_ELF == 2
+ #define Saved_return_address(sp) *((intnat *)((sp) + 16))
+ #define Callback_link(sp) ((struct caml_context *)((sp) + (32 + 32)))
+ #else
+--- a/runtime/power.S.orig 2024-03-14 14:46:35.000000000 +0000
++++ b/runtime/power.S
+@@ -13,7 +13,7 @@
+ /* */
+ /**************************************************************************/
+
+-#if defined(MODEL_ppc64le)
++#if _CALL_ELF == 2
+ .abiversion 2
+ #endif
+
+@@ -27,7 +27,7 @@
+ #define DOMAIN_STATE_PTR 30
+ #define ALLOC_PTR 31
+
+-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le)
++#if _CALL_ELF == 1 || _CALL_ELF == 2
+ #define EITHER(a,b) b
+ #else
+ #define EITHER(a,b) a
+@@ -52,7 +52,7 @@
+ #define CALLBACK_LINK_SIZE 16
+ #define CALLBACK_LINK_OFFSET 0
+ #endif
+-#if defined(MODEL_ppc64)
++#if _CALL_ELF == 1
+ #define RESERVED_STACK 48
+ #define PARAM_SAVE_AREA (8*8)
+ #define LR_SAVE 16
+@@ -64,7 +64,7 @@
+ #define CALLBACK_LINK_SIZE 32
+ #define CALLBACK_LINK_OFFSET 48
+ #endif
+-#if defined(MODEL_ppc64le)
++#if _CALL_ELF == 2
+ #define RESERVED_STACK 32
+ #define PARAM_SAVE_AREA 0
+ #define LR_SAVE 16
+@@ -92,7 +92,7 @@
+
+ #endif
+
+-#if defined(MODEL_ppc64)
++#if _CALL_ELF == 1
+ #define FUNCTION(name) \
+ .section ".opd","aw"; \
+ .align 3; \
+@@ -108,7 +108,7 @@
+
+ #endif
+
+-#if defined(MODEL_ppc64le)
++#if _CALL_ELF == 2
+ #define FUNCTION(name) \
+ .section ".text"; \
+ .globl name; \
+@@ -133,7 +133,7 @@
+ addi reg, reg, glob@l
+ #endif
+
+-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le)
++#if _CALL_ELF == 1 || _CALL_ELF == 2
+
+ #define LSYMB(glob) .L##glob
+
+@@ -150,7 +150,7 @@
+
+ #define Caml_state(var) 8*domain_field_caml_##var(DOMAIN_STATE_PTR)
+
+-#if defined(MODEL_ppc64)
++#if _CALL_ELF == 1
+ .section ".opd","aw"
+ #else
+ .section ".text"
+@@ -237,7 +237,7 @@
+ stfdu 31, 8(11)
+ /* Call the GC */
+ bl caml_garbage_collection
+-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le)
++#if _CALL_ELF == 1 || _CALL_ELF == 2
+ nop
+ #endif
+ /* Reload new allocation pointer */
+@@ -329,14 +329,14 @@
+ #if defined(MODEL_ppc)
+ mtctr C_CALL_FUN
+ bctrl
+-#elif defined(MODEL_ppc64)
++#elif _CALL_ELF == 1
+ ld 0, 0(C_CALL_FUN)
+ mr C_CALL_TOC, 2 /* save current TOC in a callee-save register */
+ mtctr 0
+ ld 2, 8(C_CALL_FUN)
+ bctrl
+ mr 2, C_CALL_TOC /* restore current TOC */
+-#elif defined(MODEL_ppc64le)
++#elif _CALL_ELF == 2
+ mtctr C_CALL_FUN
+ mr 12, C_CALL_FUN
+ mr C_CALL_TOC, 2 /* save current TOC in a callee-save register */
+@@ -378,7 +378,7 @@
+ addi 1, 1, -(PARAM_SAVE_AREA + RESERVED_STACK)
+ /* reserve stack space for C call */
+ bl caml_stash_backtrace
+-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le)
++#if _CALL_ELF == 1 || _CALL_ELF == 2
+ nop
+ #endif
+ mr 3, 27 /* restore exn bucket */
+@@ -414,7 +414,7 @@
+ addi 1, 1, -(PARAM_SAVE_AREA + RESERVED_STACK)
+ /* reserve stack space for C call */
+ bl caml_stash_backtrace
+-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le)
++#if _CALL_ELF == 1 || _CALL_ELF == 2
+ nop
+ #endif
+ mr 3, 27 /* restore exn bucket */
+@@ -507,14 +507,14 @@
+ #if defined(MODEL_ppc)
+ mtctr 12
+ .L105: bctrl
+-#elif defined(MODEL_ppc64)
++#elif _CALL_ELF == 1
+ ld 0, 0(12)
+ mtctr 0
+ std 2, TOC_SAVE(1)
+ ld 2, 8(12)
+ .L105: bctrl
+ ld 2, TOC_SAVE(1)
+-#elif defined(MODEL_ppc64le)
++#elif _CALL_ELF == 2
+ mtctr 12
+ std 2, TOC_SAVE(1)
+ .L105: bctrl
+@@ -633,7 +633,7 @@
+ b .L102
+ ENDFUNCTION(caml_callback3_asm)
+
+-#if defined(MODEL_ppc64)
++#if _CALL_ELF == 1
+ .section ".opd","aw"
+ #else
+ .section ".text"
+@@ -655,7 +655,7 @@
+
+ /* TOC entries */
+
+-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le)
++#if _CALL_ELF == 1 || _CALL_ELF == 2
+
+ .section ".toc", "aw"
+
+--- a/testsuite/tools/asmgen_power.S.orig 2024-03-14 14:46:35.000000000 +0000
++++ b/testsuite/tools/asmgen_power.S
+@@ -10,7 +10,7 @@
+ /* */
+ /*********************************************************************/
+
+-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le)
++#if _CALL_ELF == 1 || _CALL_ELF == 2
+ #define EITHER(a,b) b
+ #else
+ #define EITHER(a,b) a
+@@ -26,11 +26,11 @@
+ #define RESERVED_STACK 16
+ #define LR_SAVE_AREA 4
+ #endif
+-#if defined(MODEL_ppc64)
++#if _CALL_ELF == 1
+ #define RESERVED_STACK 48
+ #define LR_SAVE_AREA 16
+ #endif
+-#if defined(MODEL_ppc64le)
++#if _CALL_ELF == 2
+ #define RESERVED_STACK 32
+ #define LR_SAVE_AREA 16
+ #endif
+@@ -46,7 +46,7 @@
+ name:
+ #endif
+
+-#if defined(MODEL_ppc64)
++#if _CALL_ELF == 1
+ #define FUNCTION(name) \
+ .section ".opd","aw"; \
+ .align 3; \
+@@ -58,7 +58,7 @@
+ .L.name:
+ #endif
+
+-#if defined(MODEL_ppc64le)
++#if _CALL_ELF == 2
+ #define FUNCTION(name) \
+ .section ".text"; \
+ .globl name; \
+@@ -118,11 +118,11 @@
+ /* Get function pointer in CTR */
+ #if defined(MODEL_ppc)
+ mtctr 3
+-#elif defined(MODEL_ppc64)
++#elif _CALL_ELF == 1
+ ld 0, 0(3)
+ mtctr 0
+ ld 2, 8(3)
+-#elif defined(MODEL_ppc64le)
++#elif _CALL_ELF == 2
+ mtctr 3
+ mr 12, 3
+ #else
+@@ -184,11 +184,11 @@
+ /* Jump to C function (address in r28) */
+ #if defined(MODEL_ppc)
+ mtctr 28
+-#elif defined(MODEL_ppc64)
++#elif _CALL_ELF == 1
+ ld 0, 0(28)
+ mtctr 0
+ ld 2, 8(28)
+-#elif defined(MODEL_ppc64le)
++#elif _CALL_ELF == 2
+ mtctr 28
+ mr 12, 28
+ #else