From: Matthew Dillon Date: Wed, 23 Jul 2008 16:39:34 +0000 (+0000) Subject: Synchronize some of the machine-independant AMD64 bits. X-Git-Tag: v2.1.1~832 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/8d565796866261975deaf4073eca953f924f634b Synchronize some of the machine-independant AMD64 bits. Obtained-from: Jordan Gordeev --- diff --git a/lib/libthread_xu/arch/amd64/include/pthread_md.h b/lib/libthread_xu/arch/amd64/include/pthread_md.h index 5d5877fd18..22128afb2e 100644 --- a/lib/libthread_xu/arch/amd64/include/pthread_md.h +++ b/lib/libthread_xu/arch/amd64/include/pthread_md.h @@ -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. */ diff --git a/sys/conf/bsd.kern.mk b/sys/conf/bsd.kern.mk index 477bf065ed..1f493ac913 100644 --- a/sys/conf/bsd.kern.mk +++ b/sys/conf/bsd.kern.mk @@ -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: diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk index 7bb8af94d3..65d9c569b8 100644 --- a/sys/conf/kmod.mk +++ b/sys/conf/kmod.mk @@ -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 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 diff --git a/sys/ddb/db_kld.c b/sys/ddb/db_kld.c index f48d1451bb..b11861633a 100644 --- a/sys/ddb/db_kld.c +++ b/sys/ddb/db_kld.c @@ -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 */ @@ -43,6 +43,10 @@ #include #include +#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) { diff --git a/sys/dev/serial/sio/sio.c b/sys/dev/serial/sio/sio.c index 0ae6325fba..4ed61ec6dc 100644 --- a/sys/dev/serial/sio/sio.c +++ b/sys/dev/serial/sio/sio.c @@ -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. diff --git a/sys/emulation/Makefile b/sys/emulation/Makefile index 6e03fa1bef..0bf2f4f651 100644 --- a/sys/emulation/Makefile +++ b/sys/emulation/Makefile @@ -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 diff --git a/sys/kern/kern_environment.c b/sys/kern/kern_environment.c index d9e581f7ce..c0c1602af4 100644 --- a/sys/kern/kern_environment.c +++ b/sys/kern/kern_environment.c @@ -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. */ diff --git a/sys/kern/kern_memio.c b/sys/kern/kern_memio.c index 7e5e424843..d407cc521d 100644 --- a/sys/kern/kern_memio.c +++ b/sys/kern/kern_memio.c @@ -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: diff --git a/sys/sys/elf64.h b/sys/sys/elf64.h index 0397b2c18c..521df6e330 100644 --- a/sys/sys/elf64.h +++ b/sys/sys/elf64.h @@ -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. */