This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Crosstool sh4-linux-gcc-4.0.2-glibc-2.3.5 patches


Hi,

attached you find the files I needed to add to crosstool-0.38
in order to build a sh4-linux gcc-4.0.2-glibc-2.3.5 tool chain.

Files attached:

sh4-gcc4.dat:
	* gcc4 needs --with-multilib-list=m4,m4-nofpu otherwise a linux
	kernel won't build as it uses the -m4-nofpu option.

gcc-pr21623.patch:
	* Kaz Kojima provided a patch for PR21623.

glibc-2.3.5-sh-memset.patch:
	* A patch for glibc-2.3.5 which corrects memset. From SUGIOKA Toshinobu.
	See content for rationale.


-- 
Regards,
	Alexander
2005-09-30  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (sh_register_move_cost): Add case for moving
	from T_REGS to FP register class.

diff -up ORIG/gcc/gcc/config/sh/sh.c TMP/gcc/gcc/config/sh/sh.c
--- gcc/gcc/config/sh/sh.c	2005-09-07 06:16:56.000000000 +0900
+++ gcc/gcc/config/sh/sh.c	2005-09-30 07:06:35.000000000 +0900
@@ -9491,6 +9491,9 @@ sh_register_move_cost (enum machine_mode
       && REGCLASS_HAS_FP_REG (dstclass))
     return 4;
 
+  if (REGCLASS_HAS_FP_REG (dstclass) && srcclass == T_REGS)
+    return ((TARGET_HARD_SH4 && !optimize_size) ? 10 : 7);
+
   if ((REGCLASS_HAS_FP_REG (dstclass) && srcclass == MAC_REGS)
       || (dstclass == MAC_REGS && REGCLASS_HAS_FP_REG (srcclass)))
     return 9;
KERNELCONFIG=`pwd`/sh4.config
TARGET=sh4-linux
TARGET_CFLAGS="-O -ml -m4"
GCC_EXTRA_CONFIG="--with-multilib-list=m4,m4-nofpu"
GLIBC_CONFIGPARMS="no-z-defs=yes"
From: http://sources.redhat.com/ml/libc-alpha/2005-07/msg00051.html

 On sh[34]-linux, memset function does not work if 2nd argument is negative
 and 3rd argument is greater than 12.
 for example, memset(ptr, "\xda", 20) sets 0xff instead of 0xda.
 
 Attached patch fixes this problem.
 
 	* sysdeps/sh/memset.S (memset): Correct 2nd argument handling.
 
 diff -u -p -r1.4 memset.S
 --- glibc-2.3.5/sysdeps/sh/memset.S	29 Apr 2003 22:47:18 -0000	1.4
 +++ glibc-2.3.5/sysdeps/sh/memset.S	23 Jul 2005 08:37:21 -0000
 @@ -28,6 +28,7 @@ ENTRY(memset)
  	bt.s	L_byte_loop_init
  	mov	r4,r7
  
 +	extu.b	r5,r5
  	swap.b	r5,r1
  	or	r1,r5
  	swap.w	r5,r1
------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]