64 bit address space cleanups which are a prerequisit for future 64 bit
authorMatthew Dillon <dillon@dragonflybsd.org>
Mon, 3 Nov 2003 17:11:23 +0000 (17:11 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Mon, 3 Nov 2003 17:11:23 +0000 (17:11 +0000)
address space work and PAE.  Note: this is not PAE.  This patch basically
adds vm_paddr_t, which represents a 'physical address'.  Physical addresses
may be larger then virtual addresses and on IA32 we make vm_paddr_t a 64
bit quantity.

Submitted-by: Hiten Pandya <hmp@backplane.com>
34 files changed:
sys/bus/isa/i386/isa_dma.c
sys/cpu/i386/include/bus_at386.h
sys/cpu/i386/include/param.h
sys/cpu/i386/include/pmap.h
sys/cpu/i386/include/types.h
sys/i386/i386/busdma_machdep.c
sys/i386/i386/machdep.c
sys/i386/i386/pmap.c
sys/i386/i386/vm_machdep.c
sys/i386/include/bus_at386.h
sys/i386/include/md_var.h
sys/i386/include/param.h
sys/i386/include/pmap.h
sys/i386/include/types.h
sys/i386/include/vmparam.h
sys/kern/sys_pipe.c
sys/kern/vfs_bio.c
sys/kern/vfs_subr.c
sys/platform/pc32/i386/busdma_machdep.c
sys/platform/pc32/i386/machdep.c
sys/platform/pc32/i386/pmap.c
sys/platform/pc32/i386/vm_machdep.c
sys/platform/pc32/include/md_var.h
sys/platform/pc32/include/vmparam.h
sys/sys/malloc.h
sys/vm/device_pager.c
sys/vm/pmap.h
sys/vm/vm_contig.c
sys/vm/vm_extern.h
sys/vm/vm_fault.c
sys/vm/vm_kern.h
sys/vm/vm_object.c
sys/vm/vm_page.c
sys/vm/vm_page.h

index a3d12fd..d24618f 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     from: @(#)isa.c 7.2 (Berkeley) 5/13/91
  * $FreeBSD: src/sys/i386/isa/isa_dma.c,v 1.4.2.1 2000/08/08 19:49:53 peter Exp $
- * $DragonFly: src/sys/bus/isa/i386/isa_dma.c,v 1.5 2003/08/27 11:42:34 rob Exp $
+ * $DragonFly: src/sys/bus/isa/i386/isa_dma.c,v 1.6 2003/11/03 17:11:10 dillon Exp $
  */
 
 /*
@@ -208,7 +208,7 @@ isa_dmacascade(chan)
 void
 isa_dmastart(int flags, caddr_t addr, u_int nbytes, int chan)
 {
-       vm_offset_t phys;
+       vm_paddr_t phys;
        int waport;
        caddr_t newaddr;
 
@@ -366,7 +366,8 @@ isa_dmadone(int flags, caddr_t addr, int nbytes, int chan)
 static int
 isa_dmarangecheck(caddr_t va, u_int length, int chan)
 {
-       vm_offset_t phys, priorpage = 0, endva;
+       vm_paddr_t phys, priorpage = 0;
+       vm_offset_t endva;
        u_int dma_pgmsk = (chan & 4) ?  ~(128*1024-1) : ~(64*1024-1);
 
        endva = (vm_offset_t)round_page((vm_offset_t)va + length);
index d9f0969..40431b9 100644 (file)
@@ -68,7 +68,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 /* $FreeBSD: src/sys/i386/include/bus_at386.h,v 1.8.2.3 2002/03/03 05:42:50 nyan Exp $ */
-/* $DragonFly: src/sys/cpu/i386/include/bus_at386.h,v 1.5 2003/08/07 21:17:22 dillon Exp $ */
+/* $DragonFly: src/sys/cpu/i386/include/bus_at386.h,v 1.6 2003/11/03 17:11:19 dillon Exp $ */
 
 #ifndef _I386_BUS_AT386_H_
 #define _I386_BUS_AT386_H_
 /*
  * Bus address and size types
  */
-typedef u_int bus_addr_t;
-typedef u_int bus_size_t;
+typedef u_int32_t bus_addr_t;
+typedef u_int32_t bus_size_t;
 
 #define BUS_SPACE_MAXSIZE_24BIT        0xFFFFFF
 #define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFF
 #define BUS_SPACE_MAXSIZE      (64 * 1024) /* Maximum supported size */
 #define BUS_SPACE_MAXADDR_24BIT        0xFFFFFF
 #define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFF
-#define BUS_SPACE_MAXADDR      0xFFFFFFFF
+#define BUS_SPACE_MAXADDR      BUS_SPACE_MAXADDR_32BIT
 
 #define BUS_SPACE_UNRESTRICTED (~0)
 
@@ -829,7 +829,7 @@ static __inline void
 bus_space_set_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh,
                      bus_size_t offset, u_int8_t value, size_t count)
 {
-       bus_addr_t addr = bsh + offset;
+       bus_space_handle_t addr = bsh + offset;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -851,7 +851,7 @@ static __inline void
 bus_space_set_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh,
                     bus_size_t offset, u_int16_t value, size_t count)
 {
-       bus_addr_t addr = bsh + offset;
+       bus_space_handle_t addr = bsh + offset;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -873,7 +873,7 @@ static __inline void
 bus_space_set_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh,
                      bus_size_t offset, u_int32_t value, size_t count)
 {
-       bus_addr_t addr = bsh + offset;
+       bus_space_handle_t addr = bsh + offset;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -917,7 +917,7 @@ static __inline void
 bus_space_set_region_1(bus_space_tag_t tag, bus_space_handle_t bsh,
                       bus_size_t offset, u_int8_t value, size_t count)
 {
-       bus_addr_t addr = bsh + offset;
+       bus_space_handle_t addr = bsh + offset;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -939,7 +939,7 @@ static __inline void
 bus_space_set_region_2(bus_space_tag_t tag, bus_space_handle_t bsh,
                       bus_size_t offset, u_int16_t value, size_t count)
 {
-       bus_addr_t addr = bsh + offset;
+       bus_space_handle_t addr = bsh + offset;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -961,7 +961,7 @@ static __inline void
 bus_space_set_region_4(bus_space_tag_t tag, bus_space_handle_t bsh,
                       bus_size_t offset, u_int32_t value, size_t count)
 {
-       bus_addr_t addr = bsh + offset;
+       bus_space_handle_t addr = bsh + offset;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -1011,8 +1011,8 @@ bus_space_copy_region_1(bus_space_tag_t tag, bus_space_handle_t bsh1,
                        bus_size_t off1, bus_space_handle_t bsh2,
                        bus_size_t off2, size_t count)
 {
-       bus_addr_t addr1 = bsh1 + off1;
-       bus_addr_t addr2 = bsh2 + off2;
+       bus_space_handle_t addr1 = bsh1 + off1;
+       bus_space_handle_t addr2 = bsh2 + off2;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -1057,8 +1057,8 @@ bus_space_copy_region_2(bus_space_tag_t tag, bus_space_handle_t bsh1,
                        bus_size_t off1, bus_space_handle_t bsh2,
                        bus_size_t off2, size_t count)
 {
-       bus_addr_t addr1 = bsh1 + off1;
-       bus_addr_t addr2 = bsh2 + off2;
+       bus_space_handle_t addr1 = bsh1 + off1;
+       bus_space_handle_t addr2 = bsh2 + off2;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -1103,8 +1103,8 @@ bus_space_copy_region_4(bus_space_tag_t tag, bus_space_handle_t bsh1,
                        bus_size_t off1, bus_space_handle_t bsh2,
                        bus_size_t off2, size_t count)
 {
-       bus_addr_t addr1 = bsh1 + off1;
-       bus_addr_t addr2 = bsh2 + off2;
+       bus_space_handle_t addr1 = bsh1 + off1;
+       bus_space_handle_t addr2 = bsh2 + off2;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
index 9a61c6c..16acadf 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     from: @(#)param.h       5.8 (Berkeley) 6/28/91
  * $FreeBSD: src/sys/i386/include/param.h,v 1.54.2.8 2002/08/31 21:15:55 dillon Exp $
- * $DragonFly: src/sys/cpu/i386/include/param.h,v 1.5 2003/10/19 00:13:18 dillon Exp $
+ * $DragonFly: src/sys/cpu/i386/include/param.h,v 1.6 2003/11/03 17:11:19 dillon Exp $
  */
 
 #ifndef _MACHINE_PARAM_H_
  */
 #define trunc_page(x)          ((x) & ~PAGE_MASK)
 #define round_page(x)          (((x) + PAGE_MASK) & ~PAGE_MASK)
-#define trunc_4mpage(x)                ((unsigned)(x) & ~PDRMASK)
-#define round_4mpage(x)                ((((unsigned)(x)) + PDRMASK) & ~PDRMASK)
+#define trunc_4mpage(x)                ((x) & ~PDRMASK)
+#define round_4mpage(x)                ((((x)) + PDRMASK) & ~PDRMASK)
 
-#define atop(x)                        ((unsigned)(x) >> PAGE_SHIFT)
-#define ptoa(x)                        ((unsigned)(x) << PAGE_SHIFT)
+#define atop(x)                        ((x) >> PAGE_SHIFT)
+#define ptoa(x)                        ((x) << PAGE_SHIFT)
 
-#define i386_btop(x)           ((unsigned)(x) >> PAGE_SHIFT)
-#define i386_ptob(x)           ((unsigned)(x) << PAGE_SHIFT)
+#define i386_btop(x)           ((x) >> PAGE_SHIFT)
+#define i386_ptob(x)           ((x) << PAGE_SHIFT)
 
 #define        pgtok(x)                ((x) * (PAGE_SIZE / 1024))
 
index 39d3444..9ed3d27 100644 (file)
@@ -43,7 +43,7 @@
  *     from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90
  *     from: @(#)pmap.h        7.4 (Berkeley) 5/12/91
  * $FreeBSD: src/sys/i386/include/pmap.h,v 1.65.2.3 2001/10/03 07:15:37 peter Exp $
- * $DragonFly: src/sys/cpu/i386/include/pmap.h,v 1.4 2003/08/26 21:42:18 rob Exp $
+ * $DragonFly: src/sys/cpu/i386/include/pmap.h,v 1.5 2003/11/03 17:11:19 dillon Exp $
  */
 
 #ifndef _MACHINE_PMAP_H_
@@ -71,7 +71,7 @@
 /* Our various interpretations of the above */
 #define PG_W           PG_AVAIL1       /* "Wired" pseudoflag */
 #define        PG_MANAGED      PG_AVAIL2
-#define        PG_FRAME        (~PAGE_MASK)
+#define        PG_FRAME        (~((vm_paddr_t)PAGE_MASK))
 #define        PG_PROT         (PG_RW|PG_U)    /* all protection bits . */
 #define PG_N           (PG_NC_PWT|PG_NC_PCD)   /* Non-cacheable */
 
@@ -163,10 +163,11 @@ extern pd_entry_t IdlePTD;        /* physical address of "Idle" state directory */
  *             Extract the physical page address associated
  *             kernel virtual address.
  */
-static __inline vm_offset_t
+static __inline vm_paddr_t
 pmap_kextract(vm_offset_t va)
 {
-       vm_offset_t pa;
+       vm_paddr_t pa;
+
        if ((pa = (vm_offset_t) PTD[va >> PDRSHIFT]) & PG_PS) {
                pa = (pa & ~(NBPDR - 1)) | (va & (NBPDR - 1));
        } else {
@@ -243,18 +244,18 @@ extern struct ppro_vmtrr PPro_vmtrr[NPPROVMTRR];
 
 extern caddr_t CADDR1;
 extern pt_entry_t *CMAP1;
-extern vm_offset_t avail_end;
-extern vm_offset_t avail_start;
+extern vm_paddr_t avail_end;
+extern vm_paddr_t avail_start;
 extern vm_offset_t clean_eva;
 extern vm_offset_t clean_sva;
-extern vm_offset_t phys_avail[];
+extern vm_paddr_t phys_avail[];
 extern char *ptvmmap;          /* poor name! */
 extern vm_offset_t virtual_avail;
 extern vm_offset_t virtual_end;
 
-void   pmap_bootstrap ( vm_offset_t, vm_offset_t);
+void   pmap_bootstrap ( vm_paddr_t, vm_paddr_t);
 pmap_t pmap_kernel (void);
-void   *pmap_mapdev (vm_offset_t, vm_size_t);
+void   *pmap_mapdev (vm_paddr_t, vm_size_t);
 void   pmap_unmapdev (vm_offset_t, vm_size_t);
 unsigned *pmap_pte (pmap_t, vm_offset_t) __pure2;
 vm_page_t pmap_use_pt (pmap_t, vm_offset_t);
index 7eb0ac5..4b504a4 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)types.h     8.3 (Berkeley) 1/5/94
  * $FreeBSD: src/sys/i386/include/types.h,v 1.19.2.1 2001/03/21 10:50:58 peter Exp $
- * $DragonFly: src/sys/cpu/i386/include/types.h,v 1.5 2003/08/27 01:43:07 dillon Exp $
+ * $DragonFly: src/sys/cpu/i386/include/types.h,v 1.6 2003/11/03 17:11:19 dillon Exp $
  */
 
 #ifndef _MACHINE_TYPES_H_
@@ -68,5 +68,7 @@ typedef unsigned int *pt_entry_t;
 
 /* Interrupt mask (spl, xxx_imask, etc) */
 typedef __uint32_t             intrmask_t;
+typedef __int64_t              intmax_t;
+typedef __uint64_t             uintmax_t;
 
 #endif /* !_MACHINE_TYPES_H_ */
index b8cbfd1..ab1e7c2 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/i386/busdma_machdep.c,v 1.16.2.2 2003/01/23 00:55:27 scottl Exp $
- * $DragonFly: src/sys/i386/i386/Attic/busdma_machdep.c,v 1.4 2003/07/27 01:49:51 hmp Exp $
+ * $DragonFly: src/sys/i386/i386/Attic/busdma_machdep.c,v 1.5 2003/11/03 17:11:18 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -97,7 +97,7 @@ static struct bus_dmamap nobounce_dmamap;
 
 static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages);
 static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map);
-static vm_offset_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map,
+static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map,
                                   vm_offset_t vaddr, bus_size_t size);
 static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage);
 static __inline int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr);
@@ -144,8 +144,8 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment,
        newtag->parent = parent;
        newtag->alignment = alignment;
        newtag->boundary = boundary;
-       newtag->lowaddr = trunc_page((vm_offset_t)lowaddr) + (PAGE_SIZE - 1);
-       newtag->highaddr = trunc_page((vm_offset_t)highaddr) + (PAGE_SIZE - 1);
+       newtag->lowaddr = trunc_page((vm_paddr_t)lowaddr) + (PAGE_SIZE - 1);
+       newtag->highaddr = trunc_page((vm_paddr_t)highaddr) + (PAGE_SIZE - 1);
        newtag->filter = filter;
        newtag->filterarg = filterarg;
        newtag->maxsize = maxsize;
@@ -178,7 +178,8 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment,
                }
        }
        
-       if (newtag->lowaddr < ptoa(Maxmem) && (flags & BUS_DMA_ALLOCNOW) != 0) {
+       if (newtag->lowaddr < ptoa(Maxmem) &&
+           (flags & BUS_DMA_ALLOCNOW) != 0) {
                /* Must bounce */
 
                if (lowaddr > bounce_lowaddr) {
@@ -328,7 +329,8 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
        /* If we succeed, no mapping/bouncing will be required */
        *mapp = NULL;
 
-       if ((dmat->maxsize <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem)) {
+       if ((dmat->maxsize <= PAGE_SIZE) &&
+           dmat->lowaddr >= ptoa(Maxmem)) {
                *vaddr = malloc(dmat->maxsize, M_DEVBUF,
                                (flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK);
        } else {
@@ -360,7 +362,8 @@ bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
         */
        if (map != NULL)
                panic("bus_dmamem_free: Invalid map freed\n");
-       if ((dmat->maxsize <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem))
+       if ((dmat->maxsize <= PAGE_SIZE) &&
+           dmat->lowaddr >= ptoa(Maxmem))
                free(vaddr, M_DEVBUF);
        else
                contigfree(vaddr, dmat->maxsize, M_DEVBUF);
@@ -377,7 +380,7 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
                void *callback_arg, int flags)
 {
        vm_offset_t             vaddr;
-       vm_offset_t             paddr;
+       vm_paddr_t              paddr;
 #ifdef __GNUC__
        bus_dma_segment_t       dm_segments[dmat->nsegments];
 #else
@@ -386,7 +389,7 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
        bus_dma_segment_t      *sg;
        int                     seg;
        int                     error;
-       vm_offset_t             nextpaddr;
+       vm_paddr_t              nextpaddr;
 
        if (map == NULL)
                map = &nobounce_dmamap;
@@ -396,7 +399,8 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
         * If we are being called during a callback, pagesneeded will
         * be non-zero, so we can avoid doing the work twice.
         */
-       if (dmat->lowaddr < ptoa(Maxmem) && map->pagesneeded == 0) {
+       if (dmat->lowaddr < ptoa(Maxmem) &&
+           map->pagesneeded == 0) {
                vm_offset_t     vendaddr;
 
                /*
@@ -799,7 +803,7 @@ reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map)
        return (pages);
 }
 
-static vm_offset_t
+static bus_addr_t
 add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr,
                bus_size_t size)
 {
index 29921bf..704ffa6 100644 (file)
@@ -36,7 +36,7 @@
  *
  *     from: @(#)machdep.c     7.4 (Berkeley) 6/3/91
  * $FreeBSD: src/sys/i386/i386/machdep.c,v 1.385.2.30 2003/05/31 08:48:05 alc Exp $
- * $DragonFly: src/sys/i386/i386/Attic/machdep.c,v 1.40 2003/10/25 17:36:22 dillon Exp $
+ * $DragonFly: src/sys/i386/i386/Attic/machdep.c,v 1.41 2003/11/03 17:11:18 dillon Exp $
  */
 
 #include "use_apm.h"
@@ -237,10 +237,11 @@ SYSCTL_PROC(_machdep, OID_AUTO, msgbuf_clear, CTLTYPE_INT|CTLFLAG_RW,
        &msgbuf_clear, 0, sysctl_machdep_msgbuf_clear, "I",
        "Clear kernel message buffer");
 
-int bootverbose = 0, Maxmem = 0;
+int bootverbose = 0;
+vm_paddr_t Maxmem = 0;
 long dumplo;
 
-vm_offset_t phys_avail[10];
+vm_paddr_t phys_avail[10];
 
 /* must be 2 less so 0 0 can signal end of chunks */
 #define PHYS_AVAIL_ARRAY_END ((sizeof(phys_avail) / sizeof(vm_offset_t)) - 2)
@@ -274,7 +275,7 @@ cpu_startup(dummy)
 #ifdef PERFMON
        perfmon_init();
 #endif
-       printf("real memory  = %u (%uK bytes)\n", ptoa(Maxmem), ptoa(Maxmem) / 1024);
+       printf("real memory  = %llu (%lluK bytes)\n", ptoa(Maxmem), ptoa(Maxmem) / 1024);
        /*
         * Display any holes after the first chunk of extended memory.
         */
@@ -283,9 +284,9 @@ cpu_startup(dummy)
 
                printf("Physical memory chunk(s):\n");
                for (indx = 0; phys_avail[indx + 1] != 0; indx += 2) {
-                       unsigned int size1 = phys_avail[indx + 1] - phys_avail[indx];
+                       vm_paddr_t size1 = phys_avail[indx + 1] - phys_avail[indx];
 
-                       printf("0x%08x - 0x%08x, %u bytes (%u pages)\n",
+                       printf("0x%08llx - 0x%08llx, %llu bytes (%llu pages)\n",
                            phys_avail[indx], phys_avail[indx + 1] - 1, size1,
                            size1 / PAGE_SIZE);
                }
@@ -1460,7 +1461,7 @@ physmap_done:
 
        if (atop(physmap[physmap_idx + 1]) != Maxmem &&
            (boothowto & RB_VERBOSE))
-               printf("Physical memory use set to %uK\n", Maxmem * 4);
+               printf("Physical memory use set to %lluK\n", Maxmem * 4);
 
        /*
         * If Maxmem has been increased beyond what the system has detected,
index 5ba5065..f15ae8c 100644 (file)
@@ -40,7 +40,7 @@
  *
  *     from:   @(#)pmap.c      7.7 (Berkeley)  5/12/91
  * $FreeBSD: src/sys/i386/i386/pmap.c,v 1.250.2.18 2002/03/06 22:48:53 silby Exp $
- * $DragonFly: src/sys/i386/i386/Attic/pmap.c,v 1.22 2003/09/02 20:11:34 dillon Exp $
+ * $DragonFly: src/sys/i386/i386/Attic/pmap.c,v 1.23 2003/11/03 17:11:18 dillon Exp $
  */
 
 /*
@@ -149,8 +149,8 @@ static int protection_codes[8];
 static struct pmap kernel_pmap_store;
 pmap_t kernel_pmap;
 
-vm_offset_t avail_start;       /* PA of first available physical page */
-vm_offset_t avail_end;         /* PA of last available physical page */
+vm_paddr_t avail_start;        /* PA of first available physical page */
+vm_paddr_t avail_end;          /* PA of last available physical page */
 vm_offset_t virtual_avail;     /* VA of first avail page (after kernel bss) */
 vm_offset_t virtual_end;       /* VA of last avail page (end of kernel AS) */
 static boolean_t pmap_initialized = FALSE;     /* Has pmap_init completed? */
@@ -307,8 +307,8 @@ pmap_pte_quick(pmap_t pmap, vm_offset_t va)
  */
 void
 pmap_bootstrap(firstaddr, loadaddr)
-       vm_offset_t firstaddr;
-       vm_offset_t loadaddr;
+       vm_paddr_t firstaddr;
+       vm_paddr_t loadaddr;
 {
        vm_offset_t va;
        pt_entry_t *pte;
@@ -494,7 +494,7 @@ pmap_set_opt(void)
  */
 void
 pmap_init(phys_start, phys_end)
-       vm_offset_t phys_start, phys_end;
+       vm_paddr_t phys_start, phys_end;
 {
        int i;
        int initial_pvs;
@@ -666,7 +666,7 @@ get_ptbase(pmap_t pmap)
  *     This function may not be called from an interrupt if the pmap is
  *     not kernel_pmap.
  */
-vm_offset_t 
+vm_paddr_t 
 pmap_extract(pmap_t pmap, vm_offset_t va)
 {
        vm_offset_t rtval;
@@ -698,7 +698,7 @@ pmap_extract(pmap_t pmap, vm_offset_t va)
  * should do a invltlb after doing the pmap_kenter...
  */
 PMAP_INLINE void 
-pmap_kenter(vm_offset_t va, vm_offset_t pa)
+pmap_kenter(vm_offset_t va, vm_paddr_t pa)
 {
        unsigned *pte;
        unsigned npte, opte;
@@ -731,7 +731,7 @@ pmap_kremove(vm_offset_t va)
  *     specified memory.
  */
 vm_offset_t
-pmap_map(vm_offset_t virt, vm_offset_t start, vm_offset_t end, int prot)
+pmap_map(vm_offset_t virt, vm_paddr_t start, vm_paddr_t end, int prot)
 {
        while (start < end) {
                pmap_kenter(virt, start);
@@ -816,6 +816,7 @@ retry:
 
 /*
  * Create a new thread and optionally associate it with a (new) process.
+ * NOTE! the new thread's cpu may not equal the current cpu.
  */
 void
 pmap_init_thread(thread_t td)
@@ -1870,9 +1871,9 @@ void
 pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
           boolean_t wired)
 {
-       vm_offset_t pa;
+       vm_paddr_t pa;
        unsigned *pte;
-       vm_offset_t opa;
+       vm_paddr_t opa;
        vm_offset_t origpte, newpte;
        vm_page_t mpte;
 
@@ -1921,8 +1922,8 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
         * Page Directory table entry not valid, we need a new PT page
         */
        if (pte == NULL) {
-               panic("pmap_enter: invalid page directory, pdir=%p, va=0x%x\n",
-                       (void *)pmap->pm_pdir[PTDPTDI], va);
+               panic("pmap_enter: invalid page directory pdir=%x, va=0x%x\n",
+                    (unsigned) pmap->pm_pdir[PTDPTDI], va);
        }
 
        pa = VM_PAGE_TO_PHYS(m) & PG_FRAME;
@@ -2064,7 +2065,7 @@ static vm_page_t
 pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte)
 {
        unsigned *pte;
-       vm_offset_t pa;
+       vm_paddr_t pa;
 
        /*
         * In the case that a page table page is not
@@ -2156,7 +2157,7 @@ retry:
  * to be used for panic dumps.
  */
 void *
-pmap_kenter_temporary(vm_offset_t pa, int i)
+pmap_kenter_temporary(vm_paddr_t pa, int i)
 {
        pmap_kenter((vm_offset_t)crashdumpmap + (i * PAGE_SIZE), pa);
        return ((void *)crashdumpmap);
@@ -2582,7 +2583,7 @@ pmap_kernel(void)
  *     required.
  */
 void
-pmap_zero_page(vm_offset_t phys)
+pmap_zero_page(vm_paddr_t phys)
 {
        struct mdglobaldata *gd = mdcpu;
 
@@ -2612,7 +2613,7 @@ pmap_zero_page(vm_offset_t phys)
  *     off and size may not cover an area beyond a single hardware page.
  */
 void
-pmap_zero_page_area(vm_offset_t phys, int off, int size)
+pmap_zero_page_area(vm_paddr_t phys, int off, int size)
 {
        struct mdglobaldata *gd = mdcpu;
 
@@ -2640,7 +2641,7 @@ pmap_zero_page_area(vm_offset_t phys, int off, int size)
  *     is required.
  */
 void
-pmap_copy_page(vm_offset_t src, vm_offset_t dst)
+pmap_copy_page(vm_paddr_t src, vm_paddr_t dst)
 {
        struct mdglobaldata *gd = mdcpu;
 
@@ -2918,7 +2919,7 @@ pmap_page_protect(vm_page_t m, vm_prot_t prot)
        }
 }
 
-vm_offset_t
+vm_paddr_t
 pmap_phys_address(int ppn)
 {
        return (i386_ptob(ppn));
@@ -3056,7 +3057,7 @@ i386_protection_init(void)
  * a time.
  */
 void *
-pmap_mapdev(vm_offset_t pa, vm_size_t size)
+pmap_mapdev(vm_paddr_t pa, vm_size_t size)
 {
        vm_offset_t va, tmpva, offset;
        unsigned *pte;
@@ -3264,7 +3265,7 @@ pads(pmap_t pm)
 }
 
 void
-pmap_pvdump(vm_offset_t pa)
+pmap_pvdump(vm_paddr_t pa)
 {
        pv_entry_t pv;
        vm_page_t m;
index 2009473..191c5f3 100644 (file)
@@ -39,7 +39,7 @@
  *     from: @(#)vm_machdep.c  7.3 (Berkeley) 5/13/91
  *     Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$
  * $FreeBSD: src/sys/i386/i386/vm_machdep.c,v 1.132.2.9 2003/01/25 19:02:23 dillon Exp $
- * $DragonFly: src/sys/i386/i386/Attic/vm_machdep.c,v 1.24 2003/08/26 21:42:18 rob Exp $
+ * $DragonFly: src/sys/i386/i386/Attic/vm_machdep.c,v 1.25 2003/11/03 17:11:18 dillon Exp $
  */
 
 #include "use_npx.h"
@@ -383,15 +383,15 @@ setredzone(pte, vaddr)
 /*
  * Convert kernel VA to physical address
  */
-u_long
+vm_paddr_t
 kvtop(void *addr)
 {
-       vm_offset_t va;
+       vm_paddr_t pa;
 
-       va = pmap_kextract((vm_offset_t)addr);
-       if (va == 0)
+       pa = pmap_kextract((vm_offset_t)addr);
+       if (pa == 0)
                panic("kvtop: zero page frame");
-       return((int)va);
+       return (pa);
 }
 
 /*
index f52f2d9..d691e91 100644 (file)
@@ -68,7 +68,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 /* $FreeBSD: src/sys/i386/include/bus_at386.h,v 1.8.2.3 2002/03/03 05:42:50 nyan Exp $ */
-/* $DragonFly: src/sys/i386/include/Attic/bus_at386.h,v 1.5 2003/08/07 21:17:22 dillon Exp $ */
+/* $DragonFly: src/sys/i386/include/Attic/bus_at386.h,v 1.6 2003/11/03 17:11:19 dillon Exp $ */
 
 #ifndef _I386_BUS_AT386_H_
 #define _I386_BUS_AT386_H_
 /*
  * Bus address and size types
  */
-typedef u_int bus_addr_t;
-typedef u_int bus_size_t;
+typedef u_int32_t bus_addr_t;
+typedef u_int32_t bus_size_t;
 
 #define BUS_SPACE_MAXSIZE_24BIT        0xFFFFFF
 #define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFF
 #define BUS_SPACE_MAXSIZE      (64 * 1024) /* Maximum supported size */
 #define BUS_SPACE_MAXADDR_24BIT        0xFFFFFF
 #define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFF
-#define BUS_SPACE_MAXADDR      0xFFFFFFFF
+#define BUS_SPACE_MAXADDR      BUS_SPACE_MAXADDR_32BIT
 
 #define BUS_SPACE_UNRESTRICTED (~0)
 
@@ -829,7 +829,7 @@ static __inline void
 bus_space_set_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh,
                      bus_size_t offset, u_int8_t value, size_t count)
 {
-       bus_addr_t addr = bsh + offset;
+       bus_space_handle_t addr = bsh + offset;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -851,7 +851,7 @@ static __inline void
 bus_space_set_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh,
                     bus_size_t offset, u_int16_t value, size_t count)
 {
-       bus_addr_t addr = bsh + offset;
+       bus_space_handle_t addr = bsh + offset;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -873,7 +873,7 @@ static __inline void
 bus_space_set_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh,
                      bus_size_t offset, u_int32_t value, size_t count)
 {
-       bus_addr_t addr = bsh + offset;
+       bus_space_handle_t addr = bsh + offset;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -917,7 +917,7 @@ static __inline void
 bus_space_set_region_1(bus_space_tag_t tag, bus_space_handle_t bsh,
                       bus_size_t offset, u_int8_t value, size_t count)
 {
-       bus_addr_t addr = bsh + offset;
+       bus_space_handle_t addr = bsh + offset;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -939,7 +939,7 @@ static __inline void
 bus_space_set_region_2(bus_space_tag_t tag, bus_space_handle_t bsh,
                       bus_size_t offset, u_int16_t value, size_t count)
 {
-       bus_addr_t addr = bsh + offset;
+       bus_space_handle_t addr = bsh + offset;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -961,7 +961,7 @@ static __inline void
 bus_space_set_region_4(bus_space_tag_t tag, bus_space_handle_t bsh,
                       bus_size_t offset, u_int32_t value, size_t count)
 {
-       bus_addr_t addr = bsh + offset;
+       bus_space_handle_t addr = bsh + offset;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -1011,8 +1011,8 @@ bus_space_copy_region_1(bus_space_tag_t tag, bus_space_handle_t bsh1,
                        bus_size_t off1, bus_space_handle_t bsh2,
                        bus_size_t off2, size_t count)
 {
-       bus_addr_t addr1 = bsh1 + off1;
-       bus_addr_t addr2 = bsh2 + off2;
+       bus_space_handle_t addr1 = bsh1 + off1;
+       bus_space_handle_t addr2 = bsh2 + off2;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -1057,8 +1057,8 @@ bus_space_copy_region_2(bus_space_tag_t tag, bus_space_handle_t bsh1,
                        bus_size_t off1, bus_space_handle_t bsh2,
                        bus_size_t off2, size_t count)
 {
-       bus_addr_t addr1 = bsh1 + off1;
-       bus_addr_t addr2 = bsh2 + off2;
+       bus_space_handle_t addr1 = bsh1 + off1;
+       bus_space_handle_t addr2 = bsh2 + off2;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
@@ -1103,8 +1103,8 @@ bus_space_copy_region_4(bus_space_tag_t tag, bus_space_handle_t bsh1,
                        bus_size_t off1, bus_space_handle_t bsh2,
                        bus_size_t off2, size_t count)
 {
-       bus_addr_t addr1 = bsh1 + off1;
-       bus_addr_t addr2 = bsh2 + off2;
+       bus_space_handle_t addr1 = bsh1 + off1;
+       bus_space_handle_t addr2 = bsh2 + off2;
 
 #if defined(_I386_BUS_PIO_H_)
 #if defined(_I386_BUS_MEMIO_H_)
index 9ab2c93..8e8ab43 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/include/md_var.h,v 1.35.2.4 2003/01/22 20:14:53 jhb Exp $
- * $DragonFly: src/sys/i386/include/Attic/md_var.h,v 1.11 2003/10/24 14:10:45 daver Exp $
+ * $DragonFly: src/sys/i386/include/Attic/md_var.h,v 1.12 2003/11/03 17:11:19 dillon Exp $
  */
 
 #ifndef _MACHINE_MD_VAR_H_
@@ -37,7 +37,7 @@
  * Miscellaneous machine-dependent declarations.
  */
 
-extern int     Maxmem;
+extern vm_paddr_t      Maxmem;
 extern u_int   atdevbase;      /* offset in virtual memory of ISA io mem */
 extern void    (*bcopy_vector) (const void *from, void *to, size_t len);
 extern int     busdma_swi_pending;
@@ -106,7 +106,7 @@ int i586_copyout (const void *kaddr, void *udaddr, size_t len);
 void   i686_pagezero (void *addr);
 void   init_AMD_Elan_sc520(void);
 int    is_physical_memory (vm_offset_t addr);
-u_long kvtop (void *addr);
+vm_paddr_t kvtop (void *addr);
 void   setidt (int idx, alias_for_inthand_t *func, int typ, int dpl,
                    int selec);
 void   userconfig (void);
index 2c03773..e9fe0d7 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     from: @(#)param.h       5.8 (Berkeley) 6/28/91
  * $FreeBSD: src/sys/i386/include/param.h,v 1.54.2.8 2002/08/31 21:15:55 dillon Exp $
- * $DragonFly: src/sys/i386/include/Attic/param.h,v 1.5 2003/10/19 00:13:18 dillon Exp $
+ * $DragonFly: src/sys/i386/include/Attic/param.h,v 1.6 2003/11/03 17:11:19 dillon Exp $
  */
 
 #ifndef _MACHINE_PARAM_H_
  */
 #define trunc_page(x)          ((x) & ~PAGE_MASK)
 #define round_page(x)          (((x) + PAGE_MASK) & ~PAGE_MASK)
-#define trunc_4mpage(x)                ((unsigned)(x) & ~PDRMASK)
-#define round_4mpage(x)                ((((unsigned)(x)) + PDRMASK) & ~PDRMASK)
+#define trunc_4mpage(x)                ((x) & ~PDRMASK)
+#define round_4mpage(x)                ((((x)) + PDRMASK) & ~PDRMASK)
 
-#define atop(x)                        ((unsigned)(x) >> PAGE_SHIFT)
-#define ptoa(x)                        ((unsigned)(x) << PAGE_SHIFT)
+#define atop(x)                        ((x) >> PAGE_SHIFT)
+#define ptoa(x)                        ((x) << PAGE_SHIFT)
 
-#define i386_btop(x)           ((unsigned)(x) >> PAGE_SHIFT)
-#define i386_ptob(x)           ((unsigned)(x) << PAGE_SHIFT)
+#define i386_btop(x)           ((x) >> PAGE_SHIFT)
+#define i386_ptob(x)           ((x) << PAGE_SHIFT)
 
 #define        pgtok(x)                ((x) * (PAGE_SIZE / 1024))
 
index cb906cf..a829c59 100644 (file)
@@ -43,7 +43,7 @@
  *     from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90
  *     from: @(#)pmap.h        7.4 (Berkeley) 5/12/91
  * $FreeBSD: src/sys/i386/include/pmap.h,v 1.65.2.3 2001/10/03 07:15:37 peter Exp $
- * $DragonFly: src/sys/i386/include/Attic/pmap.h,v 1.4 2003/08/26 21:42:18 rob Exp $
+ * $DragonFly: src/sys/i386/include/Attic/pmap.h,v 1.5 2003/11/03 17:11:19 dillon Exp $
  */
 
 #ifndef _MACHINE_PMAP_H_
@@ -71,7 +71,7 @@
 /* Our various interpretations of the above */
 #define PG_W           PG_AVAIL1       /* "Wired" pseudoflag */
 #define        PG_MANAGED      PG_AVAIL2
-#define        PG_FRAME        (~PAGE_MASK)
+#define        PG_FRAME        (~((vm_paddr_t)PAGE_MASK))
 #define        PG_PROT         (PG_RW|PG_U)    /* all protection bits . */
 #define PG_N           (PG_NC_PWT|PG_NC_PCD)   /* Non-cacheable */
 
@@ -163,10 +163,11 @@ extern pd_entry_t IdlePTD;        /* physical address of "Idle" state directory */
  *             Extract the physical page address associated
  *             kernel virtual address.
  */
-static __inline vm_offset_t
+static __inline vm_paddr_t
 pmap_kextract(vm_offset_t va)
 {
-       vm_offset_t pa;
+       vm_paddr_t pa;
+
        if ((pa = (vm_offset_t) PTD[va >> PDRSHIFT]) & PG_PS) {
                pa = (pa & ~(NBPDR - 1)) | (va & (NBPDR - 1));
        } else {
@@ -243,18 +244,18 @@ extern struct ppro_vmtrr PPro_vmtrr[NPPROVMTRR];
 
 extern caddr_t CADDR1;
 extern pt_entry_t *CMAP1;
-extern vm_offset_t avail_end;
-extern vm_offset_t avail_start;
+extern vm_paddr_t avail_end;
+extern vm_paddr_t avail_start;
 extern vm_offset_t clean_eva;
 extern vm_offset_t clean_sva;
-extern vm_offset_t phys_avail[];
+extern vm_paddr_t phys_avail[];
 extern char *ptvmmap;          /* poor name! */
 extern vm_offset_t virtual_avail;
 extern vm_offset_t virtual_end;
 
-void   pmap_bootstrap ( vm_offset_t, vm_offset_t);
+void   pmap_bootstrap ( vm_paddr_t, vm_paddr_t);
 pmap_t pmap_kernel (void);
-void   *pmap_mapdev (vm_offset_t, vm_size_t);
+void   *pmap_mapdev (vm_paddr_t, vm_size_t);
 void   pmap_unmapdev (vm_offset_t, vm_size_t);
 unsigned *pmap_pte (pmap_t, vm_offset_t) __pure2;
 vm_page_t pmap_use_pt (pmap_t, vm_offset_t);
index 81ffca2..166c2d4 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)types.h     8.3 (Berkeley) 1/5/94
  * $FreeBSD: src/sys/i386/include/types.h,v 1.19.2.1 2001/03/21 10:50:58 peter Exp $
- * $DragonFly: src/sys/i386/include/Attic/types.h,v 1.5 2003/08/27 01:43:07 dillon Exp $
+ * $DragonFly: src/sys/i386/include/Attic/types.h,v 1.6 2003/11/03 17:11:19 dillon Exp $
  */
 
 #ifndef _MACHINE_TYPES_H_
@@ -68,5 +68,7 @@ typedef unsigned int *pt_entry_t;
 
 /* Interrupt mask (spl, xxx_imask, etc) */
 typedef __uint32_t             intrmask_t;
+typedef __int64_t              intmax_t;
+typedef __uint64_t             uintmax_t;
 
 #endif /* !_MACHINE_TYPES_H_ */
index 0fadd42..aa4d467 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     from: @(#)vmparam.h     5.9 (Berkeley) 5/12/91
  * $FreeBSD: src/sys/i386/include/vmparam.h,v 1.32.2.1 2000/04/02 08:47:01 peter Exp $
- * $DragonFly: src/sys/i386/include/Attic/vmparam.h,v 1.5 2003/10/19 00:23:23 dillon Exp $
+ * $DragonFly: src/sys/i386/include/Attic/vmparam.h,v 1.6 2003/11/03 17:11:19 dillon Exp $
  */
 
 
@@ -91,7 +91,7 @@
  * messy at times, but hey, we'll do anything to save a page :-)
  */
 
-#define VM_MAX_KERNEL_ADDRESS  VADDR(KPTDI+NKPDE, 0)
+#define VM_MAX_KERNEL_ADDRESS  VADDR(KPTDI+NKPDE-1, NPTEPG-1)
 #define VM_MIN_KERNEL_ADDRESS  VADDR(PTDPTDI, PTDPTDI)
 
 #define        KERNBASE                VADDR(KPTDI, 0)
 #define UPT_MAX_ADDRESS                VADDR(PTDPTDI, PTDPTDI)
 #define UPT_MIN_ADDRESS                VADDR(PTDPTDI, 0)
 
-#define VM_MAXUSER_ADDRESS     VADDR(UMAXPTDI, UMAXPTEOFF)
+#define VM_MAXUSER_ADDRESS     VADDR(PTDPTDI, 0)
 
 #define USRSTACK               VM_MAXUSER_ADDRESS
 
index 1b6554f..f906009 100644 (file)
@@ -17,7 +17,7 @@
  *    are met.
  *
  * $FreeBSD: src/sys/kern/sys_pipe.c,v 1.60.2.13 2002/08/05 15:05:15 des Exp $
- * $DragonFly: src/sys/kern/sys_pipe.c,v 1.12 2003/09/03 14:19:06 hmp Exp $
+ * $DragonFly: src/sys/kern/sys_pipe.c,v 1.13 2003/11/03 17:11:21 dillon Exp $
  */
 
 /*
@@ -549,7 +549,8 @@ pipe_build_write_buffer(wpipe, uio)
 {
        u_int size;
        int i;
-       vm_offset_t addr, endaddr, paddr;
+       vm_offset_t addr, endaddr;
+       vm_paddr_t paddr;
 
        size = (u_int) uio->uio_iov->iov_len;
        if (size > wpipe->pipe_buffer.size)
index a09817f..75354d7 100644 (file)
@@ -12,7 +12,7 @@
  *             John S. Dyson.
  *
  * $FreeBSD: src/sys/kern/vfs_bio.c,v 1.242.2.20 2003/05/28 18:38:10 alc Exp $
- * $DragonFly: src/sys/kern/vfs_bio.c,v 1.15 2003/10/08 00:10:56 dillon Exp $
+ * $DragonFly: src/sys/kern/vfs_bio.c,v 1.16 2003/11/03 17:11:21 dillon Exp $
  */
 
 /*
@@ -3212,7 +3212,7 @@ int
 vmapbuf(struct buf *bp)
 {
        caddr_t addr, v, kva;
-       vm_offset_t pa;
+       vm_paddr_t pa;
        int pidx;
        int i;
        struct vm_page *m;
index 20dde8e..a2de5ed 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)vfs_subr.c  8.31 (Berkeley) 5/26/95
  * $FreeBSD: src/sys/kern/vfs_subr.c,v 1.249.2.30 2003/04/04 20:35:57 tegge Exp $
- * $DragonFly: src/sys/kern/vfs_subr.c,v 1.22 2003/10/09 22:27:19 dillon Exp $
+ * $DragonFly: src/sys/kern/vfs_subr.c,v 1.23 2003/11/03 17:11:21 dillon Exp $
  */
 
 /*
@@ -73,6 +73,7 @@
 #include <vm/vm.h>
 #include <vm/vm_object.h>
 #include <vm/vm_extern.h>
+#include <vm/vm_kern.h>
 #include <vm/pmap.h>
 #include <vm/vm_map.h>
 #include <vm/vm_page.h>
@@ -181,7 +182,18 @@ void
 vntblinit()
 {
 
-       desiredvnodes = maxproc + vmstats.v_page_count / 4;
+       /*
+        * Desired vnodes is a result of the physical page count
+        * and the size of kernel's heap.  It scales in proportion
+        * to the amount of available physical memory.  This can
+        * cause trouble on 64-bit and large memory platforms.
+        */
+       /* desiredvnodes = maxproc + vmstats.v_page_count / 4; */
+       desiredvnodes =
+               min(maxproc + vmstats.v_page_count /4,
+                   2 * (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) /
+                   (5 * (sizeof(struct vm_object) + sizeof(struct vnode))));
+
        minvnodes = desiredvnodes / 4;
        lwkt_inittoken(&mntvnode_token);
        lwkt_inittoken(&mntid_token);
index bc6d0ed..9f7de93 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/i386/busdma_machdep.c,v 1.16.2.2 2003/01/23 00:55:27 scottl Exp $
- * $DragonFly: src/sys/platform/pc32/i386/busdma_machdep.c,v 1.4 2003/07/27 01:49:51 hmp Exp $
+ * $DragonFly: src/sys/platform/pc32/i386/busdma_machdep.c,v 1.5 2003/11/03 17:11:18 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -97,7 +97,7 @@ static struct bus_dmamap nobounce_dmamap;
 
 static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages);
 static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map);
-static vm_offset_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map,
+static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map,
                                   vm_offset_t vaddr, bus_size_t size);
 static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage);
 static __inline int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr);
@@ -144,8 +144,8 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment,
        newtag->parent = parent;
        newtag->alignment = alignment;
        newtag->boundary = boundary;
-       newtag->lowaddr = trunc_page((vm_offset_t)lowaddr) + (PAGE_SIZE - 1);
-       newtag->highaddr = trunc_page((vm_offset_t)highaddr) + (PAGE_SIZE - 1);
+       newtag->lowaddr = trunc_page((vm_paddr_t)lowaddr) + (PAGE_SIZE - 1);
+       newtag->highaddr = trunc_page((vm_paddr_t)highaddr) + (PAGE_SIZE - 1);
        newtag->filter = filter;
        newtag->filterarg = filterarg;
        newtag->maxsize = maxsize;
@@ -178,7 +178,8 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment,
                }
        }
        
-       if (newtag->lowaddr < ptoa(Maxmem) && (flags & BUS_DMA_ALLOCNOW) != 0) {
+       if (newtag->lowaddr < ptoa(Maxmem) &&
+           (flags & BUS_DMA_ALLOCNOW) != 0) {
                /* Must bounce */
 
                if (lowaddr > bounce_lowaddr) {
@@ -328,7 +329,8 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
        /* If we succeed, no mapping/bouncing will be required */
        *mapp = NULL;
 
-       if ((dmat->maxsize <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem)) {
+       if ((dmat->maxsize <= PAGE_SIZE) &&
+           dmat->lowaddr >= ptoa(Maxmem)) {
                *vaddr = malloc(dmat->maxsize, M_DEVBUF,
                                (flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK);
        } else {
@@ -360,7 +362,8 @@ bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
         */
        if (map != NULL)
                panic("bus_dmamem_free: Invalid map freed\n");
-       if ((dmat->maxsize <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem))
+       if ((dmat->maxsize <= PAGE_SIZE) &&
+           dmat->lowaddr >= ptoa(Maxmem))
                free(vaddr, M_DEVBUF);
        else
                contigfree(vaddr, dmat->maxsize, M_DEVBUF);
@@ -377,7 +380,7 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
                void *callback_arg, int flags)
 {
        vm_offset_t             vaddr;
-       vm_offset_t             paddr;
+       vm_paddr_t              paddr;
 #ifdef __GNUC__
        bus_dma_segment_t       dm_segments[dmat->nsegments];
 #else
@@ -386,7 +389,7 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
        bus_dma_segment_t      *sg;
        int                     seg;
        int                     error;
-       vm_offset_t             nextpaddr;
+       vm_paddr_t              nextpaddr;
 
        if (map == NULL)
                map = &nobounce_dmamap;
@@ -396,7 +399,8 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
         * If we are being called during a callback, pagesneeded will
         * be non-zero, so we can avoid doing the work twice.
         */
-       if (dmat->lowaddr < ptoa(Maxmem) && map->pagesneeded == 0) {
+       if (dmat->lowaddr < ptoa(Maxmem) &&
+           map->pagesneeded == 0) {
                vm_offset_t     vendaddr;
 
                /*
@@ -799,7 +803,7 @@ reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map)
        return (pages);
 }
 
-static vm_offset_t
+static bus_addr_t
 add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr,
                bus_size_t size)
 {
index 3036f8f..603e287 100644 (file)
@@ -36,7 +36,7 @@
  *
  *     from: @(#)machdep.c     7.4 (Berkeley) 6/3/91
  * $FreeBSD: src/sys/i386/i386/machdep.c,v 1.385.2.30 2003/05/31 08:48:05 alc Exp $
- * $DragonFly: src/sys/platform/pc32/i386/machdep.c,v 1.40 2003/10/25 17:36:22 dillon Exp $
+ * $DragonFly: src/sys/platform/pc32/i386/machdep.c,v 1.41 2003/11/03 17:11:18 dillon Exp $
  */
 
 #include "use_apm.h"
@@ -237,10 +237,11 @@ SYSCTL_PROC(_machdep, OID_AUTO, msgbuf_clear, CTLTYPE_INT|CTLFLAG_RW,
        &msgbuf_clear, 0, sysctl_machdep_msgbuf_clear, "I",
        "Clear kernel message buffer");
 
-int bootverbose = 0, Maxmem = 0;
+int bootverbose = 0;
+vm_paddr_t Maxmem = 0;
 long dumplo;
 
-vm_offset_t phys_avail[10];
+vm_paddr_t phys_avail[10];
 
 /* must be 2 less so 0 0 can signal end of chunks */
 #define PHYS_AVAIL_ARRAY_END ((sizeof(phys_avail) / sizeof(vm_offset_t)) - 2)
@@ -274,7 +275,7 @@ cpu_startup(dummy)
 #ifdef PERFMON
        perfmon_init();
 #endif
-       printf("real memory  = %u (%uK bytes)\n", ptoa(Maxmem), ptoa(Maxmem) / 1024);
+       printf("real memory  = %llu (%lluK bytes)\n", ptoa(Maxmem), ptoa(Maxmem) / 1024);
        /*
         * Display any holes after the first chunk of extended memory.
         */
@@ -283,9 +284,9 @@ cpu_startup(dummy)
 
                printf("Physical memory chunk(s):\n");
                for (indx = 0; phys_avail[indx + 1] != 0; indx += 2) {
-                       unsigned int size1 = phys_avail[indx + 1] - phys_avail[indx];
+                       vm_paddr_t size1 = phys_avail[indx + 1] - phys_avail[indx];
 
-                       printf("0x%08x - 0x%08x, %u bytes (%u pages)\n",
+                       printf("0x%08llx - 0x%08llx, %llu bytes (%llu pages)\n",
                            phys_avail[indx], phys_avail[indx + 1] - 1, size1,
                            size1 / PAGE_SIZE);
                }
@@ -1460,7 +1461,7 @@ physmap_done:
 
        if (atop(physmap[physmap_idx + 1]) != Maxmem &&
            (boothowto & RB_VERBOSE))
-               printf("Physical memory use set to %uK\n", Maxmem * 4);
+               printf("Physical memory use set to %lluK\n", Maxmem * 4);
 
        /*
         * If Maxmem has been increased beyond what the system has detected,
index 18e7763..7e4667c 100644 (file)
@@ -40,7 +40,7 @@
  *
  *     from:   @(#)pmap.c      7.7 (Berkeley)  5/12/91
  * $FreeBSD: src/sys/i386/i386/pmap.c,v 1.250.2.18 2002/03/06 22:48:53 silby Exp $
- * $DragonFly: src/sys/platform/pc32/i386/pmap.c,v 1.22 2003/09/02 20:11:34 dillon Exp $
+ * $DragonFly: src/sys/platform/pc32/i386/pmap.c,v 1.23 2003/11/03 17:11:18 dillon Exp $
  */
 
 /*
@@ -149,8 +149,8 @@ static int protection_codes[8];
 static struct pmap kernel_pmap_store;
 pmap_t kernel_pmap;
 
-vm_offset_t avail_start;       /* PA of first available physical page */
-vm_offset_t avail_end;         /* PA of last available physical page */
+vm_paddr_t avail_start;        /* PA of first available physical page */
+vm_paddr_t avail_end;          /* PA of last available physical page */
 vm_offset_t virtual_avail;     /* VA of first avail page (after kernel bss) */
 vm_offset_t virtual_end;       /* VA of last avail page (end of kernel AS) */
 static boolean_t pmap_initialized = FALSE;     /* Has pmap_init completed? */
@@ -307,8 +307,8 @@ pmap_pte_quick(pmap_t pmap, vm_offset_t va)
  */
 void
 pmap_bootstrap(firstaddr, loadaddr)
-       vm_offset_t firstaddr;
-       vm_offset_t loadaddr;
+       vm_paddr_t firstaddr;
+       vm_paddr_t loadaddr;
 {
        vm_offset_t va;
        pt_entry_t *pte;
@@ -494,7 +494,7 @@ pmap_set_opt(void)
  */
 void
 pmap_init(phys_start, phys_end)
-       vm_offset_t phys_start, phys_end;
+       vm_paddr_t phys_start, phys_end;
 {
        int i;
        int initial_pvs;
@@ -666,7 +666,7 @@ get_ptbase(pmap_t pmap)
  *     This function may not be called from an interrupt if the pmap is
  *     not kernel_pmap.
  */
-vm_offset_t 
+vm_paddr_t 
 pmap_extract(pmap_t pmap, vm_offset_t va)
 {
        vm_offset_t rtval;
@@ -698,7 +698,7 @@ pmap_extract(pmap_t pmap, vm_offset_t va)
  * should do a invltlb after doing the pmap_kenter...
  */
 PMAP_INLINE void 
-pmap_kenter(vm_offset_t va, vm_offset_t pa)
+pmap_kenter(vm_offset_t va, vm_paddr_t pa)
 {
        unsigned *pte;
        unsigned npte, opte;
@@ -731,7 +731,7 @@ pmap_kremove(vm_offset_t va)
  *     specified memory.
  */
 vm_offset_t
-pmap_map(vm_offset_t virt, vm_offset_t start, vm_offset_t end, int prot)
+pmap_map(vm_offset_t virt, vm_paddr_t start, vm_paddr_t end, int prot)
 {
        while (start < end) {
                pmap_kenter(virt, start);
@@ -816,6 +816,7 @@ retry:
 
 /*
  * Create a new thread and optionally associate it with a (new) process.
+ * NOTE! the new thread's cpu may not equal the current cpu.
  */
 void
 pmap_init_thread(thread_t td)
@@ -1870,9 +1871,9 @@ void
 pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
           boolean_t wired)
 {
-       vm_offset_t pa;
+       vm_paddr_t pa;
        unsigned *pte;
-       vm_offset_t opa;
+       vm_paddr_t opa;
        vm_offset_t origpte, newpte;
        vm_page_t mpte;
 
@@ -1921,8 +1922,8 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
         * Page Directory table entry not valid, we need a new PT page
         */
        if (pte == NULL) {
-               panic("pmap_enter: invalid page directory, pdir=%p, va=0x%x\n",
-                       (void *)pmap->pm_pdir[PTDPTDI], va);
+               panic("pmap_enter: invalid page directory pdir=%x, va=0x%x\n",
+                    (unsigned) pmap->pm_pdir[PTDPTDI], va);
        }
 
        pa = VM_PAGE_TO_PHYS(m) & PG_FRAME;
@@ -2064,7 +2065,7 @@ static vm_page_t
 pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte)
 {
        unsigned *pte;
-       vm_offset_t pa;
+       vm_paddr_t pa;
 
        /*
         * In the case that a page table page is not
@@ -2156,7 +2157,7 @@ retry:
  * to be used for panic dumps.
  */
 void *
-pmap_kenter_temporary(vm_offset_t pa, int i)
+pmap_kenter_temporary(vm_paddr_t pa, int i)
 {
        pmap_kenter((vm_offset_t)crashdumpmap + (i * PAGE_SIZE), pa);
        return ((void *)crashdumpmap);
@@ -2582,7 +2583,7 @@ pmap_kernel(void)
  *     required.
  */
 void
-pmap_zero_page(vm_offset_t phys)
+pmap_zero_page(vm_paddr_t phys)
 {
        struct mdglobaldata *gd = mdcpu;
 
@@ -2612,7 +2613,7 @@ pmap_zero_page(vm_offset_t phys)
  *     off and size may not cover an area beyond a single hardware page.
  */
 void
-pmap_zero_page_area(vm_offset_t phys, int off, int size)
+pmap_zero_page_area(vm_paddr_t phys, int off, int size)
 {
        struct mdglobaldata *gd = mdcpu;
 
@@ -2640,7 +2641,7 @@ pmap_zero_page_area(vm_offset_t phys, int off, int size)
  *     is required.
  */
 void
-pmap_copy_page(vm_offset_t src, vm_offset_t dst)
+pmap_copy_page(vm_paddr_t src, vm_paddr_t dst)
 {
        struct mdglobaldata *gd = mdcpu;
 
@@ -2918,7 +2919,7 @@ pmap_page_protect(vm_page_t m, vm_prot_t prot)
        }
 }
 
-vm_offset_t
+vm_paddr_t
 pmap_phys_address(int ppn)
 {
        return (i386_ptob(ppn));
@@ -3056,7 +3057,7 @@ i386_protection_init(void)
  * a time.
  */
 void *
-pmap_mapdev(vm_offset_t pa, vm_size_t size)
+pmap_mapdev(vm_paddr_t pa, vm_size_t size)
 {
        vm_offset_t va, tmpva, offset;
        unsigned *pte;
@@ -3264,7 +3265,7 @@ pads(pmap_t pm)
 }
 
 void
-pmap_pvdump(vm_offset_t pa)
+pmap_pvdump(vm_paddr_t pa)
 {
        pv_entry_t pv;
        vm_page_t m;
index beeba38..ec212f0 100644 (file)
@@ -39,7 +39,7 @@
  *     from: @(#)vm_machdep.c  7.3 (Berkeley) 5/13/91
  *     Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$
  * $FreeBSD: src/sys/i386/i386/vm_machdep.c,v 1.132.2.9 2003/01/25 19:02:23 dillon Exp $
- * $DragonFly: src/sys/platform/pc32/i386/vm_machdep.c,v 1.24 2003/08/26 21:42:18 rob Exp $
+ * $DragonFly: src/sys/platform/pc32/i386/vm_machdep.c,v 1.25 2003/11/03 17:11:18 dillon Exp $
  */
 
 #include "use_npx.h"
@@ -383,15 +383,15 @@ setredzone(pte, vaddr)
 /*
  * Convert kernel VA to physical address
  */
-u_long
+vm_paddr_t
 kvtop(void *addr)
 {
-       vm_offset_t va;
+       vm_paddr_t pa;
 
-       va = pmap_kextract((vm_offset_t)addr);
-       if (va == 0)
+       pa = pmap_kextract((vm_offset_t)addr);
+       if (pa == 0)
                panic("kvtop: zero page frame");
-       return((int)va);
+       return (pa);
 }
 
 /*
index 9164249..c5de381 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/include/md_var.h,v 1.35.2.4 2003/01/22 20:14:53 jhb Exp $
- * $DragonFly: src/sys/platform/pc32/include/md_var.h,v 1.11 2003/10/24 14:10:45 daver Exp $
+ * $DragonFly: src/sys/platform/pc32/include/md_var.h,v 1.12 2003/11/03 17:11:19 dillon Exp $
  */
 
 #ifndef _MACHINE_MD_VAR_H_
@@ -37,7 +37,7 @@
  * Miscellaneous machine-dependent declarations.
  */
 
-extern int     Maxmem;
+extern vm_paddr_t      Maxmem;
 extern u_int   atdevbase;      /* offset in virtual memory of ISA io mem */
 extern void    (*bcopy_vector) (const void *from, void *to, size_t len);
 extern int     busdma_swi_pending;
@@ -106,7 +106,7 @@ int i586_copyout (const void *kaddr, void *udaddr, size_t len);
 void   i686_pagezero (void *addr);
 void   init_AMD_Elan_sc520(void);
 int    is_physical_memory (vm_offset_t addr);
-u_long kvtop (void *addr);
+vm_paddr_t kvtop (void *addr);
 void   setidt (int idx, alias_for_inthand_t *func, int typ, int dpl,
                    int selec);
 void   userconfig (void);
index b5ff14c..ce7b8a7 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     from: @(#)vmparam.h     5.9 (Berkeley) 5/12/91
  * $FreeBSD: src/sys/i386/include/vmparam.h,v 1.32.2.1 2000/04/02 08:47:01 peter Exp $
- * $DragonFly: src/sys/platform/pc32/include/vmparam.h,v 1.5 2003/10/19 00:23:23 dillon Exp $
+ * $DragonFly: src/sys/platform/pc32/include/vmparam.h,v 1.6 2003/11/03 17:11:19 dillon Exp $
  */
 
 
@@ -91,7 +91,7 @@
  * messy at times, but hey, we'll do anything to save a page :-)
  */
 
-#define VM_MAX_KERNEL_ADDRESS  VADDR(KPTDI+NKPDE, 0)
+#define VM_MAX_KERNEL_ADDRESS  VADDR(KPTDI+NKPDE-1, NPTEPG-1)
 #define VM_MIN_KERNEL_ADDRESS  VADDR(PTDPTDI, PTDPTDI)
 
 #define        KERNBASE                VADDR(KPTDI, 0)
 #define UPT_MAX_ADDRESS                VADDR(PTDPTDI, PTDPTDI)
 #define UPT_MIN_ADDRESS                VADDR(PTDPTDI, 0)
 
-#define VM_MAXUSER_ADDRESS     VADDR(UMAXPTDI, UMAXPTEOFF)
+#define VM_MAXUSER_ADDRESS     VADDR(PTDPTDI, 0)
 
 #define USRSTACK               VM_MAXUSER_ADDRESS
 
index 384968b..b0aeb26 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)malloc.h    8.5 (Berkeley) 5/3/95
  * $FreeBSD: src/sys/sys/malloc.h,v 1.48.2.2 2002/03/16 02:19:16 archie Exp $
- * $DragonFly: src/sys/sys/malloc.h,v 1.12 2003/10/20 16:50:39 dillon Exp $
+ * $DragonFly: src/sys/sys/malloc.h,v 1.13 2003/11/03 17:11:22 dillon Exp $
  */
 
 #ifndef _SYS_MALLOC_H_
@@ -202,7 +202,7 @@ MALLOC_DECLARE(M_IOV);
 void   contigfree (void *addr, unsigned long size,
                        struct malloc_type *type);
 void   *contigmalloc (unsigned long size, struct malloc_type *type,
-                          int flags, unsigned long low, unsigned long high,
+                          int flags, vm_paddr_t low, vm_paddr_t high,
                           unsigned long alignment, unsigned long boundary);
 void   free (void *addr, struct malloc_type *type);
 void   *malloc (unsigned long size, struct malloc_type *type, int flags);
index 83938ad..411accc 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)device_pager.c      8.1 (Berkeley) 6/11/93
  * $FreeBSD: src/sys/vm/device_pager.c,v 1.46.2.1 2000/08/02 21:54:37 peter Exp $
- * $DragonFly: src/sys/vm/device_pager.c,v 1.5 2003/08/20 08:03:01 rob Exp $
+ * $DragonFly: src/sys/vm/device_pager.c,v 1.6 2003/11/03 17:11:23 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -68,7 +68,7 @@ static struct pagerlst dev_pager_object_list;
 static vm_zone_t fakepg_zone;
 static struct vm_zone fakepg_zone_store;
 
-static vm_page_t dev_pager_getfake (vm_offset_t);
+static vm_page_t dev_pager_getfake (vm_paddr_t);
 static void dev_pager_putfake (vm_page_t);
 
 static int dev_pager_alloc_lock, dev_pager_alloc_lock_want;
@@ -187,7 +187,7 @@ dev_pager_getpages(object, m, count, reqpage)
        int reqpage;
 {
        vm_offset_t offset;
-       vm_offset_t paddr;
+       vm_paddr_t paddr;
        vm_page_t page;
        dev_t dev;
        int i, s;
@@ -242,7 +242,7 @@ dev_pager_haspage(object, pindex, before, after)
 
 static vm_page_t
 dev_pager_getfake(paddr)
-       vm_offset_t paddr;
+       vm_paddr_t paddr;
 {
        vm_page_t m;
 
index b751dbf..2f82dee 100644 (file)
@@ -62,7 +62,7 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/vm/pmap.h,v 1.33.2.4 2002/03/06 22:44:24 silby Exp $
- * $DragonFly: src/sys/vm/pmap.h,v 1.7 2003/08/20 08:03:01 rob Exp $
+ * $DragonFly: src/sys/vm/pmap.h,v 1.8 2003/11/03 17:11:23 dillon Exp $
  */
 
 /*
@@ -101,18 +101,18 @@ void               pmap_clear_reference (vm_page_t m);
 void            pmap_collect (void);
 void            pmap_copy (pmap_t, pmap_t, vm_offset_t, vm_size_t,
                    vm_offset_t);
-void            pmap_copy_page (vm_offset_t, vm_offset_t);
+void            pmap_copy_page (vm_paddr_t, vm_paddr_t);
 void            pmap_destroy (pmap_t);
 void            pmap_enter (pmap_t, vm_offset_t, vm_page_t, vm_prot_t,
                    boolean_t);
-vm_offset_t     pmap_extract (pmap_t pmap, vm_offset_t va);
+vm_paddr_t      pmap_extract (pmap_t pmap, vm_offset_t va);
 void            pmap_growkernel (vm_offset_t);
-void            pmap_init (vm_offset_t, vm_offset_t);
+void            pmap_init (vm_paddr_t, vm_paddr_t);
 boolean_t       pmap_is_modified (vm_page_t m);
 boolean_t       pmap_ts_referenced (vm_page_t m);
-void            pmap_kenter (vm_offset_t va, vm_offset_t pa);
+void            pmap_kenter (vm_offset_t va, vm_paddr_t pa);
 void            pmap_kremove (vm_offset_t);
-vm_offset_t     pmap_map (vm_offset_t, vm_offset_t, vm_offset_t, int);
+vm_offset_t     pmap_map (vm_offset_t, vm_paddr_t, vm_paddr_t, int);
 void            pmap_object_init_pt (pmap_t pmap, vm_offset_t addr,
                    vm_object_t object, vm_pindex_t pindex, vm_offset_t size,
                    int pagelimit);
@@ -120,7 +120,7 @@ boolean_t    pmap_page_exists_quick (pmap_t pmap, vm_page_t m);
 void            pmap_page_protect (vm_page_t m, vm_prot_t prot);
 void            pmap_pageable (pmap_t, vm_offset_t, vm_offset_t,
                    boolean_t);
-vm_offset_t     pmap_phys_address (int);
+vm_paddr_t      pmap_phys_address (int);
 void            pmap_pinit (pmap_t);
 void            pmap_pinit0 (pmap_t);
 void            pmap_pinit2 (pmap_t);
@@ -132,8 +132,8 @@ void                 pmap_reference (pmap_t);
 void            pmap_release (pmap_t);
 void            pmap_remove (pmap_t, vm_offset_t, vm_offset_t);
 void            pmap_remove_pages (pmap_t, vm_offset_t, vm_offset_t);
-void            pmap_zero_page (vm_offset_t);
-void            pmap_zero_page_area (vm_offset_t, int off, int size);
+void            pmap_zero_page (vm_paddr_t);
+void            pmap_zero_page_area (vm_paddr_t, int off, int size);
 void            pmap_prefault (pmap_t, vm_offset_t, vm_map_entry_t);
 int             pmap_mincore (pmap_t pmap, vm_offset_t addr);
 void            pmap_init_proc (struct proc *p, struct thread *td);
@@ -143,7 +143,7 @@ void                 pmap_swapout_proc (struct proc *p);
 void            pmap_swapin_proc (struct proc *p);
 void            pmap_activate (struct proc *p);
 vm_offset_t     pmap_addr_hint (vm_object_t obj, vm_offset_t addr, vm_size_t size);
-void           *pmap_kenter_temporary (vm_offset_t pa, int i);
+void           *pmap_kenter_temporary (vm_paddr_t pa, int i);
 void            pmap_init2 (void);
 
 #endif /* _KERNEL */
index 21adeb8..fd86578 100644 (file)
@@ -37,7 +37,7 @@
  * SUCH DAMAGE.
  *
  *     from: @(#)vm_page.c     7.4 (Berkeley) 5/7/91
- * $DragonFly: src/sys/vm/vm_contig.c,v 1.1 2003/10/15 16:48:04 hmp Exp $
+ * $DragonFly: src/sys/vm/vm_contig.c,v 1.2 2003/11/03 17:11:23 dillon Exp $
  */
 
 /*
@@ -160,8 +160,8 @@ vm_contig_pg_clean(int queue)
 int
 vm_contig_pg_alloc(
        unsigned long size,
-       unsigned long low,
-       unsigned long high,
+       vm_paddr_t low,
+       vm_paddr_t high,
        unsigned long alignment,
        unsigned long boundary)
 {
@@ -352,8 +352,8 @@ contigmalloc(
        unsigned long size,     /* should be size_t here and for malloc() */
        struct malloc_type *type,
        int flags,
-       unsigned long low,
-       unsigned long high,
+       vm_paddr_t low,
+       vm_paddr_t high,
        unsigned long alignment,
        unsigned long boundary)
 {
@@ -366,8 +366,8 @@ contigmalloc_map(
        unsigned long size,     /* should be size_t here and for malloc() */
        struct malloc_type *type,
        int flags,
-       unsigned long low,
-       unsigned long high,
+       vm_paddr_t low,
+       vm_paddr_t high,
        unsigned long alignment,
        unsigned long boundary,
        vm_map_t map)
@@ -397,8 +397,8 @@ contigfree(void *addr, unsigned long size, struct malloc_type *type)
 vm_offset_t
 vm_page_alloc_contig(
        vm_offset_t size,
-       vm_offset_t low,
-       vm_offset_t high,
+       vm_paddr_t low,
+       vm_paddr_t high,
        vm_offset_t alignment)
 {
        return ((vm_offset_t)contigmalloc_map(size, M_DEVBUF, M_NOWAIT, low,
index f107866..d1dc2f2 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)vm_extern.h 8.2 (Berkeley) 1/12/94
  * $FreeBSD: src/sys/vm/vm_extern.h,v 1.46.2.3 2003/01/13 22:51:17 dillon Exp $
- * $DragonFly: src/sys/vm/vm_extern.h,v 1.5 2003/08/27 01:43:08 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_extern.h,v 1.6 2003/11/03 17:11:23 dillon Exp $
  */
 
 #ifndef _VM_EXTERN_H_
@@ -85,7 +85,7 @@ int vm_fault_user_wire (vm_map_t, vm_offset_t, vm_offset_t);
 void vm_fork (struct proc *, struct proc *, int);
 void vm_waitproc (struct proc *);
 int vm_mmap (vm_map_t, vm_offset_t *, vm_size_t, vm_prot_t, vm_prot_t, int, void *, vm_ooffset_t);
-vm_offset_t vm_page_alloc_contig (vm_offset_t, vm_offset_t, vm_offset_t, vm_offset_t);
+vm_offset_t vm_page_alloc_contig (vm_offset_t, vm_paddr_t, vm_paddr_t, vm_offset_t);
 void vm_set_page_size (void);
 struct vmspace *vmspace_alloc (vm_offset_t, vm_offset_t);
 struct vmspace *vmspace_fork (struct vmspace *);
index 6025d17..353e35f 100644 (file)
@@ -67,7 +67,7 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/vm/vm_fault.c,v 1.108.2.8 2002/02/26 05:49:27 silby Exp $
- * $DragonFly: src/sys/vm/vm_fault.c,v 1.8 2003/10/02 21:00:20 hmp Exp $
+ * $DragonFly: src/sys/vm/vm_fault.c,v 1.9 2003/11/03 17:11:23 dillon Exp $
  */
 
 /*
@@ -978,7 +978,8 @@ vm_fault_unwire(map, start, end)
        vm_offset_t start, end;
 {
 
-       vm_offset_t va, pa;
+       vm_offset_t va;
+       vm_paddr_t pa;
        pmap_t pmap;
 
        pmap = vm_map_pmap(map);
@@ -990,7 +991,7 @@ vm_fault_unwire(map, start, end)
 
        for (va = start; va < end; va += PAGE_SIZE) {
                pa = pmap_extract(pmap, va);
-               if (pa != (vm_offset_t) 0) {
+               if (pa != 0) {
                        pmap_change_wiring(pmap, va, FALSE);
                        vm_page_unwire(PHYS_TO_VM_PAGE(pa), 1);
                }
index 548351e..a2951e5 100644 (file)
@@ -62,7 +62,7 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/vm/vm_kern.h,v 1.22 2000/02/16 21:11:31 dillon Exp $
- * $DragonFly: src/sys/vm/vm_kern.h,v 1.6 2003/10/19 00:23:30 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_kern.h,v 1.7 2003/11/03 17:11:23 dillon Exp $
  */
 
 #ifndef _VM_VM_KERN_H_
@@ -80,7 +80,7 @@ extern u_int vm_kmem_size;
 extern vm_offset_t kernel_vm_end;
 /* XXX - elsewhere? */
 struct malloc_type;
-extern void *contigmalloc_map(u_long, struct malloc_type *, int, u_long, u_long,
-                          u_long, u_long, vm_map_t);
+extern void *contigmalloc_map(u_long, struct malloc_type *, int,
+               vm_paddr_t, vm_paddr_t, u_long, u_long, vm_map_t);
 
 #endif                         /* _VM_VM_KERN_H_ */
index b9c15f8..494ca66 100644 (file)
@@ -62,7 +62,7 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/vm/vm_object.c,v 1.171.2.8 2003/05/26 19:17:56 alc Exp $
- * $DragonFly: src/sys/vm/vm_object.c,v 1.10 2003/10/19 00:23:30 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_object.c,v 1.11 2003/11/03 17:11:23 dillon Exp $
  */
 
 /*
@@ -1902,7 +1902,7 @@ DB_SHOW_COMMAND(vmopag, vm_object_print_pages)
                        object = TAILQ_NEXT(object, object_list)) {
                vm_pindex_t idx, fidx;
                vm_pindex_t osize;
-               vm_offset_t pa = -1, padiff;
+               vm_paddr_t pa = -1, padiff;
                int rcount;
                vm_page_t m;
 
index 5cdee09..2bc962a 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     from: @(#)vm_page.c     7.4 (Berkeley) 5/7/91
  * $FreeBSD: src/sys/vm/vm_page.c,v 1.147.2.18 2002/03/10 05:03:19 alc Exp $
- * $DragonFly: src/sys/vm/vm_page.c,v 1.14 2003/10/15 16:48:04 hmp Exp $
+ * $DragonFly: src/sys/vm/vm_page.c,v 1.15 2003/11/03 17:11:23 dillon Exp $
  */
 
 /*
@@ -158,7 +158,7 @@ vm_set_page_size(void)
  *     Must be called at splhigh().
  */
 vm_page_t
-vm_add_new_page(vm_offset_t pa)
+vm_add_new_page(vm_paddr_t pa)
 {
        vm_page_t m;
        struct vpgqueues *vpq;
@@ -195,18 +195,19 @@ vm_page_startup(vm_offset_t starta, vm_offset_t enda, vm_offset_t vaddr)
 {
        vm_offset_t mapped;
        struct vm_page **bucket;
-       vm_size_t npages, page_range;
-       vm_offset_t new_end;
+       vm_size_t npages;
+       vm_paddr_t page_range;
+       vm_paddr_t new_end;
        int i;
-       vm_offset_t pa;
+       vm_paddr_t pa;
        int nblocks;
-       vm_offset_t last_pa;
+       vm_paddr_t last_pa;
 
        /* the biggest memory array is the second group of pages */
-       vm_offset_t end;
-       vm_offset_t biggestone, biggestsize;
+       vm_paddr_t end;
+       vm_paddr_t biggestone, biggestsize;
 
-       vm_offset_t total;
+       vm_paddr_t total;
 
        total = 0;
        biggestsize = 0;
@@ -220,7 +221,7 @@ vm_page_startup(vm_offset_t starta, vm_offset_t enda, vm_offset_t vaddr)
        }
 
        for (i = 0; phys_avail[i + 1]; i += 2) {
-               int size = phys_avail[i + 1] - phys_avail[i];
+               vm_paddr_t size = phys_avail[i + 1] - phys_avail[i];
 
                if (size > biggestsize) {
                        biggestone = i;
index 5629d7c..592ed47 100644 (file)
@@ -62,7 +62,7 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/vm/vm_page.h,v 1.75.2.8 2002/03/06 01:07:09 dillon Exp $
- * $DragonFly: src/sys/vm/vm_page.h,v 1.7 2003/10/15 16:03:04 hmp Exp $
+ * $DragonFly: src/sys/vm/vm_page.h,v 1.8 2003/11/03 17:11:23 dillon Exp $
  */
 
 /*
@@ -117,7 +117,7 @@ struct vm_page {
 
        vm_object_t object;             /* which object am I in (O,P)*/
        vm_pindex_t pindex;             /* offset into object (O,P) */
-       vm_offset_t phys_addr;          /* physical address of page */
+       vm_paddr_t phys_addr;           /* physical address of page */
        struct md_page md;              /* machine dependant stuff */
        u_short queue;                  /* page queue index */
        u_short flags,                  /* see below */
@@ -413,7 +413,7 @@ vm_page_t vm_page_lookup (vm_object_t, vm_pindex_t);
 void vm_page_remove (vm_page_t);
 void vm_page_rename (vm_page_t, vm_object_t, vm_pindex_t);
 vm_offset_t vm_page_startup (vm_offset_t, vm_offset_t, vm_offset_t);
-vm_page_t vm_add_new_page (vm_offset_t pa);
+vm_page_t vm_add_new_page (vm_paddr_t pa);
 void vm_page_unmanage (vm_page_t);
 void vm_page_unwire (vm_page_t, int);
 void vm_page_wire (vm_page_t);
@@ -431,7 +431,7 @@ vm_page_t _vm_page_list_find (int, int);
 void vm_page_zero_invalid(vm_page_t m, boolean_t setvalid);
 void vm_page_free_toq(vm_page_t m);
 
-int vm_contig_pg_alloc(u_long, u_long, u_long, u_long, u_long);
+int vm_contig_pg_alloc(u_long, vm_paddr_t, vm_paddr_t, u_long, u_long);
 vm_offset_t vm_contig_pg_kmap(int, u_long, vm_map_t);
 void vm_contig_pg_free(int, u_long);