Date: Fri, 14 Jul 2006 12:04:11 GMT From: Bruce M Simpson <bms@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 101540 for review Message-ID: <200607141204.k6EC4BaO076726@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=101540 Change 101540 by bms@bms_montagne on 2006/07/14 12:03:42 Add first cut userland compiler flags. Add the use of the cpu keyword to kernel configuration files. Add cpu compile-time flags CPU_MIPS32 and CPU_MIPS64. Add explicit ARCH_FLAGS for the compiler to kernel configuration files. There is currently no cleaner way of doing this. Add explicit makeoptions for MIPS_LITTLE_ENDIAN which causes Makefile.mips to use the -EL flag for generating little endian code. Update the config(5) man page. Remove -mno-abicalls from kern.mk as it belongs in Makefile.mips, where it exists as -fno-pic. Affected files ... .. //depot/projects/mips2/src/share/mk/bsd.cpu.mk#2 edit .. //depot/projects/mips2/src/sys/conf/Makefile.mips#7 edit .. //depot/projects/mips2/src/sys/conf/kern.mk#6 edit .. //depot/projects/mips2/src/sys/conf/options.mips#2 edit .. //depot/projects/mips2/src/sys/mips/conf/MALTA#2 edit .. //depot/projects/mips2/src/sys/mips/conf/QEMU#5 edit .. //depot/projects/mips2/src/usr.sbin/config/config.5#2 edit Differences ... ==== //depot/projects/mips2/src/share/mk/bsd.cpu.mk#2 (text+ko) ==== @@ -18,6 +18,8 @@ . elif ${MACHINE_ARCH} == "sparc64" . elif ${MACHINE_ARCH} == "arm" MACHINE_CPU = arm +. elif ${MACHINE_ARCH} == "mips" +MACHINE_CPU = mips . endif .else @@ -112,6 +114,14 @@ . else _CPUCFLAGS = -mcpu=${CPUTYPE} . endif +. elif ${MACHINE_ARCH} == "mips" +. if ${CPUTYPE} == "mips32" +_CPUCFLAGS = -march=mips32 +. elif ${CPUTYPE} == "mips64" +_CPUCFLAGS = -march=mips64 +. elif ${CPUTYPE} == "mipsr4kc" +_CPUCFLAGS = -march=r4kc +. endif . endif # Set up the list of CPU features based on the CPU type. This is an ==== //depot/projects/mips2/src/sys/conf/Makefile.mips#7 (text+ko) ==== @@ -28,19 +28,15 @@ .endif .include "$S/conf/kern.pre.mk" +# XXX: Such sweeping assumptions... MACHINE=mips MACHINE_ARCH=mips MKMODULESENV+= MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH} -# -# XXXMIPS: Without it, you'll be bombed by warnings. -# -ARCH_FLAGS=-march=mips32 -CFLAGS+=-fno-pic $(ARCH_FLAGS) -SYSTEM_LD+= -Ttext 0x80100000 -HACK_EXTRA_FLAGS+=-fno-pic $(ARCH_FLAGS) -ASM_FLAGS+=${CFLAGS} -D_LOCORE -DLOCORE +# We default to the MIPS32 ISA, if none specified in the +# kernel configuration file. +ARCH_FLAGS?=-march=mips32 .if defined(MIPS_LITTLE_ENDIAN) CFLAGS+=-EL @@ -48,6 +44,15 @@ HACK_EXTRA_FLAGS+=-EL -Wl,-EL .endif +# We add the -fno-pic flag to kernels because otherwise performance +# is extremely poor. (XXX: Can replace with -mno-abicalls). +CFLAGS+=-fno-pic $(ARCH_FLAGS) +HACK_EXTRA_FLAGS+=-fno-pic $(ARCH_FLAGS) + +# XXX hardcoded kernel entry point +SYSTEM_LD+= -Ttext 0x80100000 +ASM_FLAGS+=${CFLAGS} -D_LOCORE -DLOCORE + %BEFORE_DEPEND %OBJS ==== //depot/projects/mips2/src/sys/conf/kern.mk#6 (text+ko) ==== @@ -83,12 +83,9 @@ # # For MIPS we also tell gcc to use floating point emulation. -# We also force a non-PIC kernel to be built (-mno-abicalls). # .if ${MACHINE_ARCH} == "mips" -CFLAGS+= -msoft-float -mno-abicalls -# XXX for debugging the build -#CFLAGS+= -save-temps +CFLAGS+= -msoft-float INLINE_LIMIT?= 15000 .endif ==== //depot/projects/mips2/src/sys/conf/options.mips#2 (text+ko) ==== @@ -1,6 +1,8 @@ # $FreeBSD$ CPU_MIPS4KC opt_global.h +CPU_MIPS32 opt_global.h +CPU_MIPS64 opt_global.h KERNPHYSADDR opt_global.h KERNVIRTADDR opt_global.h PHYSADDR opt_global.h ==== //depot/projects/mips2/src/sys/mips/conf/MALTA#2 (text+ko) ==== @@ -18,8 +18,11 @@ # $FreeBSD$ machine mips +cpu CPU_R4KC ident MALTA +makeoptions ARCH_FLAGS=-march=r4kc + # Don't build any modules yet. makeoptions MODULES_OVERRIDE="" ==== //depot/projects/mips2/src/sys/mips/conf/QEMU#5 (text+ko) ==== @@ -18,8 +18,13 @@ # $FreeBSD$ machine mips +cpu CPU_MIPS32 ident QEMU +# XXX: These two options must be defined in MIPS kernel configs. +makeoptions MIPS_LITTLE_ENDIAN=defined +makeoptions ARCH_FLAGS=-march=mips32 + # Don't build any modules yet. makeoptions MODULES_OVERRIDE="" ==== //depot/projects/mips2/src/usr.sbin/config/config.5#2 (text+ko) ==== @@ -23,7 +23,7 @@ .\" .\" $FreeBSD: src/usr.sbin/config/config.5,v 1.9 2006/02/12 07:56:11 jkoshy Exp $ .\" -.Dd December 3, 2005 +.Dd July 14, 2006 .Dt CONFIG 5 .Os .Sh NAME @@ -180,6 +180,8 @@ The Intel x86 based PC architecture. .It Cm ia64 The Intel IA64 architecture. +.It Cm mips +The MIPS architecture. .It Cm pc98 The PC98 architecture. .It Cm powerpc
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200607141204.k6EC4BaO076726>