Ver Fonte

m68k: add fix from upstream for awk issue

Waldemar Brodkorb há 9 meses atrás
pai
commit
bc31f8bc53

+ 46 - 0
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
+

+ 0 - 172
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