svn commit: r201984 - head/sys/conf

Warner Losh imp at FreeBSD.org
Sun Jan 10 05:34:46 UTC 2010


Author: imp
Date: Sun Jan 10 05:34:46 2010
New Revision: 201984
URL: http://svn.freebsd.org/changeset/base/201984

Log:
  Merge r187428, r191079, r195533, r195669, r197004, r197012 and r197015
  from projects/mips to head by hand:
  
  r197015 | imp | 2009-09-08 21:59:46 -0600 (Tue, 08 Sep 2009) | 2 lines
  Prefer PTR_LA over a naked la to work with 64-bits..
  
  r197012 | imp | 2009-09-08 21:46:04 -0600 (Tue, 08 Sep 2009) | 3 lines
  Use proper set of flags to build the tramp.  this gets 64-bit almost
  building and lets me debug the 'almost' :)
  
  r197004 | imp | 2009-09-08 18:47:12 -0600 (Tue, 08 Sep 2009) | 2 lines
  Use ${LDSCRIPT_NAME} in preference to ldscript.$M.
  
  r195669 | gonzo | 2009-07-13 17:03:44 -0600 (Mon, 13 Jul 2009) | 3 lines
  - Remove -mno-dsp from CFLAGS. MIPS DSP ASE is off by default
    now (as it should be)
  
  r195533 | imp | 2009-07-10 01:21:26 -0600 (Fri, 10 Jul 2009) | 4 lines
  Add in the emulation selection when linking...  We're still not 100%
  of the way there, but we're better with it.  hack.so build now, but
  we die when we try to link it in.
  
  r191079 | gonzo | 2009-04-14 16:53:22 -0600 (Tue, 14 Apr 2009) | 2 lines
  - Revert changes accidentally killed by merge operation
  
  r187418 | gonzo | 2009-01-18 19:37:10 -0700 (Sun, 18 Jan 2009) | 4 lines
  - Add trampoline stuff for bootloaders that do not support ELF
  - Replace arm'ish KERNPHYSADDR/KERNVIRTADDR with
      KERNLOADADDR/TRAMPLOADADDR and clean configs

Modified:
  head/sys/conf/Makefile.mips

Modified: head/sys/conf/Makefile.mips
==============================================================================
--- head/sys/conf/Makefile.mips	Sun Jan 10 05:28:36 2010	(r201983)
+++ head/sys/conf/Makefile.mips	Sun Jan 10 05:34:46 2010	(r201984)
@@ -28,35 +28,83 @@ S=	../../..
 .endif
 .include "$S/conf/kern.pre.mk"
 
+LDSCRIPT_NAME?=ldscript.$M
+SYSTEM_LD:= ${SYSTEM_LD:$S/conf/${LDSCRIPT_NAME}=${LDSCRIPT_NAME}}
+SYSTEM_DEP:= ${SYSTEM_DEP:$S/conf/${LDSCRIPT_NAME}=${LDSCRIPT_NAME}}
+
 # XXX: Such sweeping assumptions...
 MACHINE=mips
 MACHINE_ARCH=mips
+KERNLOADADDR?=0x80001000
+# This obscure value is defined by CFE for WR160N
+# To be changed later
+TRAMPLOADADDR?=0x807963c0
 
 MKMODULESENV+=	MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH}
 
 # We default to the MIPS32 ISA, if none specified in the
 # kernel configuration file.
 ARCH_FLAGS?=-march=mips32
+EXTRA_FLAGS=-fno-pic -mno-abicalls -G0
 
 HACK_EXTRA_FLAGS=-shared
 .if defined(TARGET_BIG_ENDIAN)
 CFLAGS+=-EB
 SYSTEM_LD+=-EB
+EXTRA_FLAGS+=-EB 
+TRAMP_LDFLAGS+=-Wl,-EB 
 HACK_EXTRA_FLAGS+=-EB -Wl,-EB
+.if defined(TARGET_64BIT)
+SYSTEM_LD+=-m elf64btsmip_fbsd
+HACK_EXTRA_FLAGS+=-Wl,-m,elf64btsmip_fbsd
+.endif
 .else
 CFLAGS+=-EL
 SYSTEM_LD+=-EL
+EXTRA_FLAGS+=-EL
+TRAMP_LDFLAGS+=-Wl,-EL
 HACK_EXTRA_FLAGS+=-EL -Wl,-EL
+.if defined(TARGET_64BIT)
+SYSTEM_LD+=-m elf64ltsmip_fbsd
+HACK_EXTRA_FLAGS+=-Wl,-m,elf64ltsmip_fbsd
+.endif
 .endif
 
+
 # We add the -fno-pic flag to kernels because otherwise performance
 # is extremely poor, as well as -mno-abicalls to force no ABI usage.
-CFLAGS+=-fno-pic -mno-abicalls -G0 $(ARCH_FLAGS)
-HACK_EXTRA_FLAGS+=-fno-pic -mno-abicalls -G0 $(ARCH_FLAGS)
+CFLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
+HACK_EXTRA_FLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
 
 # XXX hardcoded kernel entry point
 ASM_CFLAGS+=${CFLAGS} -D_LOCORE -DLOCORE
 
+KERNEL_EXTRA=trampoline
+trampoline: ${KERNEL_KO}.tramp.bin
+${KERNEL_KO}.tramp.bin: ${KERNEL_KO} $S/$M/$M/elf_trampoline.c \
+	$S/$M/$M/inckern.S 
+	${OBJCOPY} --strip-symbol '$$d' --strip-symbol '$$a' \
+	-g --strip-symbol '$$t' ${FULLKERNEL} ${KERNEL_KO}.tmp
+	sed s/${KERNLOADADDR}/${TRAMPLOADADDR}/ ${LDSCRIPT_NAME} | \
+		sed s/" + SIZEOF_HEADERS"//  > ${LDSCRIPT_NAME}.tramp.noheader
+	# Generate .S file that setups stack and jumps to trampoline
+	echo "#include <machine/asm.h>" >tmphack.S
+	echo "ENTRY(_start)" >>tmphack.S
+	echo "PTR_LA t0, kernel_end" >>tmphack.S
+	echo "move sp, t0" >>tmphack.S
+	echo "add sp, 0x2000" >>tmphack.S
+	echo "and sp, ~0x7" >>tmphack.S
+	echo "PTR_LA t0, _startC" >>tmphack.S
+	echo "j t0" >>tmphack.S
+	echo "END(_start)" >>tmphack.S
+	echo "#define KERNNAME \"${KERNEL_KO}.tmp\""  >opt_kernname.h 
+	${CC} -O -nostdlib -I. -I$S ${HACK_EXTRA_FLAGS} ${TRAMP_LDFLAGS} -Xlinker \
+		-T -Xlinker ${LDSCRIPT_NAME}.tramp.noheader tmphack.S \
+		$S/$M/$M/elf_trampoline.c $S/$M/$M/inckern.S \
+		-o ${KERNEL_KO}.tramp.noheader 
+	${OBJCOPY} -S -O binary ${KERNEL_KO}.tramp.noheader \
+		${KERNEL_KO}.tramp.bin \
+
 %BEFORE_DEPEND
 
 %OBJS
@@ -69,6 +117,12 @@ ASM_CFLAGS+=${CFLAGS} -D_LOCORE -DLOCORE
 
 %CLEAN
 
+CLEAN+=	${LDSCRIPT_NAME} ${LDSCRIPT_NAME}.tramp.noheader \
+	${KERNEL_KO}.tramp.noheader ${KERNEL_KO}.tramp.bin
+
+${LDSCRIPT_NAME}: $S/conf/${LDSCRIPT_NAME}
+	cat $S/conf/${LDSCRIPT_NAME}|sed s/KERNLOADADDR/${KERNLOADADDR}/g \
+		> ${LDSCRIPT_NAME}
 %RULES
 
 .include "$S/conf/kern.post.mk"


More information about the svn-src-head mailing list