diff options
Diffstat (limited to 'toolchain')
-rw-r--r-- | toolchain/glibc/patches/2.38/0001-m68k-fix-__mpn_lshift-and-__mpn_rshift-for-non-68020.patch | 46 | ||||
-rw-r--r-- | toolchain/glibc/patches/2.38/m68k-m68040.patch | 172 |
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 |