Synchronize some of the machine-independant AMD64 bits.
authorMatthew Dillon <dillon@dragonflybsd.org>
Wed, 23 Jul 2008 16:39:34 +0000 (16:39 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Wed, 23 Jul 2008 16:39:34 +0000 (16:39 +0000)
Obtained-from: Jordan Gordeev <jgordeev@dir.bg>

lib/libthread_xu/arch/amd64/include/pthread_md.h
sys/conf/bsd.kern.mk
sys/conf/kmod.mk
sys/ddb/db_kld.c
sys/dev/serial/sio/sio.c
sys/emulation/Makefile
sys/kern/kern_environment.c
sys/kern/kern_memio.c
sys/sys/elf64.h

index 5d5877f..22128af 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/lib/libpthread/arch/amd64/include/pthread_md.h,v 1.10 2004/08/25 23:42:40 davidxu Exp $
- * $DragonFly: src/lib/libthread_xu/arch/amd64/include/pthread_md.h,v 1.4 2005/03/29 19:26:20 joerg Exp $
+ * $DragonFly: src/lib/libthread_xu/arch/amd64/include/pthread_md.h,v 1.5 2008/07/23 16:39:30 dillon Exp $
  */
 
 /*
@@ -42,6 +42,8 @@
 
 struct pthread;
 
+#define atomic_cmpset_acq_int  atomic_cmpset_int
+
 /*
  * The constructors.
  */
index 477bf06..1f493ac 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/share/mk/bsd.kern.mk,v 1.17.2.1 2001/08/01 16:56:56 obrien Exp $
-# $DragonFly: src/sys/conf/bsd.kern.mk,v 1.15 2008/01/09 00:07:57 corecode Exp $
+# $DragonFly: src/sys/conf/bsd.kern.mk,v 1.16 2008/07/23 16:39:31 dillon Exp $
 
 #
 # Warning flags for compiling the kernel and components of the kernel.
@@ -10,6 +10,7 @@
 #
 CWARNFLAGS?=   -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes \
                -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual \
+               -Werror-implicit-function-declaration \
                -std=c99
 #
 # The following flags are next up for working on:
index 7bb8af9..65d9c56 100644 (file)
@@ -1,6 +1,6 @@
 #      From: @(#)bsd.prog.mk   5.26 (Berkeley) 6/25/91
 # $FreeBSD: src/sys/conf/kmod.mk,v 1.82.2.15 2003/02/10 13:11:50 nyan Exp $
-# $DragonFly: src/sys/conf/kmod.mk,v 1.33 2007/08/26 07:53:25 corecode Exp $
+# $DragonFly: src/sys/conf/kmod.mk,v 1.34 2008/07/23 16:39:31 dillon Exp $
 #
 # The include file <bsd.kmod.mk> handles installing Kernel Loadable Device
 # drivers (KLD's).
@@ -134,8 +134,10 @@ OBJS+=  ${SRCS:N*.h:N*.patch:R:S/$/.o/g}
 PROG=  ${KMOD}.ko
 .endif
 
+.if ${MACHINE_ARCH} != amd64
 ${PROG}: ${KMOD}.kld ${KMODDEPS}
        ${LD} -Bshareable ${LDFLAGS} -o ${.TARGET} ${KMOD}.kld ${KMODDEPS}
+.endif
 
 .if defined(KMODDEPS)
 .for dep in ${KMODDEPS}
@@ -147,8 +149,12 @@ ${dep}:
 .endfor
 .endif
 
+.if ${MACHINE_ARCH} != amd64
 ${KMOD}.kld: ${OBJS}
        ${LD} ${LDFLAGS} -r -o ${.TARGET} ${OBJS}
+.else
+${PROG}: ${OBJS}
+.endif
 
 .if !defined(NOMAN)
 .include <bsd.man.mk>
index f48d145..b118616 100644 (file)
@@ -24,7 +24,7 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/ddb/db_kld.c,v 1.9 2000/01/11 13:25:12 peter Exp $
- * $DragonFly: src/sys/ddb/db_kld.c,v 1.4 2005/12/23 21:35:44 swildner Exp $
+ * $DragonFly: src/sys/ddb/db_kld.c,v 1.5 2008/07/23 16:39:32 dillon Exp $
  *     from db_aout.c,v 1.20 1998/06/07 17:09:36 dfr Exp
  */
 
 #include <ddb/ddb.h>
 #include <ddb/db_sym.h>
 
+#if defined(__amd64__)
+vm_offset_t    ksym_start, ksym_end;
+#endif
+
 c_db_sym_t
 X_db_lookup(db_symtab_t *stab, const char *symstr)
 {
index 0ae6325..4ed61ec 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/isa/sio.c,v 1.291.2.35 2003/05/18 08:51:15 murray Exp $
- * $DragonFly: src/sys/dev/serial/sio/sio.c,v 1.43 2008/06/05 18:06:32 swildner Exp $
+ * $DragonFly: src/sys/dev/serial/sio/sio.c,v 1.44 2008/07/23 16:39:33 dillon Exp $
  *     from: @(#)com.c 7.5 (Berkeley) 5/16/91
  *     from: i386/isa sio.c,v 1.234
  */
@@ -2736,7 +2736,7 @@ static cn_checkc_t siocncheckc;
 static cn_getc_t siocngetc;
 static cn_putc_t siocnputc;
 
-#ifdef __i386__
+#if defined(__i386__) || defined(__amd64__)
 CONS_DRIVER(sio, siocnprobe, siocninit, siocninit_fini,
            NULL, siocngetc, siocncheckc, siocnputc, NULL);
 #endif
@@ -2945,7 +2945,7 @@ siocnprobe(struct consdev *cp)
                        }
                }
        }
-#ifdef __i386__
+#if defined(__i386__) || defined(__amd64__)
 #if DDB > 0
        /*
         * XXX Ugly Compatability.
index 6e03fa1..0bf2f4f 100644 (file)
@@ -1,6 +1,12 @@
-# $DragonFly: src/sys/emulation/Makefile,v 1.3 2006/05/20 18:26:35 dillon Exp $
+# $DragonFly: src/sys/emulation/Makefile,v 1.4 2008/07/23 16:39:34 dillon Exp $
 #
 
+.if ${MACHINE_ARCH} == i386
 SUBDIR=linux ndis
+.elif ${MACHINE_ARCH} == amd64
+SUBDIR=
+.else
+.error Unknown MACHINE_ARCH.
+.endif
 
 .include <bsd.subdir.mk>
index d9e581f..c0c1602 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/kern/kern_environment.c,v 1.10.2.7 2002/05/07 09:57:16 bde Exp $
- * $DragonFly: src/sys/kern/kern_environment.c,v 1.6 2007/04/30 07:18:53 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_environment.c,v 1.7 2008/07/23 16:39:28 dillon Exp $
  */
 
 /*
@@ -280,6 +280,21 @@ kgetenv_int(const char *name, int *data)
        return (rval);
 }
 
+/*
+ * Return an unsigned long value from an environment variable.
+ */
+int
+kgetenv_ulong(const char *name, unsigned long *data)
+{
+       quad_t tmp;
+       int rval;
+
+       rval = kgetenv_quad(name, &tmp);
+       if (rval)
+               *data = (unsigned long) tmp;
+       return (rval);
+}
+
 /*
  * Return a quad_t value from an environment variable.
  */
index 7e5e424..d407cc5 100644 (file)
@@ -39,7 +39,7 @@
  *     from: Utah $Hdr: mem.c 1.13 89/10/08$
  *     from: @(#)mem.c 7.2 (Berkeley) 5/9/91
  * $FreeBSD: src/sys/i386/i386/mem.c,v 1.79.2.9 2003/01/04 22:58:01 njl Exp $
- * $DragonFly: src/sys/kern/kern_memio.c,v 1.31 2008/01/05 14:02:38 swildner Exp $
+ * $DragonFly: src/sys/kern/kern_memio.c,v 1.32 2008/07/23 16:39:28 dillon Exp $
  */
 
 /*
@@ -338,13 +338,21 @@ memmmap(struct dev_mmap_args *ap)
                /* 
                 * minor device 0 is physical memory 
                 */
+#if defined(__i386__)
                ap->a_result = i386_btop(ap->a_offset);
+#elif defined(__amd64__)
+               ap->a_result = amd64_btop(ap->a_offset);
+#endif
                return 0;
        case 1:
                /*
                 * minor device 1 is kernel memory 
                 */
+#if defined(__i386__)
                ap->a_result = i386_btop(vtophys(ap->a_offset));
+#elif defined(__amd64__)
+               ap->a_result = amd64_btop(vtophys(ap->a_offset));
+#endif
                return 0;
 
        default:
index 0397b2c..521df6e 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/sys/elf64.h,v 1.9 1999/08/28 00:51:42 peter Exp $
- * $DragonFly: src/sys/sys/elf64.h,v 1.7 2007/12/12 23:29:20 dillon Exp $
+ * $DragonFly: src/sys/sys/elf64.h,v 1.8 2008/07/23 16:39:29 dillon Exp $
  */
 
 #ifndef _SYS_ELF64_H_
@@ -59,19 +59,19 @@ typedef Elf64_Half      Elf64_Hashelt;
 
 typedef struct {
        unsigned char   e_ident[EI_NIDENT];     /* File identification. */
-       Elf64_Quarter   e_type;         /* File type. */
-       Elf64_Quarter   e_machine;      /* Machine architecture. */
-       Elf64_Half      e_version;      /* ELF format version. */
+       Elf64_Half      e_type;         /* File type. */
+       Elf64_Half      e_machine;      /* Machine architecture. */
+       Elf64_Word      e_version;      /* ELF format version. */
        Elf64_Addr      e_entry;        /* Entry point. */
        Elf64_Off       e_phoff;        /* Program header file offset. */
        Elf64_Off       e_shoff;        /* Section header file offset. */
-       Elf64_Half      e_flags;        /* Architecture-specific flags. */
-       Elf64_Quarter   e_ehsize;       /* Size of ELF header in bytes. */
-       Elf64_Quarter   e_phentsize;    /* Size of program header entry. */
-       Elf64_Quarter   e_phnum;        /* Number of program header entries. */
-       Elf64_Quarter   e_shentsize;    /* Size of section header entry. */
-       Elf64_Quarter   e_shnum;        /* Number of section header entries. */
-       Elf64_Quarter   e_shstrndx;     /* Section name strings section. */
+       Elf64_Word      e_flags;        /* Architecture-specific flags. */
+       Elf64_Half      e_ehsize;       /* Size of ELF header in bytes. */
+       Elf64_Half      e_phentsize;    /* Size of program header entry. */
+       Elf64_Half      e_phnum;        /* Number of program header entries. */
+       Elf64_Half      e_shentsize;    /* Size of section header entry. */
+       Elf64_Half      e_shnum;        /* Number of section header entries. */
+       Elf64_Half      e_shstrndx;     /* Section name strings section. */
 } Elf64_Ehdr;
 
 /*
@@ -79,17 +79,17 @@ typedef struct {
  */
 
 typedef struct {
-       Elf64_Half      sh_name;        /* Section name (index into the
+       Elf64_Word      sh_name;        /* Section name (index into the
                                           section header string table). */
-       Elf64_Half      sh_type;        /* Section type. */
-       Elf64_Size      sh_flags;       /* Section flags. */
+       Elf64_Word      sh_type;        /* Section type. */
+       Elf64_Xword     sh_flags;       /* Section flags. */
        Elf64_Addr      sh_addr;        /* Address in memory image. */
        Elf64_Off       sh_offset;      /* Offset in file. */
-       Elf64_Size      sh_size;        /* Size in bytes. */
-       Elf64_Half      sh_link;        /* Index of a related section. */
-       Elf64_Half      sh_info;        /* Depends on section type. */
-       Elf64_Size      sh_addralign;   /* Alignment in bytes. */
-       Elf64_Size      sh_entsize;     /* Size of each entry in section. */
+       Elf64_Xword     sh_size;        /* Size in bytes. */
+       Elf64_Word      sh_link;        /* Index of a related section. */
+       Elf64_Word      sh_info;        /* Depends on section type. */
+       Elf64_Xword     sh_addralign;   /* Alignment in bytes. */
+       Elf64_Xword     sh_entsize;     /* Size of each entry in section. */
 } Elf64_Shdr;
 
 /*
@@ -97,14 +97,14 @@ typedef struct {
  */
 
 typedef struct {
-       Elf64_Half      p_type;         /* Entry type. */
-       Elf64_Half      p_flags;        /* Access permission flags. */
+       Elf64_Word      p_type;         /* Entry type. */
+       Elf64_Word      p_flags;        /* Access permission flags. */
        Elf64_Off       p_offset;       /* File offset of contents. */
        Elf64_Addr      p_vaddr;        /* Virtual address in memory image. */
        Elf64_Addr      p_paddr;        /* Physical address (not used). */
-       Elf64_Size      p_filesz;       /* Size of contents in file. */
-       Elf64_Size      p_memsz;        /* Size of contents in memory. */
-       Elf64_Size      p_align;        /* Alignment in memory and file. */
+       Elf64_Xword     p_filesz;       /* Size of contents in file. */
+       Elf64_Xword     p_memsz;        /* Size of contents in memory. */
+       Elf64_Xword     p_align;        /* Alignment in memory and file. */
 } Elf64_Phdr;
 
 /*
@@ -126,14 +126,14 @@ typedef struct {
 /* Relocations that don't need an addend field. */
 typedef struct {
        Elf64_Addr      r_offset;       /* Location to be relocated. */
-       Elf64_Size      r_info;         /* Relocation type and symbol index. */
+       Elf64_Xword     r_info;         /* Relocation type and symbol index. */
 } Elf64_Rel;
 
 /* Relocations that need an addend field. */
 typedef struct {
        Elf64_Addr      r_offset;       /* Location to be relocated. */
-       Elf64_Size      r_info;         /* Relocation type and symbol index. */
-       Elf64_Off       r_addend;       /* Addend. */
+       Elf64_Xword     r_info;         /* Relocation type and symbol index. */
+       Elf64_Sxword    r_addend;       /* Addend. */
 } Elf64_Rela;
 
 /* Macros for accessing the fields of r_info. */
@@ -148,12 +148,12 @@ typedef struct {
  */
 
 typedef struct {
-       Elf64_Half      st_name;        /* String table index of name. */
+       Elf64_Word      st_name;        /* String table index of name. */
        unsigned char   st_info;        /* Type and binding information. */
        unsigned char   st_other;       /* Reserved (not used). */
-       Elf64_Quarter   st_shndx;       /* Section index of symbol. */
+       Elf64_Half      st_shndx;       /* Section index of symbol. */
        Elf64_Addr      st_value;       /* Symbol value. */
-       Elf64_Size      st_size;        /* Size of associated object. */
+       Elf64_Xword     st_size;        /* Size of associated object. */
 } Elf64_Sym;
 
 /* Macros for accessing the fields of st_info. */