diff mbox

Add new target h8300-*-linux

Message ID 8761bn9f7k.wl-ysato@users.sourceforge.jp
State New
Headers show

Commit Message

Yoshinori Sato Jan. 31, 2015, 2:50 p.m. UTC
Updated.

copyright assignment process in progress.

Comments

Joseph Myers Feb. 1, 2015, 12:39 a.m. UTC | #1
On Sat, 31 Jan 2015, Yoshinori Sato wrote:

> +	* config/h8300/linux.h: New file.
> +	* config/h8300/t-linux: New file.

These files don't appear to be included in the patch.

> +h8300-*-linux*)
> +	tmake_file="t-linux h8300/t-linux t-fpbit"
> +	tm_file="$tm_file h8300/h8300-lib.h"
> +	;;

Is there a good reason for using fp-bit instead of soft-fp here?
Yoshinori Sato Feb. 3, 2015, 4:54 a.m. UTC | #2
At Sun, 1 Feb 2015 00:39:08 +0000,
Joseph Myers wrote:
> 
> On Sat, 31 Jan 2015, Yoshinori Sato wrote:
> 
> > +	* config/h8300/linux.h: New file.
> > +	* config/h8300/t-linux: New file.
> 
> These files don't appear to be included in the patch.

I'll resend it.

> > +h8300-*-linux*)
> > +	tmake_file="t-linux h8300/t-linux t-fpbit"
> > +	tm_file="$tm_file h8300/h8300-lib.h"
> > +	;;
> 
> Is there a good reason for using fp-bit instead of soft-fp here?

No. it copied from h8300-elf.

> -- 
> Joseph S. Myers
> joseph@codesourcery.com
diff mbox

Patch

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0e1e8bb..5fd857c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@ 
+2015-01-31  Yoshinori Sato  <ysato@users.sourceforge.jp>
+
+	* config.gcc: Add target h8300-linux.
+	* config/h8300/linux.h: New file.
+	* config/h8300/t-linux: New file.
+	* config/h8300/h8300.c (h8300_option_override): Force clear H8300H
+	flag on H8300S or H8300SX mode.
+
 2015-01-30  Vladimir Makarov  <vmakarov@redhat.com>
 
 	PR target/64688
diff --git a/gcc/config.gcc b/gcc/config.gcc
index abd915e..40e86e0 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1213,6 +1213,10 @@  h8300-*-elf*)
 	tmake_file="h8300/t-h8300"
 	tm_file="h8300/h8300.h dbxelf.h elfos.h newlib-stdint.h h8300/elf.h"
 	;;
+h8300-*-linux*)
+	tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
+	tm_file="h8300/h8300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
+	;;
 hppa*64*-*-linux*)
 	target_cpu_default="MASK_PA_11|MASK_PA_20"
 	tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h gnu-user.h linux.h \
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index 5968e55..dd133ca 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -406,6 +406,11 @@  h8300_option_override (void)
                - Option ignored!");
    }
 
+ if (TARGET_H8300S || TARGET_H8300SX)
+   {
+     target_flags &= ~MASK_H8300H;
+   }
+
   /* Some of the shifts are optimized for speed by default.
      See http://gcc.gnu.org/ml/gcc-patches/2002-07/msg01858.html
      If optimizing for size, change shift_alg for those shift to
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 5600d56..fa5789b 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,9 @@ 
+2015-01-31  Yoshinori Sato  <ysato@users.sourceforge.jp>
+
+	* config.host: Add h8300-linux.
+	* config/h8300/t-linux: New file.
+	* config/h8300/lib1funcs.S: Add __USER_LABEL_PREFIX__ to label head.
+
 2015-01-27  Caroline Tice  <cmtice@google.com>
 
 	Committing VTV Cywin/Ming patch for Patrick Wollgast
diff --git a/libgcc/config.host b/libgcc/config.host
index 5baeae5..11adb31 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -487,6 +487,10 @@  h8300-*-elf*)
 	tm_file="$tm_file h8300/h8300-lib.h"
 	extra_parts="$extra_parts crti.o crtn.o"
 	;;
+h8300-*-linux*)
+	tmake_file="t-linux h8300/t-linux t-fpbit"
+	tm_file="$tm_file h8300/h8300-lib.h"
+	;;
 hppa*64*-*-linux*)
 	tmake_file="$tmake_file pa/t-linux pa/t-linux64"
 	extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
diff --git a/libgcc/config/h8300/lib1funcs.S b/libgcc/config/h8300/lib1funcs.S
index 36e7d53..24a74a9 100644
--- a/libgcc/config/h8300/lib1funcs.S
+++ b/libgcc/config/h8300/lib1funcs.S
@@ -84,6 +84,12 @@  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #define A3E	e3
 #endif
 
+#define CONCAT(A,B)     A##B
+#define LABEL0(U,X)    CONCAT(U,__##X)
+#define LABEL0_DEF(U,X)    CONCAT(U,__##X##:)
+#define LABEL_DEF(X)       LABEL0_DEF(__USER_LABEL_PREFIX__,X)
+#define LABEL(X)       LABEL0(__USER_LABEL_PREFIX__,X)
+
 #ifdef __H8300H__
 #ifdef __NORMAL_MODE__
 	.h8300hn
@@ -111,8 +117,8 @@  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #ifdef __H8300__
 	.section .text
 	.align 2
-	.global ___cmpsi2
-___cmpsi2:
+	.global LABEL(cmpsi2)
+LABEL_DEF(cmpsi2)
 	cmp.w	A0,A2
 	bne	.L2
 	cmp.w	A1,A3
@@ -137,8 +143,8 @@  ___cmpsi2:
 #ifdef __H8300__
 	.section .text
 	.align 2
-	.global ___ucmpsi2
-___ucmpsi2:
+	.global LABEL(ucmpsi2)
+LABEL_DEF(ucmpsi2)
 	cmp.w	A0,A2
 	bne	.L2
 	cmp.w	A1,A3
@@ -207,10 +213,10 @@  _lab8:	rts
 
 ; A0=A0/A1 signed
 
-	.global	___divhi3
-___divhi3:
+	.global	LABEL(divhi3)
+LABEL_DEF(divhi3)
 	bsr	divnorm
-	bsr	___udivhi3
+	bsr	LABEL(udivhi3)
 negans:	btst	#3,A2L	; should answer be negative ?
 	beq	_lab4
 	not	A0H	; yes, so make it so
@@ -220,18 +226,18 @@  _lab4:	rts
 
 ; A0=A0%A1 signed
 
-	.global	___modhi3
-___modhi3:
+	.global	LABEL(modhi3)
+LABEL_DEF(modhi3)
 	bsr	modnorm
-	bsr	___udivhi3
+	bsr	LABEL(udivhi3)
 	mov	A3,A0
 	bra	negans
 
 ; A0=A0%A1 unsigned
 
-	.global	___umodhi3
-___umodhi3:
-	bsr	___udivhi3
+	.global	LABEL(umodhi3)
+LABEL_DEF(umodhi3)
+	bsr	LABEL(udivhi3)
 	mov	A3,A0
 	rts
 
@@ -251,8 +257,8 @@  ___umodhi3:
 ; The H8/300 only has a 16/8 bit divide, so we look at the incoming and
 ; see how to partition up the expression.
 
-	.global	___udivhi3
-___udivhi3:
+	.global	LABEL(udivhi3)
+LABEL_DEF(udivhi3)
 				; A0 A1 A2 A3
 				; Nn Dd       P
 	sub.w	A3,A3		; Nn Dd xP 00
@@ -418,8 +424,8 @@  mpostive2:
 
 ; numerator in A0/A1
 ; denominator in A2/A3
-	.global	___modsi3
-___modsi3:
+	.global	LABEL(modsi3)
+LABEL_DEF(modsi3)
 #ifdef __H8300__
 	PUSHP	S2P
 	PUSHP	S0P
@@ -432,7 +438,7 @@  ___modsi3:
 #else
 	PUSHP	S2P
 	bsr	modnorm
-	bsr	___udivsi3
+	bsr	LABEL(divsi3)
 	mov.l	er3,er0
 	bra	exitdiv
 #endif
@@ -440,8 +446,8 @@  ___modsi3:
 	;; H8/300H and H8S version of ___udivsi3 is defined later in
 	;; the file.
 #ifdef __H8300__
-	.global	___udivsi3
-___udivsi3:
+	.global	LABEL(udivsi3)
+LABEL_DEF(udivsi3)
 	PUSHP	S2P
 	PUSHP	S0P
 	PUSHP	S1P
@@ -449,8 +455,8 @@  ___udivsi3:
 	bra	reti
 #endif
 
-	.global	___umodsi3
-___umodsi3:
+	.global	LABEL(umodsi3)
+LABEL_DEF(umodsi3)
 #ifdef __H8300__
 	PUSHP	S2P
 	PUSHP	S0P
@@ -460,13 +466,13 @@  ___umodsi3:
 	mov	S1,A1
 	bra	reti
 #else
-	bsr	___udivsi3
+	bsr	LABEL(udivsi3)
 	mov.l	er3,er0
 	rts
 #endif
 
-	.global	___divsi3
-___divsi3:
+	.global	LABEL(divsi3)
+LABEL_DEF(divsi3)
 #ifdef __H8300__
 	PUSHP	S2P
 	PUSHP	S0P
@@ -476,7 +482,7 @@  ___divsi3:
 #else
 	PUSHP	S2P
 	jsr	divnorm
-	bsr	___udivsi3
+	bsr	LABEL(udivsi3)
 #endif
 
 	; examine what the sign should be
@@ -591,8 +597,8 @@  setone:
 #else /* __H8300H__ */
 
 	;; This function also computes the remainder and stores it in er3.
-	.global	___udivsi3
-___udivsi3:
+	.global	LABEL(udivsi3)
+LABEL_DEF(udivsi3)
 	mov.w	A1E,A1E		; denominator top word 0?
 	bne	DenHighNonZero
 
@@ -681,8 +687,8 @@  divmod_L26:
 #ifdef __H8300__
 	.section .text
 	.align 2
-	.global	___mulhi3
-___mulhi3:
+	.global	LABEL(mulhi3)
+LABEL_DEF(mulhi3)
 	mov.b	A1L,A2L		; A2l gets srcb.l
 	mulxu	A0L,A2		; A2 gets first sub product
 
@@ -726,8 +732,8 @@  ___mulhi3:
 
 #ifdef __H8300__
 
-	.global	___mulsi3
-___mulsi3:
+	.global	LABEL(mulsi3)
+LABEL_DEF(mulsi3)
 	PUSHP	S0P
 	PUSHP	S1P
 
@@ -785,8 +791,8 @@  _done:
 ; 32b * 32b =  92 states
 ;
 
-	.global	___mulsi3
-___mulsi3:
+	.global LABEL(mulsi3)
+LABEL_DEF(mulsi3)
 	mov.w	r1,r2   ; ( 2 states) b * d
 	mulxu	r0,er2  ; (22 states)
 
@@ -814,11 +820,11 @@  L_skip2:
 #ifdef __H8300__
 /* We still treat NANs different than libgcc2.c, but then, the
    behavior is undefined anyways.  */
-	.global	___fixunssfsi
-___fixunssfsi:
+	.global LABEL(fixunssfsi)
+LABEL_DEF(fixunssfsi)
 	cmp.b #0x4f,r0h
 	bge Large_num
-	jmp     @___fixsfsi
+	jmp     @LABEL(fixsfsi)
 Large_num:
 	bhi L_huge_num
 	xor.b #0x80,A0L