summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--toolchain/glibc/patches/2.38/0001-m68k-fix-__mpn_lshift-and-__mpn_rshift-for-non-68020.patch46
-rw-r--r--toolchain/glibc/patches/2.38/m68k-m68040.patch172
2 files changed, 46 insertions, 172 deletions
diff --git a/toolchain/glibc/patches/2.38/0001-m68k-fix-__mpn_lshift-and-__mpn_rshift-for-non-68020.patch b/toolchain/glibc/patches/2.38/0001-m68k-fix-__mpn_lshift-and-__mpn_rshift-for-non-68020.patch
new file mode 100644
index 000000000..d5d8e34e9
--- /dev/null
+++ b/toolchain/glibc/patches/2.38/0001-m68k-fix-__mpn_lshift-and-__mpn_rshift-for-non-68020.patch
@@ -0,0 +1,46 @@
+From 464fd8249e8b791248cab7b0e0cd91757435fa9e Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab@linux-m68k.org>
+Date: Thu, 17 Aug 2023 17:15:34 +0200
+Subject: [PATCH] m68k: fix __mpn_lshift and __mpn_rshift for non-68020
+
+From revision 03f3d275d0d6 in the gmp repository.
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+---
+ sysdeps/m68k/m680x0/lshift.S | 4 ++--
+ sysdeps/m68k/m680x0/rshift.S | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/sysdeps/m68k/m680x0/lshift.S b/sysdeps/m68k/m680x0/lshift.S
+index 2aee10348e..4240738959 100644
+--- a/sysdeps/m68k/m680x0/lshift.S
++++ b/sysdeps/m68k/m680x0/lshift.S
+@@ -77,8 +77,8 @@ L(Lnormal:)
+ #else /* not mc68000 */
+ movel R(s_size),R(d0)
+ asll #2,R(d0)
+- addl R(s_size),R(s_ptr)
+- addl R(s_size),R(res_ptr)
++ addl R(d0),R(s_ptr)
++ addl R(d0),R(res_ptr)
+ #endif
+ movel MEM_PREDEC(s_ptr),R(d2)
+ movel R(d2),R(d0)
+diff --git a/sysdeps/m68k/m680x0/rshift.S b/sysdeps/m68k/m680x0/rshift.S
+index d16bca9307..d56a2b4a44 100644
+--- a/sysdeps/m68k/m680x0/rshift.S
++++ b/sysdeps/m68k/m680x0/rshift.S
+@@ -127,8 +127,8 @@ L(Lspecial:)
+ #else /* not mc68000 */
+ movel R(s_size),R(d0)
+ asll #2,R(d0)
+- addl R(s_size),R(s_ptr)
+- addl R(s_size),R(res_ptr)
++ addl R(d0),R(s_ptr)
++ addl R(d0),R(res_ptr)
+ #endif
+
+ clrl R(d0) /* initialize carry */
+--
+2.39.2
+
diff --git a/toolchain/glibc/patches/2.38/m68k-m68040.patch b/toolchain/glibc/patches/2.38/m68k-m68040.patch
index 7631a00f6..bfa0b3da8 100644
--- a/toolchain/glibc/patches/2.38/m68k-m68040.patch
+++ b/toolchain/glibc/patches/2.38/m68k-m68040.patch
@@ -27,178 +27,6 @@ diff -Nur glibc-2.38.orig/sysdeps/m68k/m680x0/bits/flt-eval-method.h glibc-2.38/
-/* The m68k FPUs evaluate all values in the 96-bit floating-point
- format which is also available for the user as 'long double'. */
-#define __GLIBC_FLT_EVAL_METHOD 2
-diff -Nur glibc-2.38.orig/sysdeps/m68k/m680x0/lshift.S glibc-2.38/sysdeps/m68k/m680x0/lshift.S
---- glibc-2.38.orig/sysdeps/m68k/m680x0/lshift.S 2023-07-31 19:54:16.000000000 +0200
-+++ glibc-2.38/sysdeps/m68k/m680x0/lshift.S 1970-01-01 01:00:00.000000000 +0100
-@@ -1,168 +0,0 @@
--/* mc68020 __mpn_lshift -- Shift left a low-level natural-number integer.
--
--Copyright (C) 1996-2023 Free Software Foundation, Inc.
--
--This file is part of the GNU MP Library.
--
--The GNU MP Library is free software; you can redistribute it and/or modify
--it under the terms of the GNU Lesser General Public License as published by
--the Free Software Foundation; either version 2.1 of the License, or (at your
--option) any later version.
--
--The GNU MP Library is distributed in the hope that it will be useful, but
--WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
--or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
--License for more details.
--
--You should have received a copy of the GNU Lesser General Public License
--along with the GNU MP Library. If not, see <https://www.gnu.org/licenses/>. */
--
--/*
-- INPUT PARAMETERS
-- res_ptr (sp + 4)
-- s_ptr (sp + 8)
-- s_size (sp + 16)
-- cnt (sp + 12)
--*/
--
--#include "sysdep.h"
--#include "asm-syntax.h"
--
--#define res_ptr a1
--#define s_ptr a0
--#define s_size d6
--#define cnt d4
--
-- TEXT
--ENTRY(__mpn_lshift)
--
--/* Save used registers on the stack. */
-- moveml R(d2)-R(d6)/R(a2),MEM_PREDEC(sp)
-- cfi_adjust_cfa_offset (6*4)
-- cfi_rel_offset (R(d2), 0)
-- cfi_rel_offset (R(d3), 4)
-- cfi_rel_offset (R(d4), 8)
-- cfi_rel_offset (R(d5), 12)
-- cfi_rel_offset (R(d6), 16)
-- cfi_rel_offset (R(a2), 20)
--
--/* Copy the arguments to registers. */
-- movel MEM_DISP(sp,28),R(res_ptr)
-- movel MEM_DISP(sp,32),R(s_ptr)
-- movel MEM_DISP(sp,36),R(s_size)
-- movel MEM_DISP(sp,40),R(cnt)
--
-- moveql #1,R(d5)
-- cmpl R(d5),R(cnt)
-- bne L(Lnormal)
-- cmpl R(s_ptr),R(res_ptr)
-- bls L(Lspecial) /* jump if s_ptr >= res_ptr */
--#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020))
-- lea MEM_INDX1(s_ptr,s_size,l,4),R(a2)
--#else /* not mc68020 */
-- movel R(s_size),R(d0)
-- asll #2,R(d0)
-- lea MEM_INDX(s_ptr,d0,l),R(a2)
--#endif
-- cmpl R(res_ptr),R(a2)
-- bls L(Lspecial) /* jump if res_ptr >= s_ptr + s_size */
--
--L(Lnormal:)
-- moveql #32,R(d5)
-- subl R(cnt),R(d5)
--
--#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020))
-- lea MEM_INDX1(s_ptr,s_size,l,4),R(s_ptr)
-- lea MEM_INDX1(res_ptr,s_size,l,4),R(res_ptr)
--#else /* not mc68000 */
-- movel R(s_size),R(d0)
-- asll #2,R(d0)
-- addl R(s_size),R(s_ptr)
-- addl R(s_size),R(res_ptr)
--#endif
-- movel MEM_PREDEC(s_ptr),R(d2)
-- movel R(d2),R(d0)
-- lsrl R(d5),R(d0) /* compute carry limb */
--
-- lsll R(cnt),R(d2)
-- movel R(d2),R(d1)
-- subql #1,R(s_size)
-- beq L(Lend)
-- lsrl #1,R(s_size)
-- bcs L(L1)
-- subql #1,R(s_size)
--
--L(Loop:)
-- movel MEM_PREDEC(s_ptr),R(d2)
-- movel R(d2),R(d3)
-- lsrl R(d5),R(d3)
-- orl R(d3),R(d1)
-- movel R(d1),MEM_PREDEC(res_ptr)
-- lsll R(cnt),R(d2)
--L(L1:)
-- movel MEM_PREDEC(s_ptr),R(d1)
-- movel R(d1),R(d3)
-- lsrl R(d5),R(d3)
-- orl R(d3),R(d2)
-- movel R(d2),MEM_PREDEC(res_ptr)
-- lsll R(cnt),R(d1)
--
-- dbf R(s_size),L(Loop)
-- subl #0x10000,R(s_size)
-- bcc L(Loop)
--
--L(Lend:)
-- movel R(d1),MEM_PREDEC(res_ptr) /* store least significant limb */
--
--/* Restore used registers from stack frame. */
-- moveml MEM_POSTINC(sp),R(d2)-R(d6)/R(a2)
-- cfi_remember_state
-- cfi_adjust_cfa_offset (-6*4)
-- cfi_restore (R(d2))
-- cfi_restore (R(d3))
-- cfi_restore (R(d4))
-- cfi_restore (R(d5))
-- cfi_restore (R(d6))
-- cfi_restore (R(a2))
-- rts
--
--/* We loop from least significant end of the arrays, which is only
-- permissible if the source and destination don't overlap, since the
-- function is documented to work for overlapping source and destination. */
--
-- cfi_restore_state
--L(Lspecial:)
-- clrl R(d0) /* initialize carry */
-- eorw #1,R(s_size)
-- lsrl #1,R(s_size)
-- bcc L(LL1)
-- subql #1,R(s_size)
--
--L(LLoop:)
-- movel MEM_POSTINC(s_ptr),R(d2)
-- addxl R(d2),R(d2)
-- movel R(d2),MEM_POSTINC(res_ptr)
--L(LL1:)
-- movel MEM_POSTINC(s_ptr),R(d2)
-- addxl R(d2),R(d2)
-- movel R(d2),MEM_POSTINC(res_ptr)
--
-- dbf R(s_size),L(LLoop)
-- addxl R(d0),R(d0) /* save cy in lsb */
-- subl #0x10000,R(s_size)
-- bcs L(LLend)
-- lsrl #1,R(d0) /* restore cy */
-- bra L(LLoop)
--
--L(LLend:)
--/* Restore used registers from stack frame. */
-- moveml MEM_POSTINC(sp),R(d2)-R(d6)/R(a2)
-- cfi_adjust_cfa_offset (-6*4)
-- cfi_restore (R(d2))
-- cfi_restore (R(d3))
-- cfi_restore (R(d4))
-- cfi_restore (R(d5))
-- cfi_restore (R(d6))
-- cfi_restore (R(a2))
-- rts
--END(__mpn_lshift)
diff -Nur glibc-2.38.orig/sysdeps/m68k/m680x0/m68020/wordcopy.S glibc-2.38/sysdeps/m68k/m680x0/m68020/wordcopy.S
--- glibc-2.38.orig/sysdeps/m68k/m680x0/m68020/wordcopy.S 2023-07-31 19:54:16.000000000 +0200
+++ glibc-2.38/sysdeps/m68k/m680x0/m68020/wordcopy.S 1970-01-01 01:00:00.000000000 +0100