mirror of git://gcc.gnu.org/git/gcc.git
config.gcc: Add h8300-*-linux.
gcc/ * config.gcc: Add h8300-*-linux. * config/h8300/linux.h: New. * config/h8300/t-linux: New. * config/h8300/h8300.c (h8300_option_override): Normal mode is not supported for h8300-*-linux. (h8300_file_start): Target priority change. (get_shift_alg): Likewise. (h8300_shift_need_scratch_p): Likewise. * config/h8300/h8300.h (TARGET_CPU_CPP_BUILTINS): Likewise. * config/h8300/h8300.md (define_peephole2): Remove duplicate condition. libgcc/ * config.host: Add h8300-*-linux * config/h8300/t-linux: New file. * config/h8300/lib1funs.s: Change symbol prefix. * config/h8300/sfp-machine.h: 64bit double support. From-SVN: r222479
This commit is contained in:
parent
d5302f06b8
commit
2f6bd6eb67
|
|
@ -1,3 +1,16 @@
|
|||
2015-04-27 Yoshinori Sato <ysato@users.sourceforge.jp>
|
||||
|
||||
* config.gcc: Add h8300-*-linux.
|
||||
* config/h8300/linux.h: New.
|
||||
* config/h8300/t-linux: New.
|
||||
* config/h8300/h8300.c (h8300_option_override): Normal mode
|
||||
is not supported for h8300-*-linux.
|
||||
(h8300_file_start): Target priority change.
|
||||
(get_shift_alg): Likewise.
|
||||
(h8300_shift_need_scratch_p): Likewise.
|
||||
* config/h8300/h8300.h (TARGET_CPU_CPP_BUILTINS): Likewise.
|
||||
* config/h8300/h8300.md (define_peephole2): Remove duplicate condition.
|
||||
|
||||
2015-04-27 Caroline Tice <cmtice@google.com>
|
||||
|
||||
* final.c (final_scan_insn): Output cold_function_nmae as function
|
||||
|
|
|
|||
|
|
@ -1218,6 +1218,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 \
|
||||
|
|
|
|||
|
|
@ -406,6 +406,14 @@ h8300_option_override (void)
|
|||
- Option ignored!");
|
||||
}
|
||||
|
||||
#ifdef H8300_LINUX
|
||||
if ((TARGET_NORMAL_MODE))
|
||||
{
|
||||
error ("-mn is not supported for linux targets");
|
||||
target_flags ^= MASK_NORMAL_MODE;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 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
|
||||
|
|
@ -1006,12 +1014,12 @@ h8300_file_start (void)
|
|||
{
|
||||
default_file_start ();
|
||||
|
||||
if (TARGET_H8300H)
|
||||
fputs (TARGET_NORMAL_MODE ? "\t.h8300hn\n" : "\t.h8300h\n", asm_out_file);
|
||||
else if (TARGET_H8300SX)
|
||||
if (TARGET_H8300SX)
|
||||
fputs (TARGET_NORMAL_MODE ? "\t.h8300sxn\n" : "\t.h8300sx\n", asm_out_file);
|
||||
else if (TARGET_H8300S)
|
||||
fputs (TARGET_NORMAL_MODE ? "\t.h8300sn\n" : "\t.h8300s\n", asm_out_file);
|
||||
else if (TARGET_H8300H)
|
||||
fputs (TARGET_NORMAL_MODE ? "\t.h8300hn\n" : "\t.h8300h\n", asm_out_file);
|
||||
}
|
||||
|
||||
/* Output assembly language code for the end of file. */
|
||||
|
|
@ -4094,10 +4102,10 @@ get_shift_alg (enum shift_type shift_type, enum shift_mode shift_mode,
|
|||
/* Find the target CPU. */
|
||||
if (TARGET_H8300)
|
||||
cpu = H8_300;
|
||||
else if (TARGET_H8300H)
|
||||
cpu = H8_300H;
|
||||
else
|
||||
else if (TARGET_H8300S)
|
||||
cpu = H8_S;
|
||||
else
|
||||
cpu = H8_300H;
|
||||
|
||||
/* Find the shift algorithm. */
|
||||
info->alg = SHIFT_LOOP;
|
||||
|
|
@ -4540,10 +4548,10 @@ h8300_shift_needs_scratch_p (int count, machine_mode mode)
|
|||
/* Find out the target CPU. */
|
||||
if (TARGET_H8300)
|
||||
cpu = H8_300;
|
||||
else if (TARGET_H8300H)
|
||||
cpu = H8_300H;
|
||||
else
|
||||
else if (TARGET_H8300S)
|
||||
cpu = H8_S;
|
||||
else
|
||||
cpu = H8_300H;
|
||||
|
||||
/* Find the shift algorithm. */
|
||||
switch (mode)
|
||||
|
|
|
|||
|
|
@ -39,17 +39,7 @@ extern const char * const *h8_reg_names;
|
|||
#define TARGET_CPU_CPP_BUILTINS() \
|
||||
do \
|
||||
{ \
|
||||
if (TARGET_H8300H) \
|
||||
{ \
|
||||
builtin_define ("__H8300H__"); \
|
||||
builtin_assert ("cpu=h8300h"); \
|
||||
builtin_assert ("machine=h8300h"); \
|
||||
if (TARGET_NORMAL_MODE) \
|
||||
{ \
|
||||
builtin_define ("__NORMAL_MODE__"); \
|
||||
} \
|
||||
} \
|
||||
else if (TARGET_H8300SX) \
|
||||
if (TARGET_H8300SX) \
|
||||
{ \
|
||||
builtin_define ("__H8300SX__"); \
|
||||
if (TARGET_NORMAL_MODE) \
|
||||
|
|
@ -67,6 +57,16 @@ extern const char * const *h8_reg_names;
|
|||
builtin_define ("__NORMAL_MODE__"); \
|
||||
} \
|
||||
} \
|
||||
else if (TARGET_H8300H) \
|
||||
{ \
|
||||
builtin_define ("__H8300H__"); \
|
||||
builtin_assert ("cpu=h8300h"); \
|
||||
builtin_assert ("machine=h8300h"); \
|
||||
if (TARGET_NORMAL_MODE) \
|
||||
{ \
|
||||
builtin_define ("__NORMAL_MODE__"); \
|
||||
} \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
builtin_define ("__H8300__"); \
|
||||
|
|
|
|||
|
|
@ -5847,7 +5847,7 @@
|
|||
(pc)))]
|
||||
"(TARGET_H8300H || TARGET_H8300S)
|
||||
&& peep2_reg_dead_p (1, operands[0])
|
||||
&& ((TARGET_H8300H && INTVAL (operands[1]) == 3)
|
||||
&& (INTVAL (operands[1]) == 3
|
||||
|| INTVAL (operands[1]) == 7
|
||||
|| INTVAL (operands[1]) == 15
|
||||
|| INTVAL (operands[1]) == 31
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
/* Definitions of target machine for GNU compiler.
|
||||
Renesas H8/300 (linux variant)
|
||||
Copyright (C) 2015
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Yoshinori Sato <ysato@users.sourceforge.jp>
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef GCC_H8300_LINUX_H
|
||||
#define GCC_H8300_LINUX_H
|
||||
|
||||
#define TARGET_OS_CPP_BUILTINS() \
|
||||
do \
|
||||
{ \
|
||||
GNU_USER_TARGET_OS_CPP_BUILTINS(); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "%{mh:-mh8300helf_linux} %{ms:-m h8300self_linux} %{msx:-m h8300sxelf_linux}"
|
||||
|
||||
#undef TARGET_DEFAULT
|
||||
#define TARGET_DEFAULT (MASK_QUICKCALL | MASK_INT32 | MASK_H8300H)
|
||||
|
||||
/* Width of a word, in units (bytes). */
|
||||
#undef DOUBLE_TYPE_SIZE
|
||||
#define DOUBLE_TYPE_SIZE 64
|
||||
|
||||
#undef DEFAULT_SIGNED_CHAR
|
||||
#define DEFAULT_SIGNED_CHAR 1
|
||||
|
||||
#undef USER_LABEL_PREFIX
|
||||
|
||||
#define H8300_LINUX
|
||||
|
||||
#endif /* ! GCC_H8300_LINUX_H */
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
# Copyright (C) 2015 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GCC.
|
||||
#
|
||||
# GCC is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GCC 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GCC; see the file COPYING3. If not see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
MULTILIB_OPTIONS = ms/msx
|
||||
MULTILIB_DIRNAMES = h8300s h8sx
|
||||
|
|
@ -1,3 +1,10 @@
|
|||
2015-04-27 Yoshinori Sato <ysato@users.sourceforge.jp>
|
||||
|
||||
* config.host: Add h8300-*-linux
|
||||
* config/h8300/t-linux: New file.
|
||||
* config/h8300/lib1funs.s: Change symbol prefix.
|
||||
* config/h8300/sfp-machine.h: 64bit double support.
|
||||
|
||||
2015-04-22 Gregor Richards <gregor.richards@uwaterloo.ca>
|
||||
Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
|
|
|
|||
|
|
@ -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-softfp-sfdf t-softfp"
|
||||
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"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -0,0 +1,76 @@
|
|||
/* Soft-FP definitions for H8/300
|
||||
Copyright (C) 2015 Free Software Foundation, Inc.
|
||||
|
||||
This file is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 3, or (at your option) any
|
||||
later version.
|
||||
|
||||
This file 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
|
||||
General Public License for more details.
|
||||
|
||||
Under Section 7 of GPL version 3, you are granted additional
|
||||
permissions described in the GCC Runtime Library Exception, version
|
||||
3.1, as published by the Free Software Foundation.
|
||||
|
||||
You should have received a copy of the GNU General Public License and
|
||||
a copy of the GCC Runtime Library Exception along with this program;
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define _FP_W_TYPE_SIZE 32
|
||||
#define _FP_W_TYPE unsigned long
|
||||
#define _FP_WS_TYPE signed long
|
||||
#define _FP_I_TYPE long
|
||||
|
||||
#define _FP_MUL_MEAT_S(R,X,Y) \
|
||||
_FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_D(R,X,Y) \
|
||||
_FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
|
||||
#define _FP_MUL_MEAT_Q(R,X,Y) \
|
||||
_FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
|
||||
|
||||
#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y)
|
||||
#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y)
|
||||
#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
|
||||
|
||||
#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
|
||||
#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1
|
||||
#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
|
||||
#define _FP_NANSIGN_S 0
|
||||
#define _FP_NANSIGN_D 0
|
||||
#define _FP_NANSIGN_Q 0
|
||||
|
||||
#define _FP_KEEPNANFRACP 1
|
||||
#define _FP_QNANNEGATEDP 0
|
||||
|
||||
/* Someone please check this. */
|
||||
#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
|
||||
do { \
|
||||
if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \
|
||||
&& !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \
|
||||
{ \
|
||||
R##_s = Y##_s; \
|
||||
_FP_FRAC_COPY_##wc(R,Y); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
R##_s = X##_s; \
|
||||
_FP_FRAC_COPY_##wc(R,X); \
|
||||
} \
|
||||
R##_c = FP_CLS_NAN; \
|
||||
} while (0)
|
||||
|
||||
/* Not checked. */
|
||||
#define _FP_TININESS_AFTER_ROUNDING 0
|
||||
|
||||
#define __BIG_ENDIAN 4321
|
||||
|
||||
#define __BYTE_ORDER __BIG_ENDIAN
|
||||
|
||||
/* Define ALIASNAME as a strong alias for NAME. */
|
||||
# define strong_alias(name, aliasname) _strong_alias(name, aliasname)
|
||||
# define _strong_alias(name, aliasname) \
|
||||
extern __typeof (name) aliasname __attribute__ ((alias (#name)));
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
LIB1ASMSRC = h8300/lib1funcs.S
|
||||
LIB1ASMFUNCS = _cmpsi2 _ucmpsi2 _divhi3 _divsi3 _mulhi3 _mulsi3 \
|
||||
_fixunssfsi_asm
|
||||
|
||||
LIB2ADD += \
|
||||
$(srcdir)/config/h8300/clzhi2.c \
|
||||
$(srcdir)/config/h8300/ctzhi2.c \
|
||||
$(srcdir)/config/h8300/parityhi2.c \
|
||||
$(srcdir)/config/h8300/popcounthi2.c \
|
||||
$(srcdir)/config/h8300/fixunssfsi.c
|
||||
Loading…
Reference in New Issue