diff --git a/package/libffi/0002-arc-Fix-warnings.patch b/package/libffi/0002-arc-Fix-warnings.patch new file mode 100644 index 0000000000..45a2c9dbd7 --- /dev/null +++ b/package/libffi/0002-arc-Fix-warnings.patch @@ -0,0 +1,56 @@ +From 4f25e5be1a8a429b6925527c1cb94b6acd05642b Mon Sep 17 00:00:00 2001 +From: Yuriy Kolerov +Date: Wed, 17 Jul 2024 18:56:52 +0300 +Subject: [PATCH] arc: Fix warnings + +These warnings are fixed: + +1. A series of "unused variables". +2. Implicit conversion from a pointer to uint32_t. + +Signed-off-by: Yuriy Kolerov +Upstream: https://github.com/libffi/libffi/pull/844 +Signed-off-by: Thomas Petazzoni +--- + src/arc/ffi.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/arc/ffi.c b/src/arc/ffi.c +index d729274..0632319 100644 +--- a/src/arc/ffi.c ++++ b/src/arc/ffi.c +@@ -192,9 +192,10 @@ static void unmarshal_atom(call_builder *cb, int type, void *data) { + /* for arguments passed by reference returns the pointer, otherwise the arg is copied (up to MAXCOPYARG bytes) */ + static void *unmarshal(call_builder *cb, ffi_type *type, int var, void *data) { + size_t realign[2]; +- void *pointer; + + #if defined(__ARC64_ARCH64__) ++ void *pointer; ++ + if (type->size > 2 * __SIZEOF_POINTER__) { + /* pass by reference */ + unmarshal_atom(cb, FFI_TYPE_POINTER, (char*)&pointer); +@@ -348,7 +349,10 @@ ffi_prep_closure_loc (ffi_closure * closure, ffi_cif * cif, + void *user_data, void *codeloc) + { + uint32_t *tramp = (uint32_t *) & (closure->tramp[0]); ++ ++#if defined(__ARC64_ARCH64__) + size_t address_ffi_closure = (size_t) ffi_closure_asm; ++#endif + + switch (cif->abi) + { +@@ -367,7 +371,7 @@ ffi_prep_closure_loc (ffi_closure * closure, ffi_cif * cif, + FFI_ASSERT (tramp == codeloc); + tramp[0] = CODE_ENDIAN (0x200a1fc0); /* mov r8, pcl */ + tramp[1] = CODE_ENDIAN (0x20200f80); /* j [long imm] */ +- tramp[2] = CODE_ENDIAN (ffi_closure_asm); ++ tramp[2] = CODE_ENDIAN ((uint32_t) ffi_closure_asm); + break; + #endif + +-- +2.46.0 + diff --git a/package/libffi/0003-arc-Do-not-use-mov_s-and-movl_s-instructions.patch b/package/libffi/0003-arc-Do-not-use-mov_s-and-movl_s-instructions.patch new file mode 100644 index 0000000000..3577ddf19d --- /dev/null +++ b/package/libffi/0003-arc-Do-not-use-mov_s-and-movl_s-instructions.patch @@ -0,0 +1,45 @@ +From 97c273519e41a7ef2841cb7531c6eda01fc69dc2 Mon Sep 17 00:00:00 2001 +From: Yuriy Kolerov +Date: Wed, 17 Jul 2024 19:19:30 +0300 +Subject: [PATCH] arc: Do not use mov_s and movl_s instructions + +mov_s and movl_s instructions use a restricted set of registers. +However, a list of available registers for such instructions for +one ARC target may not match a list for another ARC targets. For +example, it is applicable to ARC700 and ARC HS3x/4x - build +fails because mov_s formats may be incompatible in some cases. + +The easiest and the most straightforward way to fix this issue +is to use mov and movl instead of mov_s and movl_s. + +Signed-off-by: Yuriy Kolerov +Upstream: https://github.com/libffi/libffi/pull/844 +Signed-off-by: Thomas Petazzoni +--- + src/arc/arcompact.S | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/arc/arcompact.S b/src/arc/arcompact.S +index 1d7f1a1..e749341 100644 +--- a/src/arc/arcompact.S ++++ b/src/arc/arcompact.S +@@ -39,14 +39,14 @@ + #define LARG ldl + #define SARG stl + #define ADDPTR addl +-#define MOVPTR movl_s ++#define MOVPTR movl + #else + #define PTRS 4 + #define FLTS 4 + #define LARG ld + #define SARG st + #define ADDPTR add +-#define MOVPTR mov_s ++#define MOVPTR mov + #endif + + #define FRAME_LEN (8 * PTRS + 16) +-- +2.46.0 +