svn commit: r308251 - in head: lib/libcompiler_rt lib/msun/riscv share/man/man7 share/mk sys/modules/dtrace/dtrace sys/riscv/include
Ruslan Bukin
br at FreeBSD.org
Thu Nov 3 13:06:20 UTC 2016
Author: br
Date: Thu Nov 3 13:06:17 2016
New Revision: 308251
URL: https://svnweb.freebsd.org/changeset/base/308251
Log:
o Add support for long double.
o Add support for latest RISC-V GNU toolchain.
Sponsored by: DARPA, AFRL
Sponsored by: HEIF5
Modified:
head/lib/libcompiler_rt/Makefile.inc
head/lib/msun/riscv/Makefile.inc
head/share/man/man7/arch.7
head/share/mk/bsd.cpu.mk
head/share/mk/bsd.stand.mk
head/sys/modules/dtrace/dtrace/Makefile
head/sys/riscv/include/asm.h
head/sys/riscv/include/float.h
Modified: head/lib/libcompiler_rt/Makefile.inc
==============================================================================
--- head/lib/libcompiler_rt/Makefile.inc Thu Nov 3 10:11:59 2016 (r308250)
+++ head/lib/libcompiler_rt/Makefile.inc Thu Nov 3 13:06:17 2016 (r308251)
@@ -123,8 +123,11 @@ SRCF+= udivti3
SRCF+= umoddi3
SRCF+= umodti3
-# 128-bit quad precision long double support, only used on arm64
-.if ${MACHINE_CPUARCH} == "aarch64"
+#
+# 128-bit quad precision long double support,
+# only used on arm64 and riscv.
+#
+.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "riscv"
SRCF+= addtf3
SRCF+= comparetf2
SRCF+= divtf3
Modified: head/lib/msun/riscv/Makefile.inc
==============================================================================
--- head/lib/msun/riscv/Makefile.inc Thu Nov 3 10:11:59 2016 (r308250)
+++ head/lib/msun/riscv/Makefile.inc Thu Nov 3 13:06:17 2016 (r308251)
@@ -1,6 +1,3 @@
# $FreeBSD$
-# RISCVTODO: should be 113
-# compilation problems: gcc generates bltuz instruction, which is not exists
-
-LDBL_PREC = 53
+LDBL_PREC = 113
Modified: head/share/man/man7/arch.7
==============================================================================
--- head/share/man/man7/arch.7 Thu Nov 3 10:11:59 2016 (r308250)
+++ head/share/man/man7/arch.7 Thu Nov 3 13:06:17 2016 (r308251)
@@ -66,7 +66,7 @@ On all supported architectures,
.It mips64hf Ta 8 Ta 8
.It powerpc Ta 4 Ta 8
.It powerpc64 Ta 8 Ta 8
-.It riscv Ta 8 Ta
+.It riscv Ta 8 Ta 16
.It sparc64 Ta 8 Ta 16
.El
.Ss Endianness and Char Signedness
Modified: head/share/mk/bsd.cpu.mk
==============================================================================
--- head/share/mk/bsd.cpu.mk Thu Nov 3 10:11:59 2016 (r308250)
+++ head/share/mk/bsd.cpu.mk Thu Nov 3 13:06:17 2016 (r308251)
@@ -156,7 +156,7 @@ _CPUCFLAGS = -march=${CPUTYPE}
_CPUCFLAGS = -march=${CPUTYPE:S/^mips//}
. endif
. elif ${MACHINE_CPUARCH} == "riscv"
-_CPUCFLAGS = -msoft-float # -march="RV64I" # RISCVTODO
+_CPUCFLAGS = -mno-float -march="IMAFD"
. elif ${MACHINE_ARCH} == "sparc64"
. if ${CPUTYPE} == "v9"
_CPUCFLAGS = -mcpu=v9
@@ -337,8 +337,8 @@ CFLAGS += -mcpu=8540 -Wa,-me500 -mspe=ye
.endif
.if ${MACHINE_CPUARCH} == "riscv"
-CFLAGS += -msoft-float
-ACFLAGS += -msoft-float
+CFLAGS += -mno-float
+ACFLAGS += -mno-float
.endif
# NB: COPTFLAGS is handled in /usr/src/sys/conf/kern.pre.mk
Modified: head/share/mk/bsd.stand.mk
==============================================================================
--- head/share/mk/bsd.stand.mk Thu Nov 3 10:11:59 2016 (r308250)
+++ head/share/mk/bsd.stand.mk Thu Nov 3 13:06:17 2016 (r308251)
@@ -5,7 +5,12 @@
#
CFLAGS+= -ffreestanding -Wformat
-CFLAGS+= ${CFLAGS_NO_SIMD} -msoft-float -D_STANDALONE
+CFLAGS+= ${CFLAGS_NO_SIMD} -D_STANDALONE
+.if ${MACHINE_CPUARCH} == "riscv"
+CFLAGS+= -mno-float
+.else
+CFLAGS+= -msoft-float
+.endif
.if ${MACHINE_CPUARCH} == "i386"
CFLAGS.gcc+= -mpreferred-stack-boundary=2
Modified: head/sys/modules/dtrace/dtrace/Makefile
==============================================================================
--- head/sys/modules/dtrace/dtrace/Makefile Thu Nov 3 10:11:59 2016 (r308250)
+++ head/sys/modules/dtrace/dtrace/Makefile Thu Nov 3 13:06:17 2016 (r308251)
@@ -60,7 +60,7 @@ assym.o: assym.s
.if ${MACHINE_CPUARCH} == "riscv"
assym.o: assym.s
- ${AS} -msoft-float -o assym.o assym.s
+ ${AS} -mfloat-abi=soft -o assym.o assym.s
.endif
.include <bsd.kmod.mk>
Modified: head/sys/riscv/include/asm.h
==============================================================================
--- head/sys/riscv/include/asm.h Thu Nov 3 10:11:59 2016 (r308250)
+++ head/sys/riscv/include/asm.h Thu Nov 3 13:06:17 2016 (r308251)
@@ -47,7 +47,7 @@
#define _C_LABEL(x) x
#define ENTRY(sym) \
- .text; .globl sym; .type sym, at function; .align 2; sym:
+ .text; .globl sym; .type sym, at function; .align 4; sym:
#define END(sym) .size sym, . - sym
#define EENTRY(sym) \
Modified: head/sys/riscv/include/float.h
==============================================================================
--- head/sys/riscv/include/float.h Thu Nov 3 10:11:59 2016 (r308250)
+++ head/sys/riscv/include/float.h Thu Nov 3 13:06:17 2016 (r308251)
@@ -76,22 +76,6 @@ __END_DECLS
#define DBL_HAS_SUBNORM 1
#endif /* __ISO_C_VISIBLE >= 2011 */
-#define LDBL_MANT_DIG DBL_MANT_DIG
-#define LDBL_EPSILON ((long double)DBL_EPSILON)
-#define LDBL_DIG DBL_DIG
-#define LDBL_MIN_EXP DBL_MIN_EXP
-#define LDBL_MIN ((long double)DBL_MIN)
-#define LDBL_MIN_10_EXP DBL_MIN_10_EXP
-#define LDBL_MAX_EXP DBL_MAX_EXP
-#define LDBL_MAX ((long double)DBL_MAX)
-#define LDBL_MAX_10_EXP DBL_MAX_10_EXP
-#if __ISO_C_VISIBLE >= 2011
-#define LDBL_TRUE_MIN ((long double)DBL_TRUE_MIN)
-#define LDBL_DECIMAL_DIG DBL_DECIMAL_DIG
-#define LDBL_HAS_SUBNORM DBL_HAS_SUBNORM
-#endif /* __ISO_C_VISIBLE >= 2011 */
-
-#if 0 /* RISCVTODO */
#define LDBL_MANT_DIG 113
#define LDBL_EPSILON 1.925929944387235853055977942584927319E-34L
#define LDBL_DIG 33
@@ -106,6 +90,5 @@ __END_DECLS
#define LDBL_DECIMAL_DIG 36
#define LDBL_HAS_SUBNORM 1
#endif /* __ISO_C_VISIBLE >= 2011 */
-#endif
#endif /* _MACHINE_FLOAT_H_ */
More information about the svn-src-all
mailing list