Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src Merge from matt-nb5-mips64
details: https://anonhg.NetBSD.org/src/rev/ca98eeb82bb4
branches: trunk
changeset: 749993:ca98eeb82bb4
user: matt <matt%NetBSD.org@localhost>
date: Mon Dec 14 01:00:46 2009 +0000
description:
Merge from matt-nb5-mips64
diffstat:
lib/csu/common_elf/common.h | 4 +-
lib/csu/mips/crt0.c | 10 +++-
lib/csu/mips/dot_init.h | 116 +++++++++++++++++++++++++++++++------------
share/mk/bsd.kmodule.mk | 5 +-
share/mk/bsd.own.mk | 17 ++++--
share/mk/bsd.prog.mk | 4 +-
share/mk/bsd.sys.mk | 14 ++++-
7 files changed, 122 insertions(+), 48 deletions(-)
diffs (truncated from 318 to 300 lines):
diff -r d9ef0abcfe4a -r ca98eeb82bb4 lib/csu/common_elf/common.h
--- a/lib/csu/common_elf/common.h Mon Dec 14 00:53:32 2009 +0000
+++ b/lib/csu/common_elf/common.h Mon Dec 14 01:00:46 2009 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: common.h,v 1.12 2006/05/18 17:54:19 christos Exp $ */
+/* $NetBSD: common.h,v 1.13 2009/12/14 01:04:02 matt Exp $ */
/*
* Copyright (c) 1995 Christopher G. Demetriou
@@ -53,7 +53,7 @@
typedef void Obj_Entry;
#endif
-extern int __syscall(quad_t, ...);
+extern quad_t __syscall(quad_t, ...);
#define _exit(v) __syscall(SYS_exit, (v))
#define write(fd, s, n) __syscall(SYS_write, (fd), (s), (n))
diff -r d9ef0abcfe4a -r ca98eeb82bb4 lib/csu/mips/crt0.c
--- a/lib/csu/mips/crt0.c Mon Dec 14 00:53:32 2009 +0000
+++ b/lib/csu/mips/crt0.c Mon Dec 14 01:00:46 2009 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: crt0.c,v 1.19 2005/12/24 22:02:10 perry Exp $ */
+/* $NetBSD: crt0.c,v 1.20 2009/12/14 01:04:02 matt Exp $ */
/*
* Copyright (c) 1995 Christopher G. Demetriou
@@ -86,10 +86,15 @@
*/
#ifndef DYNAMIC
+#ifdef _LP64
+ __asm volatile("dla $28,_gp");
+#else
__asm volatile("la $28,_gp");
#endif
+#endif
ksp = (char**)sp;
+#if defined(__mips_n32) || defined(__mips_n64)
if (ksp == 0) {
/*
* Uh, oh. We're running on a old kernel that passed
@@ -110,6 +115,7 @@
__asm volatile(" addiu %0,$29,64" : "=r" (ksp));
#endif
}
+#endif
argc = *(int *)ksp;
@@ -157,7 +163,7 @@
* is the entrypoint. (Only needed for old toolchains).
*/
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: crt0.c,v 1.19 2005/12/24 22:02:10 perry Exp $");
+__RCSID("$NetBSD: crt0.c,v 1.20 2009/12/14 01:04:02 matt Exp $");
#endif /* LIBC_SCCS and not lint */
#include "common.c"
diff -r d9ef0abcfe4a -r ca98eeb82bb4 lib/csu/mips/dot_init.h
--- a/lib/csu/mips/dot_init.h Mon Dec 14 00:53:32 2009 +0000
+++ b/lib/csu/mips/dot_init.h Mon Dec 14 01:00:46 2009 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: dot_init.h,v 1.9 2008/05/10 15:31:04 martin Exp $ */
+/* $NetBSD: dot_init.h,v 1.10 2009/12/14 01:04:02 matt Exp $ */
/*-
* Copyright (c) 2001 Ross Harvey
@@ -36,48 +36,98 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-#define ra "$31"
+#define t9 "$25"
/*
- * Allocate 32 bytes for the stack frame. Store GP at SP+16 (since
- * this is where code generated by the compiler for fallthru processing
- * expects it to be), and the RA at SP+28.
+ * For O32/O64, allocate 8 "slots" for the stack frame. Store GP in the 4th
+ * (zero-based) slot (since this is where compiler generated code for fallthru
+ * processing expects it to be), and the RA in seventh (highest address).
*
- * This will need adjustment for 64-bit ABIs.
+ * For N32/N64, allocate 4 8-byte "slots" for the stack frame. Store GP in the
+ * 2nd (zero-based) slot (since ...) and the RA in third (highest address).
*/
-#ifdef __ABICALLS__
-#define MD_FUNCTION_PROLOGUE \
- ".set noreorder \n"\
- ".cpload $25 \n"\
- ".set reorder \n"\
- " subu $sp,$sp,32 \n"\
- ".cprestore 16 \n"\
- " sw "ra",28($sp) \n"
+
+#ifdef __mips_o32
+#define sPTR_ADDU "addu"
+#define sREG_L "lw"
+#define sREG_S "sw"
+#define sRAOFF "28"
+#define sFRAMESZ "32"
+#define MD_GPRESTORE /* nothing */
#else
-#define MD_FUNCTION_PROLOGUE \
- " subu $sp,$sp,32 \n"\
- " sw "ra",28($sp) \n"
+#define sPTR_ADDU "daddu"
+#define sREG_L "ld"
+#define sREG_S "sd"
+#if defined(__mips_n32) || defined(__mips_n64)
+#define MD_GPRESTORE "ld $gp,8($sp)" "\n\t"
+#define sRAOFF "24"
+#define sFRAMESZ "32"
+#elif defined(__mips_o64)
+#define sRAOFF "56"
+#define sFRAMESZ "64"
+#define MD_GPRESTORE /* nothing */
+#endif
#endif
+#ifdef __ABICALLS__
+#if defined(__mips_o32) || defined(__mips_o64)
+#define MD_FUNCTION_PROLOGUE(entry_pt) \
+ ".set noreorder" "\n\t" \
+ ".cpload "t9 "\n\t" \
+ ".set reorder" "\n\t" \
+ sPTR_ADDU" $sp,$sp,-"sFRAMESZ "\n\t" \
+ ".cprestore 16" "\n\t" \
+ sREG_S" $ra,"sRAOFF"($sp)" "\n\t"
-#define MD_SECTION_PROLOGUE(sect, entry_pt) \
- __asm ( \
- ".section "#sect",\"ax\",@progbits \n"\
- ".align 2 \n"\
- ".globl "#entry_pt" \n"\
- #entry_pt": \n"\
- MD_FUNCTION_PROLOGUE \
- " /* fall thru */ \n"\
+#elif defined(__mips_n32) || defined(__mips_n64)
+#define MD_FUNCTION_PROLOGUE(entry_pt) \
+ ".set noreorder" "\n\t" \
+ "daddu $sp,$sp,-32" "\n\t" \
+ ".cpsetup "t9", 8, "#entry_pt "\n\t" \
+ "sd $ra,24($sp)" "\n\t" \
+ ".set reorder" "\n\t"
+#else
+#error ABI not supported (__ABICALLS)
+#endif
+#else
+#if defined(__mips_o32) || defined(__mips_o64)
+#define MD_FUNCTION_PROLOGUE(entry_pt) \
+ sPTR_ADDU" $sp,$sp,-"sFRAMESZ "\n\t" \
+ sREG_S" $ra,"sRAOFF"($sp)" "\n\t"
+
+#elif defined(__mips_n32) || defined(__mips_n64)
+/*
+ * On N32/N64, GP is callee-saved.
+ */
+#define MD_FUNCTION_PROLOGUE(entry_pt) \
+ "daddu $sp,$sp,-32" "\n\t" \
+ "sd $gp,8($sp)" "\n\t" \
+ "sd $ra,24($sp)" "\n\t"
+#else
+#error ABI not supported (!__ABICALLS)
+#endif
+#endif /* __ABICALLS */
+
+
+#define MD_SECTION_PROLOGUE(sect, entry_pt) \
+ __asm ( \
+ ".section "#sect",\"ax\",@progbits" "\n\t" \
+ ".align 2" "\n\t" \
+ ".globl "#entry_pt "\n\t" \
+ #entry_pt":" "\n\t" \
+ MD_FUNCTION_PROLOGUE(entry_pt) \
+ " /* fall thru */" "\n\t" \
".previous")
-#define MD_SECTION_EPILOGUE(sect) \
- __asm ( \
- ".section "#sect",\"ax\",@progbits \n"\
- " lw "ra",28($sp) \n"\
- " .set noreorder \n"\
- " j "ra" \n"\
- " addu $sp,$sp,32 \n"\
- " .set reorder \n"\
+#define MD_SECTION_EPILOGUE(sect) \
+ __asm ( \
+ ".section "#sect",\"ax\",@progbits" "\n\t" \
+ sREG_L" $ra,"sRAOFF"($sp)" "\n\t" \
+ MD_GPRESTORE \
+ ".set noreorder" "\n\t" \
+ "j $ra" "\n\t" \
+ sPTR_ADDU" $sp,$sp,"sFRAMESZ "\n\t" \
+ ".set reorder" "\n\t" \
".previous")
#define MD_INIT_SECTION_PROLOGUE MD_SECTION_PROLOGUE(.init, _init)
diff -r d9ef0abcfe4a -r ca98eeb82bb4 share/mk/bsd.kmodule.mk
--- a/share/mk/bsd.kmodule.mk Mon Dec 14 00:53:32 2009 +0000
+++ b/share/mk/bsd.kmodule.mk Mon Dec 14 01:00:46 2009 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.kmodule.mk,v 1.21 2009/11/10 14:47:52 skrll Exp $
+# $NetBSD: bsd.kmodule.mk,v 1.22 2009/12/14 01:00:46 matt Exp $
# We are not building this with PIE
MKPIE=no
@@ -43,7 +43,8 @@
${PROG}: ${OBJS} ${DPADD}
${_MKTARGET_LINK}
- ${LD} -T ${KMODSCRIPT} -r -d -o ${.TARGET} ${OBJS}
+ ${CC} ${LDFLAGS} -nostdlib -Wl,-T,${KMODSCRIPT},-r,-d \
+ -o ${.TARGET} ${OBJS}
##### Install rules
.if !target(kmodinstall)
diff -r d9ef0abcfe4a -r ca98eeb82bb4 share/mk/bsd.own.mk
--- a/share/mk/bsd.own.mk Mon Dec 14 00:53:32 2009 +0000
+++ b/share/mk/bsd.own.mk Mon Dec 14 01:00:46 2009 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.own.mk,v 1.612 2009/12/13 09:10:16 mrg Exp $
+# $NetBSD: bsd.own.mk,v 1.613 2009/12/14 01:00:46 matt Exp $
# This needs to be before bsd.init.mk
.if defined(BSD_MK_COMPAT_FILE)
@@ -532,8 +532,7 @@
#
# On VAX using ELF, all objects are PIC, not just shared libraries,
-# so don't build the _pic version. Unless we are using GCC3 which
-# doesn't support PIC yet.
+# so don't build the _pic version.
#
.if ${MACHINE_ARCH} == "vax"
MKPICLIB= no
@@ -653,7 +652,8 @@
#
# MK* options which have variable defaults.
#
-.if ${MACHINE_ARCH} == "x86_64" || ${MACHINE_ARCH} == "sparc64"
+.if ${MACHINE_ARCH} == "x86_64" || ${MACHINE_ARCH} == "sparc64" || \
+ ${MACHINE_ARCH} == "mips64eb" || ${MACHINE_ARCH} == "mips64el"
MKCOMPAT?= yes
.else
# Don't let this build where it really isn't supported.
@@ -680,9 +680,9 @@
_MKVARS.yes= \
MKATF \
MKBINUTILS \
- MKCATPAGES MKCRYPTO MKCOMPLEX MKCVS \
+ MKCATPAGES MKCRYPTO MKCOMPLEX MKCVS MKCXX \
MKDOC \
- MKGCC MKGCCCMDS MKGDB \
+ MKGCC MKGCCCMDS MKGDB MKGROFF \
MKHESIOD MKHTML \
MKIEEEFP MKINET6 MKINFO MKIPFILTER MKISCSI \
MKKERBEROS \
@@ -741,6 +741,11 @@
# Force some options off if their dependencies are off.
#
+.if ${MKCXX} == "no"
+MKATF:= no
+MKGROFF:= no
+.endif
+
.if ${MKCRYPTO} == "no"
MKKERBEROS:= no
.endif
diff -r d9ef0abcfe4a -r ca98eeb82bb4 share/mk/bsd.prog.mk
--- a/share/mk/bsd.prog.mk Mon Dec 14 00:53:32 2009 +0000
+++ b/share/mk/bsd.prog.mk Mon Dec 14 01:00:46 2009 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.prog.mk,v 1.244 2009/12/08 15:18:42 uebayasi Exp $
+# $NetBSD: bsd.prog.mk,v 1.245 2009/12/14 01:00:46 matt Exp $
# @(#)bsd.prog.mk 8.2 (Berkeley) 4/2/94
.ifndef HOSTPROG
@@ -309,7 +309,7 @@
${_P}.ro: ${OBJS.${_P}} ${DPADD}
${_MKTARGET_LINK}
- ${LD} -r -dc -o ${.TARGET} ${OBJS.${_P}}
+ ${CC} ${LDFLAGS} -nostdlib -Wl,-r,-dc -o ${.TARGET} ${OBJS.${_P}}
.if defined(_PROGDEBUG.${_P})
${_PROGDEBUG.${_P}}: ${_P}
diff -r d9ef0abcfe4a -r ca98eeb82bb4 share/mk/bsd.sys.mk
--- a/share/mk/bsd.sys.mk Mon Dec 14 00:53:32 2009 +0000
+++ b/share/mk/bsd.sys.mk Mon Dec 14 01:00:46 2009 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.sys.mk,v 1.187 2009/12/13 18:40:50 christos Exp $
+# $NetBSD: bsd.sys.mk,v 1.188 2009/12/14 01:00:46 matt Exp $
#
# Build definitions used for NetBSD source tree builds.
@@ -89,6 +89,18 @@
Home |
Main Index |
Thread Index |
Old Index