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