Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 Feb 2011 03:36:00 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r218876 - in projects/altix/sys: boot/i386/efi boot/ia64/efi boot/ia64/ski boot/pc98/boot2 boot/powerpc/boot1.chrp boot/powerpc/ofw conf ddb dev/dc dev/ppc dev/usb dev/usb/net fs/tmpfs ...
Message-ID:  <201102200336.p1K3a0FC018792@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Sun Feb 20 03:35:59 2011
New Revision: 218876
URL: http://svn.freebsd.org/changeset/base/218876

Log:
  Merge svn+ssh://svn.freebsd.org/base/head@218875

Modified:
  projects/altix/sys/boot/i386/efi/ldscript.amd64
  projects/altix/sys/boot/ia64/efi/ldscript.ia64
  projects/altix/sys/boot/ia64/ski/ldscript.ia64
  projects/altix/sys/boot/pc98/boot2/boot2.c
  projects/altix/sys/boot/powerpc/boot1.chrp/boot1.c
  projects/altix/sys/boot/powerpc/ofw/start.c
  projects/altix/sys/conf/kern.mk
  projects/altix/sys/conf/ldscript.amd64
  projects/altix/sys/conf/ldscript.i386
  projects/altix/sys/conf/ldscript.ia64
  projects/altix/sys/conf/ldscript.sparc64
  projects/altix/sys/ddb/db_command.c
  projects/altix/sys/dev/dc/if_dc.c
  projects/altix/sys/dev/dc/if_dcreg.h
  projects/altix/sys/dev/ppc/ppc_pci.c
  projects/altix/sys/dev/usb/net/if_udav.c
  projects/altix/sys/dev/usb/usbdevs
  projects/altix/sys/fs/tmpfs/tmpfs_vnops.c
  projects/altix/sys/gdb/gdb_main.c
  projects/altix/sys/gdb/gdb_packet.c
  projects/altix/sys/geom/part/g_part_pc98.c
  projects/altix/sys/kern/subr_kdb.c
  projects/altix/sys/kern/vfs_mount.c
  projects/altix/sys/netinet/sctp_sysctl.c
  projects/altix/sys/pc98/pc98/machdep.c
  projects/altix/sys/powerpc/aim/locore64.S
  projects/altix/sys/powerpc/aim/swtch64.S
  projects/altix/sys/powerpc/aim/trap_subr64.S
  projects/altix/sys/powerpc/include/asm.h
  projects/altix/sys/powerpc/include/profile.h
  projects/altix/sys/sys/cdefs.h
  projects/altix/sys/sys/param.h
  projects/altix/sys/ufs/ufs/ufs_vnops.c
Directory Properties:
  projects/altix/lib/libstand/   (props changed)
  projects/altix/sys/   (props changed)
  projects/altix/sys/amd64/include/xen/   (props changed)
  projects/altix/sys/boot/i386/efi/   (props changed)
  projects/altix/sys/boot/ia64/efi/   (props changed)
  projects/altix/sys/boot/ia64/ski/   (props changed)
  projects/altix/sys/boot/powerpc/boot1.chrp/   (props changed)
  projects/altix/sys/boot/powerpc/ofw/   (props changed)
  projects/altix/sys/cddl/contrib/opensolaris/   (props changed)
  projects/altix/sys/conf/   (props changed)
  projects/altix/sys/contrib/dev/acpica/   (props changed)
  projects/altix/sys/contrib/octeon-sdk/   (props changed)
  projects/altix/sys/contrib/pf/   (props changed)
  projects/altix/sys/contrib/x86emu/   (props changed)
  projects/altix/sys/dev/xen/xenpci/   (props changed)
  projects/altix/sys/kern/subr_busdma.c   (props changed)

Modified: projects/altix/sys/boot/i386/efi/ldscript.amd64
==============================================================================
--- projects/altix/sys/boot/i386/efi/ldscript.amd64	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/boot/i386/efi/ldscript.amd64	Sun Feb 20 03:35:59 2011	(r218876)
@@ -1,5 +1,5 @@
 /* $FreeBSD$ */
-OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
+OUTPUT_FORMAT("elf64-x86-64-freebsd", "elf64-x86-64-freebsd", "elf64-x86-64-freebsd")
 OUTPUT_ARCH(i386:x86-64)
 ENTRY(_start)
 SECTIONS

Modified: projects/altix/sys/boot/ia64/efi/ldscript.ia64
==============================================================================
--- projects/altix/sys/boot/ia64/efi/ldscript.ia64	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/boot/ia64/efi/ldscript.ia64	Sun Feb 20 03:35:59 2011	(r218876)
@@ -1,5 +1,5 @@
 /* $FreeBSD$ */
-OUTPUT_FORMAT("elf64-ia64-little", "elf64-ia64-little", "elf64-ia64-little")
+OUTPUT_FORMAT("elf64-ia64-freebsd", "elf64-ia64-freebsd", "elf64-ia64-freebsd")
 OUTPUT_ARCH(ia64)
 ENTRY(_start_plabel)
 SECTIONS
@@ -16,17 +16,15 @@ SECTIONS
     *(.plt)
   } =0x00300000010070000002000001000400
   . = ALIGN(4096);
+  __start_set_Xcommand_set = .;
+  set_Xcommand_set      : { *(set_Xcommand_set) }
+  __stop_set_Xcommand_set = .;
   .data		: {
     *(.rodata .rodata.* .gnu.linkonce.r.*)
     *(.rodata1)
     *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
     *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
     *(.opd)
-    *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*)
-    *(.IA_64.unwind* .gnu.linkonce.ia64unw.*)
-    __start_set_Xcommand_set = .;
-    *(set_Xcommand_set)
-    __stop_set_Xcommand_set = .;
     *(.data .data.* .gnu.linkonce.d.*)
     *(.data1)
     *(.plabel)
@@ -34,6 +32,8 @@ SECTIONS
     *(.bss .bss.* .gnu.linkonce.b.*)
     *(COMMON)
   }
+  .IA_64.unwind_info	: { *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*) }
+  .IA_64.unwind	: { *(.IA_64.unwind* .gnu.linkonce.ia64unw.*) }
   . = ALIGN(4096);
   __gp = .;
   .sdata	: {

Modified: projects/altix/sys/boot/ia64/ski/ldscript.ia64
==============================================================================
--- projects/altix/sys/boot/ia64/ski/ldscript.ia64	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/boot/ia64/ski/ldscript.ia64	Sun Feb 20 03:35:59 2011	(r218876)
@@ -1,5 +1,5 @@
 /* $FreeBSD$ */
-OUTPUT_FORMAT("elf64-ia64-little", "elf64-ia64-little", "elf64-ia64-little")
+OUTPUT_FORMAT("elf64-ia64-freebsd", "elf64-ia64-freebsd", "elf64-ia64-freebsd")
 OUTPUT_ARCH(ia64)
 ENTRY(_start)
 SECTIONS
@@ -12,17 +12,15 @@ SECTIONS
     *(.gnu.warning)
     *(.plt)
   } =0x00300000010070000002000001000400
+  __start_set_Xcommand_set = .;
+  set_Xcommand_set      : { *(set_Xcommand_set) }
+  __stop_set_Xcommand_set = .;
   .data		: {
     *(.rodata .rodata.* .gnu.linkonce.r.*)
     *(.rodata1)
     *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
     *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
     *(.opd)
-    *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*)
-    *(.IA_64.unwind* .gnu.linkonce.ia64unw.*)
-    __start_set_Xcommand_set = .;
-    *(set_Xcommand_set)
-    __stop_set_Xcommand_set = .;
     *(.data .data.* .gnu.linkonce.d.*)
     *(.data1)
     *(.plabel)
@@ -30,6 +28,8 @@ SECTIONS
     *(.bss .bss.* .gnu.linkonce.b.*)
     *(COMMON)
   }
+  .IA_64.unwind_info	: { *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*) }
+  .IA_64.unwind	: { *(.IA_64.unwind* .gnu.linkonce.ia64unw.*) }
   __gp = .;
   .sdata	: {
     *(.got.plt .got)

Modified: projects/altix/sys/boot/pc98/boot2/boot2.c
==============================================================================
--- projects/altix/sys/boot/pc98/boot2/boot2.c	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/boot/pc98/boot2/boot2.c	Sun Feb 20 03:35:59 2011	(r218876)
@@ -484,23 +484,6 @@ load(void)
 	p += roundup2(hdr.ex.a_text, PAGE_SIZE);
 	if (xfsread(ino, p, hdr.ex.a_data))
 	    return;
-	p += hdr.ex.a_data + roundup2(hdr.ex.a_bss, PAGE_SIZE);
-	bootinfo.bi_symtab = VTOP(p);
-	*(uint32_t*)p = hdr.ex.a_syms;
-	p += sizeof(hdr.ex.a_syms);
-	if (hdr.ex.a_syms) {
-	    if (xfsread(ino, p, hdr.ex.a_syms))
-		return;
-	    p += hdr.ex.a_syms;
-	    if (xfsread(ino, p, sizeof(int)))
-		return;
-	    x = *(uint32_t *)p;
-	    p += sizeof(int);
-	    x -= sizeof(int);
-	    if (xfsread(ino, p, x))
-		return;
-	    p += x;
-	}
     } else {
 	fs_off = hdr.eh.e_phoff;
 	for (j = i = 0; i < hdr.eh.e_phnum && j < 2; i++) {
@@ -532,8 +515,8 @@ load(void)
 	    }
 	}
 	addr = hdr.eh.e_entry & 0xffffff;
+	bootinfo.bi_esymtab = VTOP(p);
     }
-    bootinfo.bi_esymtab = VTOP(p);
     bootinfo.bi_kernelname = VTOP(kname);
     bootinfo.bi_bios_dev = dsk.daua;
     __exec((caddr_t)addr, RB_BOOTINFO | (opts & RBX_MASK),

Modified: projects/altix/sys/boot/powerpc/boot1.chrp/boot1.c
==============================================================================
--- projects/altix/sys/boot/powerpc/boot1.chrp/boot1.c	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/boot/powerpc/boot1.chrp/boot1.c	Sun Feb 20 03:35:59 2011	(r218876)
@@ -103,6 +103,7 @@ ofwh_t stdinh, stdouth;
 
 __asm("                         \n\
         .data                   \n\
+	.align 4		\n\
 stack:                          \n\
         .space  16384           \n\
                                 \n\

Modified: projects/altix/sys/boot/powerpc/ofw/start.c
==============================================================================
--- projects/altix/sys/boot/powerpc/ofw/start.c	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/boot/powerpc/ofw/start.c	Sun Feb 20 03:35:59 2011	(r218876)
@@ -40,6 +40,7 @@ void startup(void *, int, int (*)(void *
 
 __asm("				\n\
 	.data			\n\
+	.align 4		\n\
 stack:				\n\
 	.space	16388		\n\
 				\n\

Modified: projects/altix/sys/conf/kern.mk
==============================================================================
--- projects/altix/sys/conf/kern.mk	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/conf/kern.mk	Sun Feb 20 03:35:59 2011	(r218876)
@@ -82,6 +82,13 @@ INLINE_LIMIT?=	15000
 .endif
 
 #
+# Use dot symbols on powerpc64 to make ddb happy
+#
+.if ${MACHINE_ARCH} == "powerpc64"
+CFLAGS+=	-mcall-aixdesc
+.endif
+
+#
 # For MIPS we also tell gcc to use floating point emulation
 #
 .if ${MACHINE_CPUARCH} == "mips"

Modified: projects/altix/sys/conf/ldscript.amd64
==============================================================================
--- projects/altix/sys/conf/ldscript.amd64	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/conf/ldscript.amd64	Sun Feb 20 03:35:59 2011	(r218876)
@@ -1,14 +1,15 @@
 /* $FreeBSD$ */
-OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
+OUTPUT_FORMAT("elf64-x86-64-freebsd", "elf64-x86-64-freebsd", "elf64-x86-64-freebsd")
 OUTPUT_ARCH(i386:x86-64)
 ENTRY(btext)
 SEARCH_DIR("/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = kernbase + 0x00100000 + SIZEOF_HEADERS;
+  . = kernbase + CONSTANT (MAXPAGESIZE) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
   .hash           : { *(.hash) }
+  .gnu.hash       : { *(.gnu.hash) }
   .dynsym         : { *(.dynsym) }
   .dynstr         : { *(.dynstr) }
   .gnu.version    : { *(.gnu.version) }
@@ -22,6 +23,8 @@ SECTIONS
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -36,6 +39,12 @@ SECTIONS
   .rela.got       : { *(.rela.got) }
   .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
   .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
+  .rel.ldata      : { *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) }
+  .rela.ldata     : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) }
+  .rel.lbss       : { *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) }
+  .rela.lbss      : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) }
+  .rel.lrodata    : { *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) }
+  .rela.lrodata   : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) }
   .rel.plt        : { *(.rel.plt) }
   .rela.plt       : { *(.rela.plt) }
   .init           :
@@ -46,6 +55,7 @@ SECTIONS
   .text           :
   {
     *(.text .stub .text.* .gnu.linkonce.t.*)
+    KEEP (*(.text.*personality*))
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
   } =0x90909090
@@ -59,34 +69,37 @@ SECTIONS
   .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
   .rodata1        : { *(.rodata1) }
   .eh_frame_hdr : { *(.eh_frame_hdr) }
+  .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) }
+  .gcc_except_table   : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
-  . = DATA_SEGMENT_ALIGN(0x100000, 0x1000);
-  /* Ensure the __preinit_array_start label is properly aligned.  We
-     could instead move the label definition inside the section, but
-     the linker would then create the section even if it turns out to
-     be empty, which isn't pretty.  */
-  . = ALIGN(64 / 8);
-  PROVIDE (__preinit_array_start = .);
-  .preinit_array     : { *(.preinit_array) }
-  PROVIDE (__preinit_array_end = .);
-  PROVIDE (__init_array_start = .);
-  .init_array     : { *(.init_array) }
-  PROVIDE (__init_array_end = .);
-  PROVIDE (__fini_array_start = .);
-  .fini_array     : { *(.fini_array) }
-  PROVIDE (__fini_array_end = .);
-  .data           :
-  {
-    *(.data .data.* .gnu.linkonce.d.*)
-    SORT(CONSTRUCTORS)
-  }
-  .data1          : { *(.data1) }
+  . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
+  /* Exception handling  */
+  .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) }
+  .gcc_except_table   : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
+  /* Thread Local Storage sections  */
   .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
   .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
-  .eh_frame       : { KEEP (*(.eh_frame)) }
-  .gcc_except_table   : { *(.gcc_except_table) }
-  .dynamic        : { *(.dynamic) }
+  .preinit_array     :
+  {
+    PROVIDE_HIDDEN (__preinit_array_start = .);
+    KEEP (*(.preinit_array))
+    PROVIDE_HIDDEN (__preinit_array_end = .);
+  }
+  .init_array     :
+  {
+     PROVIDE_HIDDEN (__init_array_start = .);
+     KEEP (*(SORT(.init_array.*)))
+     KEEP (*(.init_array))
+     PROVIDE_HIDDEN (__init_array_end = .);
+  }
+  .fini_array     :
+  {
+    PROVIDE_HIDDEN (__fini_array_start = .);
+    KEEP (*(.fini_array))
+    KEEP (*(SORT(.fini_array.*)))
+    PROVIDE_HIDDEN (__fini_array_end = .);
+  }
   _start_ctors = .;
   PROVIDE (start_ctors = .);
   .ctors          :
@@ -101,11 +114,12 @@ SECTIONS
        doesn't matter which directory crtbegin.o
        is in.  */
     KEEP (*crtbegin.o(.ctors))
+    KEEP (*crtbegin?.o(.ctors))
     /* We don't want to include the .ctor section from
-       from the crtend.o file until after the sorted ctors.
+       the crtend.o file until after the sorted ctors.
        The .ctor section from the crtend file contains the
        end of ctors marker and it must be last */
-    KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
+    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
     KEEP (*(SORT(.ctors.*)))
     KEEP (*(.ctors))
   }
@@ -114,14 +128,25 @@ SECTIONS
   .dtors          :
   {
     KEEP (*crtbegin.o(.dtors))
-    KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
+    KEEP (*crtbegin?.o(.dtors))
+    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
     KEEP (*(SORT(.dtors.*)))
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .got            : { *(.got.plt) *(.got) }
-  _edata = .;
-  PROVIDE (edata = .);
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .dynamic        : { *(.dynamic) }
+  .got            : { *(.got) }
+  . = DATA_SEGMENT_RELRO_END (24, .);
+  .got.plt        : { *(.got.plt) }
+  .data           :
+  {
+    *(.data .data.* .gnu.linkonce.d.*)
+    KEEP (*(.gnu.linkonce.d.*personality*))
+    SORT(CONSTRUCTORS)
+  }
+  .data1          : { *(.data1) }
+  _edata = .; PROVIDE (edata = .);
   __bss_start = .;
   .bss            :
   {
@@ -130,12 +155,29 @@ SECTIONS
    *(COMMON)
    /* Align here to ensure that the .bss section occupies space up to
       _end.  Align after .bss to ensure correct alignment even if the
-      .bss section disappears because there are no input sections.  */
-   . = ALIGN(64 / 8);
+      .bss section disappears because there are no input sections.
+      FIXME: Why do we need it? When there is no .bss section, we don't
+      pad the .data section.  */
+   . = ALIGN(. != 0 ? 64 / 8 : 1);
+  }
+  .lbss   :
+  {
+    *(.dynlbss)
+    *(.lbss .lbss.* .gnu.linkonce.lb.*)
+    *(LARGE_COMMON)
+  }
+  . = ALIGN(64 / 8);
+  .lrodata   ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) :
+  {
+    *(.lrodata .lrodata.* .gnu.linkonce.lr.*)
+  }
+  .ldata   ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) :
+  {
+    *(.ldata .ldata.* .gnu.linkonce.l.*)
+    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
-  _end = .;
-  PROVIDE (end = .);
+  _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
   /* Stabs debugging sections.  */
   .stab          0 : { *(.stab) }
@@ -170,4 +212,9 @@ SECTIONS
   .debug_funcnames 0 : { *(.debug_funcnames) }
   .debug_typenames 0 : { *(.debug_typenames) }
   .debug_varnames  0 : { *(.debug_varnames) }
+  /* DWARF 3 */
+  .debug_pubtypes 0 : { *(.debug_pubtypes) }
+  .debug_ranges   0 : { *(.debug_ranges) }
+  .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
+  /DISCARD/ : { *(.note.GNU-stack) }
 }

Modified: projects/altix/sys/conf/ldscript.i386
==============================================================================
--- projects/altix/sys/conf/ldscript.i386	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/conf/ldscript.i386	Sun Feb 20 03:35:59 2011	(r218876)
@@ -7,104 +7,165 @@ SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = kernbase + kernload + SIZEOF_HEADERS;
-  .interp     : { *(.interp) 	}
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .gnu.version   : { *(.gnu.version)	}
-  .gnu.version_d   : { *(.gnu.version_d)	}
-  .gnu.version_r   : { *(.gnu.version_r)	}
-  .rel.text      :
-    { *(.rel.text) *(.rel.gnu.linkonce.t*) }
-  .rela.text     :
-    { *(.rela.text) *(.rela.gnu.linkonce.t*) }
-  .rel.data      :
-    { *(.rel.data) *(.rel.gnu.linkonce.d*) }
-  .rela.data     :
-    { *(.rela.data) *(.rela.gnu.linkonce.d*) }
-  .rel.rodata    :
-    { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
-  .rela.rodata   :
-    { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
-  .rel.got       : { *(.rel.got)		}
-  .rela.got      : { *(.rela.got)		}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.init      : { *(.rel.init)	}
-  .rela.init     : { *(.rela.init)	}
-  .rel.fini      : { *(.rel.fini)	}
-  .rela.fini     : { *(.rela.fini)	}
-  .rel.bss       : { *(.rel.bss)		}
-  .rela.bss      : { *(.rela.bss)		}
-  .rel.plt       : { *(.rel.plt)		}
-  .rela.plt      : { *(.rela.plt)		}
-  .init          : { *(.init)	} =0x9090
-  .plt      : { *(.plt)	}
-  .text      :
+  .interp         : { *(.interp) }
+  .hash           : { *(.hash) }
+  .gnu.hash       : { *(.gnu.hash) }
+  .dynsym         : { *(.dynsym) }
+  .dynstr         : { *(.dynstr) }
+  .gnu.version    : { *(.gnu.version) }
+  .gnu.version_d  : { *(.gnu.version_d) }
+  .gnu.version_r  : { *(.gnu.version_r) }
+  .rel.init       : { *(.rel.init) }
+  .rela.init      : { *(.rela.init) }
+  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
+  .rela.text      : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
+  .rel.fini       : { *(.rel.fini) }
+  .rela.fini      : { *(.rela.fini) }
+  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
+  .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
+  .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
+  .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
+  .rela.tdata	  : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
+  .rel.tbss	  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
+  .rela.tbss	  : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
+  .rel.ctors      : { *(.rel.ctors) }
+  .rela.ctors     : { *(.rela.ctors) }
+  .rel.dtors      : { *(.rel.dtors) }
+  .rela.dtors     : { *(.rela.dtors) }
+  .rel.got        : { *(.rel.got) }
+  .rela.got       : { *(.rela.got) }
+  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
+  .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
+  .rel.plt        : { *(.rel.plt) }
+  .rela.plt       : { *(.rela.plt) }
+  .init           :
   {
-    *(.text)
-    *(.stub)
+    KEEP (*(.init))
+  } =0x90909090
+  .plt            : { *(.plt) }
+  .text           :
+  {
+    *(.text .stub .text.* .gnu.linkonce.t.*)
+    KEEP (*(.text.*personality*))
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-    *(.gnu.linkonce.t*)
-  } =0x9090
-  _etext = .;
+  } =0x90909090
+  .fini           :
+  {
+    KEEP (*(.fini))
+  } =0x90909090
+  PROVIDE (__etext = .);
+  PROVIDE (_etext = .);
   PROVIDE (etext = .);
-  .fini      : { *(.fini)    } =0x9090
-  .rodata    : { *(.rodata) *(.gnu.linkonce.r*) }
-  .rodata1   : { *(.rodata1) }
+  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
+  .rodata1        : { *(.rodata1) }
+  .eh_frame_hdr : { *(.eh_frame_hdr) }
+  .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) }
+  .gcc_except_table   : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
-  . = ALIGN(0x1000) + (. & (0x1000 - 1)) ; 
-  .data    :
+  . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
+  /* Exception handling  */
+  .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) }
+  .gcc_except_table   : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
+  /* Thread Local Storage sections  */
+  .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
+  .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
+  .preinit_array     :
   {
-    *(.data)
-    *(.gnu.linkonce.d*)
-    CONSTRUCTORS
+    PROVIDE_HIDDEN (__preinit_array_start = .);
+    KEEP (*(.preinit_array))
+    PROVIDE_HIDDEN (__preinit_array_end = .);
+  }
+  .init_array     :
+  {
+     PROVIDE_HIDDEN (__init_array_start = .);
+     KEEP (*(SORT(.init_array.*)))
+     KEEP (*(.init_array))
+     PROVIDE_HIDDEN (__init_array_end = .);
+  }
+  .fini_array     :
+  {
+    PROVIDE_HIDDEN (__fini_array_start = .);
+    KEEP (*(.fini_array))
+    KEEP (*(SORT(.fini_array.*)))
+    PROVIDE_HIDDEN (__fini_array_end = .);
   }
-  .data1   : { *(.data1) }
-  . = ALIGN(32 / 8);
   _start_ctors = .;
   PROVIDE (start_ctors = .);
-  .ctors         :
+  .ctors          :
   {
-    *(.ctors)
+    /* gcc uses crtbegin.o to find the start of
+       the constructors, so we make sure it is
+       first.  Because this is a wildcard, it
+       doesn't matter if the user does not
+       actually link against crtbegin.o; the
+       linker won't look for a file to match a
+       wildcard.  The wildcard also means that it
+       doesn't matter which directory crtbegin.o
+       is in.  */
+    KEEP (*crtbegin.o(.ctors))
+    KEEP (*crtbegin?.o(.ctors))
+    /* We don't want to include the .ctor section from
+       the crtend.o file until after the sorted ctors.
+       The .ctor section from the crtend file contains the
+       end of ctors marker and it must be last */
+    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
+    KEEP (*(SORT(.ctors.*)))
+    KEEP (*(.ctors))
   }
   _stop_ctors = .;
   PROVIDE (stop_ctors = .);
-  .dtors         :
+  .dtors          :
   {
-    *(.dtors)
+    KEEP (*crtbegin.o(.dtors))
+    KEEP (*crtbegin?.o(.dtors))
+    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
+    KEEP (*(SORT(.dtors.*)))
+    KEEP (*(.dtors))
   }
-  .got           : { *(.got.plt) *(.got) }
-  .dynamic       : { *(.dynamic) }
-  /* We want the small data sections together, so single-instruction offsets
-     can access them all, and initialized data all before uninitialized, so
-     we can shorten the on-disk segment size.  */
-  .sdata     : { *(.sdata) }
-  _edata  =  .;
-  PROVIDE (edata = .);
+  .jcr            : { KEEP (*(.jcr)) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .dynamic        : { *(.dynamic) }
+  .got            : { *(.got) }
+  . = DATA_SEGMENT_RELRO_END (12, .);
+  .got.plt        : { *(.got.plt) }
+  .data           :
+  {
+    *(.data .data.* .gnu.linkonce.d.*)
+    KEEP (*(.gnu.linkonce.d.*personality*))
+    SORT(CONSTRUCTORS)
+  }
+  .data1          : { *(.data1) }
+  _edata = .; PROVIDE (edata = .);
   __bss_start = .;
-  .sbss      : { *(.sbss) *(.scommon) }
-  .bss       :
+  .bss            :
   {
    *(.dynbss)
-   *(.bss)
+   *(.bss .bss.* .gnu.linkonce.b.*)
    *(COMMON)
+   /* Align here to ensure that the .bss section occupies space up to
+      _end.  Align after .bss to ensure correct alignment even if the
+      .bss section disappears because there are no input sections.
+      FIXME: Why do we need it? When there is no .bss section, we don't
+      pad the .data section.  */
+   . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
-  _end = . ;
-  PROVIDE (end = .);
+  . = ALIGN(32 / 8);
+  _end = .; PROVIDE (end = .);
+  . = DATA_SEGMENT_END (.);
   /* Stabs debugging sections.  */
-  .stab 0 : { *(.stab) }
-  .stabstr 0 : { *(.stabstr) }
-  .stab.excl 0 : { *(.stab.excl) }
-  .stab.exclstr 0 : { *(.stab.exclstr) }
-  .stab.index 0 : { *(.stab.index) }
+  .stab          0 : { *(.stab) }
+  .stabstr       0 : { *(.stabstr) }
+  .stab.excl     0 : { *(.stab.excl) }
+  .stab.exclstr  0 : { *(.stab.exclstr) }
+  .stab.index    0 : { *(.stab.index) }
   .stab.indexstr 0 : { *(.stab.indexstr) }
-  .comment 0 : { *(.comment) }
+  .comment       0 : { *(.comment) }
   /* DWARF debug sections.
      Symbols in the DWARF debugging sections are relative to the beginning
      of the section so we begin them at 0.  */
@@ -118,7 +179,7 @@ SECTIONS
   .debug_aranges  0 : { *(.debug_aranges) }
   .debug_pubnames 0 : { *(.debug_pubnames) }
   /* DWARF 2 */
-  .debug_info     0 : { *(.debug_info) }
+  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
   .debug_line     0 : { *(.debug_line) }
   .debug_frame    0 : { *(.debug_frame) }
@@ -130,5 +191,9 @@ SECTIONS
   .debug_funcnames 0 : { *(.debug_funcnames) }
   .debug_typenames 0 : { *(.debug_typenames) }
   .debug_varnames  0 : { *(.debug_varnames) }
-  /* These must appear regardless of  .  */
+  /* DWARF 3 */
+  .debug_pubtypes 0 : { *(.debug_pubtypes) }
+  .debug_ranges   0 : { *(.debug_ranges) }
+  .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
+  /DISCARD/ : { *(.note.GNU-stack) }
 }

Modified: projects/altix/sys/conf/ldscript.ia64
==============================================================================
--- projects/altix/sys/conf/ldscript.ia64	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/conf/ldscript.ia64	Sun Feb 20 03:35:59 2011	(r218876)
@@ -1,5 +1,5 @@
 /* $FreeBSD$ */
-OUTPUT_FORMAT("elf64-ia64-little", "elf64-ia64-little", "elf64-ia64-little")
+OUTPUT_FORMAT("elf64-ia64-freebsd", "elf64-ia64-freebsd", "elf64-ia64-freebsd")
 OUTPUT_ARCH(ia64)
 ENTRY(__start)
 SEARCH_DIR(/usr/lib);

Modified: projects/altix/sys/conf/ldscript.sparc64
==============================================================================
--- projects/altix/sys/conf/ldscript.sparc64	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/conf/ldscript.sparc64	Sun Feb 20 03:35:59 2011	(r218876)
@@ -1,6 +1,6 @@
 /* $FreeBSD$ */
-OUTPUT_FORMAT("elf64-sparc", "elf64-sparc",
-	      "elf64-sparc")
+OUTPUT_FORMAT("elf64-sparc-freebsd", "elf64-sparc-freebsd",
+	      "elf64-sparc-freebsd")
 OUTPUT_ARCH(sparc:v9)
 ENTRY(_start)
 SEARCH_DIR(/usr/lib);

Modified: projects/altix/sys/ddb/db_command.c
==============================================================================
--- projects/altix/sys/ddb/db_command.c	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/ddb/db_command.c	Sun Feb 20 03:35:59 2011	(r218876)
@@ -723,10 +723,16 @@ static void
 db_gdb(db_expr_t dummy1, boolean_t dummy2, db_expr_t dummy3, char *dummy4)
 {
 
-	if (kdb_dbbe_select("gdb") != 0)
+	if (kdb_dbbe_select("gdb") != 0) {
 		db_printf("The remote GDB backend could not be selected.\n");
-	else
-		db_printf("Step to enter the remote GDB backend.\n");
+		return;
+	}
+	/*
+	 * Mark that we are done in the debugger.  kdb_trap()
+	 * should re-enter with the new backend.
+	 */
+	db_cmd_loop_done = 1;
+	db_printf("(ctrl-c will return control to ddb)\n");
 }
 
 static void

Modified: projects/altix/sys/dev/dc/if_dc.c
==============================================================================
--- projects/altix/sys/dev/dc/if_dc.c	Sun Feb 20 01:26:29 2011	(r218875)
+++ projects/altix/sys/dev/dc/if_dc.c	Sun Feb 20 03:35:59 2011	(r218876)
@@ -127,7 +127,7 @@ __FBSDID("$FreeBSD$");
 #include <dev/pci/pcireg.h>
 #include <dev/pci/pcivar.h>
 
-#define DC_USEIOSPACE
+#define	DC_USEIOSPACE
 
 #include <dev/dc/if_dcreg.h>
 
@@ -233,7 +233,8 @@ static int dc_detach(device_t);
 static int dc_suspend(device_t);
 static int dc_resume(device_t);
 static const struct dc_type *dc_devtype(device_t);
-static int dc_newbuf(struct dc_softc *, int, int);
+static void dc_discard_rxbuf(struct dc_softc *, int);
+static int dc_newbuf(struct dc_softc *, int);
 static int dc_encap(struct dc_softc *, struct mbuf **);
 static void dc_pnic_rx_bug_war(struct dc_softc *, int);
 static int dc_rx_resync(struct dc_softc *);
@@ -253,19 +254,23 @@ static int dc_shutdown(device_t);
 static int dc_ifmedia_upd(struct ifnet *);
 static void dc_ifmedia_sts(struct ifnet *, struct ifmediareq *);
 
+static int dc_dma_alloc(struct dc_softc *);
+static void dc_dma_free(struct dc_softc *);
+static void dc_dma_map_addr(void *, bus_dma_segment_t *, int, int);
+
 static void dc_delay(struct dc_softc *);
 static void dc_eeprom_idle(struct dc_softc *);
 static void dc_eeprom_putbyte(struct dc_softc *, int);
-static void dc_eeprom_getword(struct dc_softc *, int, u_int16_t *);
-static void dc_eeprom_getword_pnic(struct dc_softc *, int, u_int16_t *);
-static void dc_eeprom_getword_xircom(struct dc_softc *, int, u_int16_t *);
+static void dc_eeprom_getword(struct dc_softc *, int, uint16_t *);
+static void dc_eeprom_getword_pnic(struct dc_softc *, int, uint16_t *);
+static void dc_eeprom_getword_xircom(struct dc_softc *, int, uint16_t *);
 static void dc_eeprom_width(struct dc_softc *);
 static void dc_read_eeprom(struct dc_softc *, caddr_t, int, int, int);
 
 static void dc_mii_writebit(struct dc_softc *, int);
 static int dc_mii_readbit(struct dc_softc *);
 static void dc_mii_sync(struct dc_softc *);
-static void dc_mii_send(struct dc_softc *, u_int32_t, int);
+static void dc_mii_send(struct dc_softc *, uint32_t, int);
 static int dc_mii_readreg(struct dc_softc *, struct dc_mii_frame *);
 static int dc_mii_writereg(struct dc_softc *, struct dc_mii_frame *);
 static int dc_miibus_readreg(device_t, int, int);
@@ -296,11 +301,11 @@ static void dc_apply_fixup(struct dc_sof
 static int dc_check_multiport(struct dc_softc *);
 
 #ifdef DC_USEIOSPACE
-#define DC_RES			SYS_RES_IOPORT
-#define DC_RID			DC_PCI_CFBIO
+#define	DC_RES			SYS_RES_IOPORT
+#define	DC_RID			DC_PCI_CFBIO
 #else
-#define DC_RES			SYS_RES_MEMORY
-#define DC_RID			DC_PCI_CFBMA
+#define	DC_RES			SYS_RES_MEMORY
+#define	DC_RID			DC_PCI_CFBMA
 #endif
 
 static device_method_t dc_methods[] = {
@@ -336,14 +341,14 @@ static devclass_t dc_devclass;
 DRIVER_MODULE(dc, pci, dc_driver, dc_devclass, 0, 0);
 DRIVER_MODULE(miibus, dc, miibus_driver, miibus_devclass, 0, 0);
 
-#define DC_SETBIT(sc, reg, x)				\
+#define	DC_SETBIT(sc, reg, x)				\
 	CSR_WRITE_4(sc, reg, CSR_READ_4(sc, reg) | (x))
 
-#define DC_CLRBIT(sc, reg, x)				\
+#define	DC_CLRBIT(sc, reg, x)				\
 	CSR_WRITE_4(sc, reg, CSR_READ_4(sc, reg) & ~(x))
 
-#define SIO_SET(x)	DC_SETBIT(sc, DC_SIO, (x))
-#define SIO_CLR(x)	DC_CLRBIT(sc, DC_SIO, (x))
+#define	SIO_SET(x)	DC_SETBIT(sc, DC_SIO, (x))
+#define	SIO_CLR(x)	DC_CLRBIT(sc, DC_SIO, (x))
 
 static void
 dc_delay(struct dc_softc *sc)
@@ -490,10 +495,10 @@ dc_eeprom_putbyte(struct dc_softc *sc, i
  * the EEPROM.
  */
 static void
-dc_eeprom_getword_pnic(struct dc_softc *sc, int addr, u_int16_t *dest)
+dc_eeprom_getword_pnic(struct dc_softc *sc, int addr, uint16_t *dest)
 {
 	int i;
-	u_int32_t r;
+	uint32_t r;
 
 	CSR_WRITE_4(sc, DC_PN_SIOCTL, DC_PN_EEOPCODE_READ | addr);
 
@@ -501,7 +506,7 @@ dc_eeprom_getword_pnic(struct dc_softc *
 		DELAY(1);
 		r = CSR_READ_4(sc, DC_SIO);
 		if (!(r & DC_PN_SIOCTL_BUSY)) {
-			*dest = (u_int16_t)(r & 0xFFFF);
+			*dest = (uint16_t)(r & 0xFFFF);
 			return;
 		}
 	}
@@ -513,17 +518,17 @@ dc_eeprom_getword_pnic(struct dc_softc *
  * the EEPROM, too.
  */
 static void
-dc_eeprom_getword_xircom(struct dc_softc *sc, int addr, u_int16_t *dest)
+dc_eeprom_getword_xircom(struct dc_softc *sc, int addr, uint16_t *dest)
 {
 
 	SIO_SET(DC_SIO_ROMSEL | DC_SIO_ROMCTL_READ);
 
 	addr *= 2;
 	CSR_WRITE_4(sc, DC_ROM, addr | 0x160);
-	*dest = (u_int16_t)CSR_READ_4(sc, DC_SIO) & 0xff;
+	*dest = (uint16_t)CSR_READ_4(sc, DC_SIO) & 0xff;
 	addr += 1;
 	CSR_WRITE_4(sc, DC_ROM, addr | 0x160);
-	*dest |= ((u_int16_t)CSR_READ_4(sc, DC_SIO) & 0xff) << 8;
+	*dest |= ((uint16_t)CSR_READ_4(sc, DC_SIO) & 0xff) << 8;
 
 	SIO_CLR(DC_SIO_ROMSEL | DC_SIO_ROMCTL_READ);
 }
@@ -532,10 +537,10 @@ dc_eeprom_getword_xircom(struct dc_softc
  * Read a word of data stored in the EEPROM at address 'addr.'
  */
 static void
-dc_eeprom_getword(struct dc_softc *sc, int addr, u_int16_t *dest)
+dc_eeprom_getword(struct dc_softc *sc, int addr, uint16_t *dest)
 {
 	int i;
-	u_int16_t word = 0;
+	uint16_t word = 0;
 
 	/* Force EEPROM to idle state. */
 	dc_eeprom_idle(sc);
@@ -581,7 +586,7 @@ static void
 dc_read_eeprom(struct dc_softc *sc, caddr_t dest, int off, int cnt, int be)
 {
 	int i;
-	u_int16_t word = 0, *ptr;
+	uint16_t word = 0, *ptr;
 
 	for (i = 0; i < cnt; i++) {
 		if (DC_IS_PNIC(sc))
@@ -590,7 +595,7 @@ dc_read_eeprom(struct dc_softc *sc, cadd
 			dc_eeprom_getword_xircom(sc, off + i, &word);
 		else
 			dc_eeprom_getword(sc, off + i, &word);
-		ptr = (u_int16_t *)(dest + (i * 2));
+		ptr = (uint16_t *)(dest + (i * 2));
 		if (be)
 			*ptr = be16toh(word);
 		else
@@ -675,7 +680,7 @@ dc_mii_sync(struct dc_softc *sc)
  * Clock a series of bits through the MII.
  */
 static void
-dc_mii_send(struct dc_softc *sc, u_int32_t bits, int cnt)
+dc_mii_send(struct dc_softc *sc, uint32_t bits, int cnt)
 {
 	int i;
 
@@ -1011,9 +1016,9 @@ dc_miibus_mediainit(device_t dev)
 		ifmedia_add(ifm, IFM_ETHER | IFM_HPNA_1, 0, NULL);
 }
 
-#define DC_BITS_512	9
-#define DC_BITS_128	7
-#define DC_BITS_64	6
+#define	DC_BITS_512	9
+#define	DC_BITS_128	7
+#define	DC_BITS_64	6
 
 static uint32_t
 dc_mchash_le(struct dc_softc *sc, const uint8_t *addr)
@@ -1077,7 +1082,7 @@ dc_setfilt_21143(struct dc_softc *sc)
 {
 	uint16_t eaddr[(ETHER_ADDR_LEN+1)/2];
 	struct dc_desc *sframe;
-	u_int32_t h, *sp;
+	uint32_t h, *sp;
 	struct ifmultiaddr *ifma;
 	struct ifnet *ifp;
 	int i;
@@ -1087,11 +1092,11 @@ dc_setfilt_21143(struct dc_softc *sc)
 	i = sc->dc_cdata.dc_tx_prod;
 	DC_INC(sc->dc_cdata.dc_tx_prod, DC_TX_LIST_CNT);
 	sc->dc_cdata.dc_tx_cnt++;
-	sframe = &sc->dc_ldata->dc_tx_list[i];
+	sframe = &sc->dc_ldata.dc_tx_list[i];
 	sp = sc->dc_cdata.dc_sbuf;
 	bzero(sp, DC_SFRAME_LEN);
 
-	sframe->dc_data = htole32(sc->dc_saddr);
+	sframe->dc_data = htole32(DC_ADDR_LO(sc->dc_saddr));
 	sframe->dc_ctl = htole32(DC_SFRAME_LEN | DC_TXCTL_SETUP |
 	    DC_TXCTL_TLINK | DC_FILTER_HASHPERF | DC_TXCTL_FINT);
 
@@ -1130,6 +1135,7 @@ dc_setfilt_21143(struct dc_softc *sc)
 	sp[41] = DC_SP_MAC(eaddr[2]);
 
 	sframe->dc_status = htole32(DC_TXSTAT_OWN);
+	bus_dmamap_sync(sc->dc_stag, sc->dc_smap, BUS_DMASYNC_PREWRITE);
 	CSR_WRITE_4(sc, DC_TXSTART, 0xFFFFFFFF);
 
 	/*
@@ -1150,7 +1156,7 @@ dc_setfilt_admtek(struct dc_softc *sc)
 	struct ifnet *ifp;
 	struct ifmultiaddr *ifma;
 	int h = 0;
-	u_int32_t hashes[2] = { 0, 0 };
+	uint32_t hashes[2] = { 0, 0 };
 
 	ifp = sc->dc_ifp;
 
@@ -1211,7 +1217,7 @@ dc_setfilt_asix(struct dc_softc *sc)
 	struct ifnet *ifp;
 	struct ifmultiaddr *ifma;
 	int h = 0;
-	u_int32_t hashes[2] = { 0, 0 };
+	uint32_t hashes[2] = { 0, 0 };
 
 	ifp = sc->dc_ifp;
 
@@ -1281,7 +1287,7 @@ dc_setfilt_xircom(struct dc_softc *sc)
 	struct ifnet *ifp;
 	struct ifmultiaddr *ifma;
 	struct dc_desc *sframe;
-	u_int32_t h, *sp;
+	uint32_t h, *sp;
 	int i;
 
 	ifp = sc->dc_ifp;
@@ -1290,11 +1296,11 @@ dc_setfilt_xircom(struct dc_softc *sc)
 	i = sc->dc_cdata.dc_tx_prod;
 	DC_INC(sc->dc_cdata.dc_tx_prod, DC_TX_LIST_CNT);
 	sc->dc_cdata.dc_tx_cnt++;
-	sframe = &sc->dc_ldata->dc_tx_list[i];
+	sframe = &sc->dc_ldata.dc_tx_list[i];
 	sp = sc->dc_cdata.dc_sbuf;
 	bzero(sp, DC_SFRAME_LEN);
 
-	sframe->dc_data = htole32(sc->dc_saddr);
+	sframe->dc_data = htole32(DC_ADDR_LO(sc->dc_saddr));
 	sframe->dc_ctl = htole32(DC_SFRAME_LEN | DC_TXCTL_SETUP |
 	    DC_TXCTL_TLINK | DC_FILTER_HASHPERF | DC_TXCTL_FINT);
 
@@ -1334,8 +1340,8 @@ dc_setfilt_xircom(struct dc_softc *sc)
 
 	DC_SETBIT(sc, DC_NETCFG, DC_NETCFG_TX_ON);
 	DC_SETBIT(sc, DC_NETCFG, DC_NETCFG_RX_ON);
-	ifp->if_drv_flags |= IFF_DRV_RUNNING;
 	sframe->dc_status = htole32(DC_TXSTAT_OWN);
+	bus_dmamap_sync(sc->dc_stag, sc->dc_smap, BUS_DMASYNC_PREWRITE);
 	CSR_WRITE_4(sc, DC_TXSTART, 0xFFFFFFFF);
 
 	/*
@@ -1373,7 +1379,7 @@ static void
 dc_setcfg(struct dc_softc *sc, int media)
 {
 	int i, restart = 0, watchdogreg;
-	u_int32_t isr;
+	uint32_t isr;
 
 	if (IFM_SUBTYPE(media) == IFM_NONE)
 		return;
@@ -1557,8 +1563,8 @@ static const struct dc_type *
 dc_devtype(device_t dev)
 {
 	const struct dc_type *t;
-	u_int32_t devid;
-	u_int8_t rev;
+	uint32_t devid;
+	uint8_t rev;
 
 	t = dc_devs;
 	devid = pci_get_devid(dev);
@@ -1601,9 +1607,9 @@ static void
 dc_apply_fixup(struct dc_softc *sc, int media)
 {
 	struct dc_mediainfo *m;
-	u_int8_t *p;
+	uint8_t *p;
 	int i;
-	u_int32_t reg;
+	uint32_t reg;
 
 	m = sc->dc_mi;
 
@@ -1662,11 +1668,11 @@ dc_decode_leaf_sia(struct dc_softc *sc, 
 	if (l->dc_sia_code & DC_SIA_CODE_EXT) {
 		m->dc_gp_len = 2;
 		m->dc_gp_ptr =
-		(u_int8_t *)&l->dc_un.dc_sia_ext.dc_sia_gpio_ctl;
+		(uint8_t *)&l->dc_un.dc_sia_ext.dc_sia_gpio_ctl;
 	} else {
 		m->dc_gp_len = 2;
 		m->dc_gp_ptr =
-		(u_int8_t *)&l->dc_un.dc_sia_noext.dc_sia_gpio_ctl;
+		(uint8_t *)&l->dc_un.dc_sia_noext.dc_sia_gpio_ctl;
 	}
 
 	m->dc_next = sc->dc_mi;
@@ -1693,7 +1699,7 @@ dc_decode_leaf_sym(struct dc_softc *sc, 
 		m->dc_media = IFM_100_TX | IFM_FDX;
 
 	m->dc_gp_len = 2;
-	m->dc_gp_ptr = (u_int8_t *)&l->dc_sym_gpio_ctl;
+	m->dc_gp_ptr = (uint8_t *)&l->dc_sym_gpio_ctl;
 
 	m->dc_next = sc->dc_mi;
 	sc->dc_mi = m;
@@ -1706,7 +1712,7 @@ static int
 dc_decode_leaf_mii(struct dc_softc *sc, struct dc_eblock_mii *l)
 {
 	struct dc_mediainfo *m;
-	u_int8_t *p;
+	uint8_t *p;
 
 	m = malloc(sizeof(struct dc_mediainfo), M_DEVBUF, M_NOWAIT | M_ZERO);
 	if (m == NULL) {
@@ -1717,7 +1723,7 @@ dc_decode_leaf_mii(struct dc_softc *sc, 
 	m->dc_media = IFM_AUTO;
 	m->dc_gp_len = l->dc_gpr_len;
 
-	p = (u_int8_t *)l;
+	p = (uint8_t *)l;
 	p += sizeof(struct dc_eblock_mii);
 	m->dc_gp_ptr = p;
 	p += 2 * l->dc_gpr_len;
@@ -1807,7 +1813,7 @@ dc_parse_21143_srom(struct dc_softc *sc)

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102200336.p1K3a0FC018792>