mirror of
https://git.freebsd.org/ports.git
synced 2025-04-28 17:46:38 -04:00
253 lines
6.8 KiB
Diff
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
|