summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2003-03-25 00:07:06 +0000
committerjake <jake@FreeBSD.org>2003-03-25 00:07:06 +0000
commit783ae539c3e44d35afb500b405ff986b3033bc4a (patch)
tree553401a4d58eb98b1e208a82c3ba2c32b848a225 /sys/i386
parent0079e3d786d0b0a2647229d3498a426a039a5016 (diff)
downloadFreeBSD-src-783ae539c3e44d35afb500b405ff986b3033bc4a.zip
FreeBSD-src-783ae539c3e44d35afb500b405ff986b3033bc4a.tar.gz
- Add vm_paddr_t, a physical address type. This is required for systems
where physical addresses larger than virtual addresses, such as i386s with PAE. - Use this to represent physical addresses in the MI vm system and in the i386 pmap code. This also changes the paddr parameter to d_mmap_t. - Fix printf formats to handle physical addresses >4G in the i386 memory detection code, and due to kvtop returning vm_paddr_t instead of u_long. Note that this is a name change only; vm_paddr_t is still the same as vm_offset_t on all currently supported platforms. Sponsored by: DARPA, Network Associates Laboratories Discussed with: re, phk (cdevsw change)
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/acpica/acpi_wakeup.c2
-rw-r--r--sys/i386/i386/busdma_machdep.c30
-rw-r--r--sys/i386/i386/elan-mmcr.c2
-rw-r--r--sys/i386/i386/machdep.c41
-rw-r--r--sys/i386/i386/mem.c2
-rw-r--r--sys/i386/i386/mp_machdep.c2
-rw-r--r--sys/i386/i386/mptable.c2
-rw-r--r--sys/i386/i386/pmap.c49
-rw-r--r--sys/i386/i386/vm86.c2
-rw-r--r--sys/i386/i386/vm_machdep.c10
-rw-r--r--sys/i386/include/_types.h1
-rw-r--r--sys/i386/include/md_var.h2
-rw-r--r--sys/i386/include/mptable.h2
-rw-r--r--sys/i386/include/param.h12
-rw-r--r--sys/i386/include/pmap.h19
-rw-r--r--sys/i386/isa/isa_dma.c5
-rw-r--r--sys/i386/isa/pcvt/pcvt_drv.c2
-rw-r--r--sys/i386/isa/spigot.c2
18 files changed, 98 insertions, 89 deletions
diff --git a/sys/i386/acpica/acpi_wakeup.c b/sys/i386/acpica/acpi_wakeup.c
index a2e260b..9f02e93 100644
--- a/sys/i386/acpica/acpi_wakeup.c
+++ b/sys/i386/acpica/acpi_wakeup.c
@@ -181,7 +181,7 @@ int
acpi_sleep_machdep(struct acpi_softc *sc, int state)
{
ACPI_STATUS status;
- vm_offset_t oldphys;
+ vm_paddr_t oldphys;
struct pmap *pm;
vm_page_t page;
static vm_page_t opage = NULL;
diff --git a/sys/i386/i386/busdma_machdep.c b/sys/i386/i386/busdma_machdep.c
index 4fe748c..ca0db65 100644
--- a/sys/i386/i386/busdma_machdep.c
+++ b/sys/i386/i386/busdma_machdep.c
@@ -100,7 +100,7 @@ static struct bus_dmamap nobounce_dmamap;
static void init_bounce_pages(void *dummy);
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);
@@ -158,8 +158,9 @@ 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;
@@ -191,7 +192,8 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment,
atomic_add_int(&parent->ref_count, 1);
}
- if (newtag->lowaddr < ptoa(Maxmem) && (flags & BUS_DMA_ALLOCNOW) != 0) {
+ if (newtag->lowaddr < ptoa((vm_paddr_t)Maxmem) &&
+ (flags & BUS_DMA_ALLOCNOW) != 0) {
/* Must bounce */
if (lowaddr > bounce_lowaddr) {
@@ -262,7 +264,7 @@ bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp)
error = 0;
- if (dmat->lowaddr < ptoa(Maxmem)) {
+ if (dmat->lowaddr < ptoa((vm_paddr_t)Maxmem)) {
/* Must bounce */
int maxpages;
@@ -344,7 +346,8 @@ bus_dmamem_alloc_size(bus_dma_tag_t dmat, void** vaddr, int flags,
/* If we succeed, no mapping/bouncing will be required */
*mapp = NULL;
- if ((size <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem)) {
+ if ((size <= PAGE_SIZE) &&
+ dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem)) {
*vaddr = malloc(size, M_DEVBUF,
(flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK);
} else {
@@ -386,7 +389,7 @@ bus_dmamem_free_size(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map,
*/
if (map != NULL)
panic("bus_dmamem_free: Invalid map freed\n");
- if ((size <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem))
+ if ((size <= PAGE_SIZE) && dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem))
free(vaddr, M_DEVBUF);
else {
mtx_lock(&Giant);
@@ -412,7 +415,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
@@ -421,7 +424,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;
@@ -431,7 +434,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((vm_paddr_t)Maxmem) &&
+ map->pagesneeded == 0) {
vm_offset_t vendaddr;
/*
@@ -626,7 +630,7 @@ bus_dmamap_load_mbuf(bus_dma_tag_t dmat, bus_dmamap_t map,
#endif
int nsegs, error;
- KASSERT(dmat->lowaddr >= ptoa(Maxmem) || map != NULL,
+ KASSERT(dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem) || map != NULL,
("bus_dmamap_load_mbuf: No support for bounce pages!"));
KASSERT(m0->m_flags & M_PKTHDR,
("bus_dmamap_load_mbuf: no packet header"));
@@ -682,7 +686,7 @@ bus_dmamap_load_uio(bus_dma_tag_t dmat, bus_dmamap_t map,
struct iovec *iov;
struct thread *td = NULL;
- KASSERT(dmat->lowaddr >= ptoa(Maxmem) || map != NULL,
+ KASSERT(dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem) || map != NULL,
("bus_dmamap_load_uio: No support for bounce pages!"));
resid = uio->uio_resid;
@@ -846,7 +850,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)
{
diff --git a/sys/i386/i386/elan-mmcr.c b/sys/i386/i386/elan-mmcr.c
index e0492b50..be209f0 100644
--- a/sys/i386/i386/elan-mmcr.c
+++ b/sys/i386/i386/elan-mmcr.c
@@ -304,7 +304,7 @@ elan_write(dev_t dev, struct uio *uio, int ioflag)
}
static int
-elan_mmap(dev_t dev, vm_offset_t offset, vm_offset_t *paddr, int nprot)
+elan_mmap(dev_t dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot)
{
if (minor(dev) != ELAN_MMCR)
diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index d3f0ee6..aca9abf 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -170,7 +170,7 @@ static void freebsd4_sendsig(sig_t catcher, int sig, sigset_t *mask,
long Maxmem = 0;
-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)
@@ -197,8 +197,8 @@ cpu_startup(dummy)
#ifdef PERFMON
perfmon_init();
#endif
- printf("real memory = %u (%u MB)\n", ptoa(Maxmem),
- ptoa(Maxmem) / 1048576);
+ printf("real memory = %ju (%ju MB)\n", ptoa((uintmax_t)Maxmem),
+ ptoa((uintmax_t)Maxmem) / 1048576);
/*
* Display any holes after the first chunk of extended memory.
*/
@@ -207,19 +207,22 @@ cpu_startup(dummy)
printf("Physical memory chunk(s):\n");
for (indx = 0; phys_avail[indx + 1] != 0; indx += 2) {
- unsigned int size1;
+ vm_paddr_t size;
- size1 = phys_avail[indx + 1] - phys_avail[indx];
- printf("0x%08x - 0x%08x, %u bytes (%u pages)\n",
- phys_avail[indx], phys_avail[indx + 1] - 1, size1,
- size1 / PAGE_SIZE);
+ size = phys_avail[indx + 1] - phys_avail[indx];
+ printf(
+ "0x%016jx - 0x%016jx, %ju bytes (%ju pages)\n",
+ (uintmax_t)phys_avail[indx],
+ (uintmax_t)phys_avail[indx + 1] - 1,
+ (uintmax_t)size, (uintmax_t)size / PAGE_SIZE);
}
}
vm_ksubmap_init(&kmi);
- printf("avail memory = %u (%u MB)\n", ptoa(cnt.v_free_count),
- ptoa(cnt.v_free_count) / 1048576);
+ printf("avail memory = %ju (%ju MB)\n",
+ ptoa((uintmax_t)cnt.v_free_count),
+ ptoa((uintmax_t)cnt.v_free_count) / 1048576);
/*
* Set up buffers, so they can be used to read disk labels.
@@ -1463,6 +1466,8 @@ sdtossd(sd, ssd)
*
* Total memory size may be set by the kernel environment variable
* hw.physmem or the compile-time define MAXMEM.
+ *
+ * XXX first should be vm_paddr_t.
*/
static void
getmemsize(int first)
@@ -1472,7 +1477,7 @@ getmemsize(int first)
u_int basemem, extmem;
struct vm86frame vmf;
struct vm86context vmc;
- vm_offset_t pa, physmap[PHYSMAP_SIZE];
+ vm_paddr_t pa, physmap[PHYSMAP_SIZE];
pt_entry_t *pte;
char *cp;
struct bios_smap *smap;
@@ -1559,12 +1564,8 @@ int15e820:
if (i || vmf.vmf_eax != SMAP_SIG)
break;
if (boothowto & RB_VERBOSE)
- printf("SMAP type=%02x base=%08x %08x len=%08x %08x\n",
- smap->type,
- *(u_int32_t *)((char *)&smap->base + 4),
- (u_int32_t)smap->base,
- *(u_int32_t *)((char *)&smap->length + 4),
- (u_int32_t)smap->length);
+ printf("SMAP type=%02x base=%016llx len=%016llx\n",
+ smap->type, smap->base, smap->length);
if (smap->type != 0x01)
goto next_run;
@@ -1742,7 +1743,7 @@ physmap_done:
* extend the last memory segment to the new limit.
*/
if (atop(physmap[physmap_idx + 1]) < Maxmem)
- physmap[physmap_idx + 1] = ptoa(Maxmem);
+ physmap[physmap_idx + 1] = ptoa((vm_paddr_t)Maxmem);
/* call pmap initialization to make new kernel address space */
pmap_bootstrap(first, 0);
@@ -1761,9 +1762,9 @@ physmap_done:
* round up the start address and round down the end address.
*/
for (i = 0; i <= physmap_idx; i += 2) {
- vm_offset_t end;
+ vm_paddr_t end;
- end = ptoa(Maxmem);
+ end = ptoa((vm_paddr_t)Maxmem);
if (physmap[i + 1] < end)
end = trunc_page(physmap[i + 1]);
for (pa = round_page(physmap[i]); pa < end; pa += PAGE_SIZE) {
diff --git a/sys/i386/i386/mem.c b/sys/i386/i386/mem.c
index cae4f6a..37a9cec 100644
--- a/sys/i386/i386/mem.c
+++ b/sys/i386/i386/mem.c
@@ -211,7 +211,7 @@ mmrw(dev_t dev, struct uio *uio, int flags)
* instead of going through read/write *
\*******************************************************/
static int
-memmmap(dev_t dev, vm_offset_t offset, vm_offset_t *paddr, int prot)
+memmmap(dev_t dev, vm_offset_t offset, vm_paddr_t *paddr, int prot)
{
switch (minor(dev))
{
diff --git a/sys/i386/i386/mp_machdep.c b/sys/i386/i386/mp_machdep.c
index edd83e3..12d7578 100644
--- a/sys/i386/i386/mp_machdep.c
+++ b/sys/i386/i386/mp_machdep.c
@@ -2576,7 +2576,7 @@ ap_init(void)
if (PCPU_GET(cpuid) != apic_id) {
printf("SMP: cpuid = %d\n", PCPU_GET(cpuid));
printf("SMP: apic_id = %d\n", apic_id);
- printf("PTD[MPPTDI] = %p\n", (void *)PTD[MPPTDI]);
+ printf("PTD[MPPTDI] = %#jx\n", (uintmax_t)PTD[MPPTDI]);
panic("cpuid mismatch! boom!!");
}
diff --git a/sys/i386/i386/mptable.c b/sys/i386/i386/mptable.c
index edd83e3..12d7578 100644
--- a/sys/i386/i386/mptable.c
+++ b/sys/i386/i386/mptable.c
@@ -2576,7 +2576,7 @@ ap_init(void)
if (PCPU_GET(cpuid) != apic_id) {
printf("SMP: cpuid = %d\n", PCPU_GET(cpuid));
printf("SMP: apic_id = %d\n", apic_id);
- printf("PTD[MPPTDI] = %p\n", (void *)PTD[MPPTDI]);
+ printf("PTD[MPPTDI] = %#jx\n", (uintmax_t)PTD[MPPTDI]);
panic("cpuid mismatch! boom!!");
}
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index ae6c091..daa99c4 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -154,8 +154,8 @@ LIST_HEAD(pmaplist, pmap);
static struct pmaplist allpmaps;
static struct mtx allpmaps_lock;
-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? */
@@ -288,8 +288,8 @@ pmap_kmem_choose(vm_offset_t addr)
*/
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;
@@ -515,7 +515,7 @@ pmap_allocf(uma_zone_t zone, int bytes, u_int8_t *flags, int wait)
*/
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;
@@ -842,12 +842,12 @@ pmap_pte_quick(pmap, va)
* Extract the physical page address associated
* with the given map/virtual_address pair.
*/
-vm_offset_t
+vm_paddr_t
pmap_extract(pmap, va)
register pmap_t pmap;
vm_offset_t va;
{
- vm_offset_t rtval; /* XXX FIXME */
+ vm_paddr_t rtval;
vm_offset_t pdirindex;
if (pmap == 0)
@@ -878,7 +878,7 @@ pmap_extract(pmap, va)
* Note: not SMP coherent.
*/
PMAP_INLINE void
-pmap_kenter(vm_offset_t va, vm_offset_t pa)
+pmap_kenter(vm_offset_t va, vm_paddr_t pa)
{
pt_entry_t *pte;
@@ -912,7 +912,7 @@ pmap_kremove(vm_offset_t va)
* region.
*/
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)
{
vm_offset_t va, sva;
@@ -1295,7 +1295,7 @@ pmap_pinit(pmap)
register struct pmap *pmap;
{
vm_page_t ptdpg[NPGPTD];
- vm_offset_t pa;
+ vm_paddr_t pa;
int i;
/*
@@ -1376,7 +1376,8 @@ _pmap_allocpte(pmap, ptepindex)
pmap_t pmap;
unsigned ptepindex;
{
- vm_offset_t pteva, ptepa; /* XXXPA */
+ vm_paddr_t ptepa;
+ vm_offset_t pteva;
vm_page_t m;
/*
@@ -1559,7 +1560,7 @@ pmap_growkernel(vm_offset_t addr)
{
struct pmap *pmap;
int s;
- vm_offset_t ptppaddr;
+ vm_paddr_t ptppaddr;
vm_page_t nkpg;
pd_entry_t newpdir;
@@ -2044,9 +2045,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;
register pt_entry_t *pte;
- vm_offset_t opa;
+ vm_paddr_t opa;
pt_entry_t origpte, newpte;
vm_page_t mpte;
@@ -2086,8 +2087,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=%#jx, va=%#x\n",
+ (uintmax_t)pmap->pm_pdir[PTDPTDI], va);
}
pa = VM_PAGE_TO_PHYS(m) & PG_FRAME;
@@ -2219,7 +2220,7 @@ static vm_page_t
pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte)
{
pt_entry_t *pte;
- vm_offset_t pa;
+ vm_paddr_t pa;
/*
* In the case that a page table page is not
@@ -2960,11 +2961,11 @@ pmap_remove_pages(pmap, sva, eva)
m = PHYS_TO_VM_PAGE(tpte);
KASSERT(m->phys_addr == (tpte & PG_FRAME),
- ("vm_page_t %p phys_addr mismatch %08x %08x",
- m, m->phys_addr, tpte));
+ ("vm_page_t %p phys_addr mismatch %016jx %016jx",
+ m, (uintmax_t)m->phys_addr, (uintmax_t)tpte));
KASSERT(m < &vm_page_array[vm_page_array_size],
- ("pmap_remove_pages: bad tpte %x", tpte));
+ ("pmap_remove_pages: bad tpte %#jx", (uintmax_t)tpte));
pv->pv_pmap->pm_stats.resident_count--;
@@ -3231,7 +3232,7 @@ i386_protection_init()
*/
void *
pmap_mapdev(pa, size)
- vm_offset_t pa;
+ vm_paddr_t pa;
vm_size_t size;
{
vm_offset_t va, tmpva, offset;
@@ -3293,7 +3294,7 @@ pmap_mincore(pmap, addr)
}
if ((pte = *ptep) != 0) {
- vm_offset_t pa;
+ vm_paddr_t pa;
val = MINCORE_INCORE;
if ((pte & PG_MANAGED) == 0)
@@ -3455,7 +3456,7 @@ pads(pm)
pmap_t pm;
{
int i, j;
- vm_offset_t va;
+ vm_paddr_t va;
pt_entry_t *ptep;
if (pm == kernel_pmap)
@@ -3477,7 +3478,7 @@ pads(pm)
void
pmap_pvdump(pa)
- vm_offset_t pa;
+ vm_paddr_t pa;
{
pv_entry_t pv;
vm_page_t m;
diff --git a/sys/i386/i386/vm86.c b/sys/i386/i386/vm86.c
index dd7624f..72dca8b 100644
--- a/sys/i386/i386/vm86.c
+++ b/sys/i386/i386/vm86.c
@@ -599,7 +599,7 @@ vm86_datacall(intnum, vmf, vmc)
struct vm86context *vmc;
{
pt_entry_t *pte = (pt_entry_t *)vm86paddr;
- u_int page;
+ vm_paddr_t page;
int i, entry, retval;
mtx_lock(&vm86_lock);
diff --git a/sys/i386/i386/vm_machdep.c b/sys/i386/i386/vm_machdep.c
index 45148e9..fdd9568 100644
--- a/sys/i386/i386/vm_machdep.c
+++ b/sys/i386/i386/vm_machdep.c
@@ -405,15 +405,15 @@ cpu_wait(p)
/*
* 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);
}
/*
diff --git a/sys/i386/include/_types.h b/sys/i386/include/_types.h
index 847d9fd..ad57438 100644
--- a/sys/i386/include/_types.h
+++ b/sys/i386/include/_types.h
@@ -102,6 +102,7 @@ typedef __uint64_t __uint_least64_t;
typedef __uint32_t __u_register_t;
typedef __uint32_t __vm_offset_t;
typedef __int64_t __vm_ooffset_t;
+typedef __uint32_t __vm_paddr_t;
typedef __uint64_t __vm_pindex_t;
typedef __uint32_t __vm_size_t;
diff --git a/sys/i386/include/md_var.h b/sys/i386/include/md_var.h
index 5f52c259..9143d19 100644
--- a/sys/i386/include/md_var.h
+++ b/sys/i386/include/md_var.h
@@ -96,7 +96,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 swi_vm(void *);
int user_dbreg_trap(void);
diff --git a/sys/i386/include/mptable.h b/sys/i386/include/mptable.h
index edd83e3..12d7578 100644
--- a/sys/i386/include/mptable.h
+++ b/sys/i386/include/mptable.h
@@ -2576,7 +2576,7 @@ ap_init(void)
if (PCPU_GET(cpuid) != apic_id) {
printf("SMP: cpuid = %d\n", PCPU_GET(cpuid));
printf("SMP: apic_id = %d\n", apic_id);
- printf("PTD[MPPTDI] = %p\n", (void *)PTD[MPPTDI]);
+ printf("PTD[MPPTDI] = %#jx\n", (uintmax_t)PTD[MPPTDI]);
panic("cpuid mismatch! boom!!");
}
diff --git a/sys/i386/include/param.h b/sys/i386/include/param.h
index 54fe27a..4da42a9 100644
--- a/sys/i386/include/param.h
+++ b/sys/i386/include/param.h
@@ -127,14 +127,14 @@
*/
#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))
diff --git a/sys/i386/include/pmap.h b/sys/i386/include/pmap.h
index 92493e1..8688b46 100644
--- a/sys/i386/include/pmap.h
+++ b/sys/i386/include/pmap.h
@@ -70,7 +70,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 */
@@ -168,10 +168,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 {
@@ -237,19 +238,19 @@ 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_kenter(vm_offset_t va, vm_offset_t pa);
+void pmap_bootstrap(vm_paddr_t, vm_paddr_t);
+void pmap_kenter(vm_offset_t va, vm_paddr_t pa);
void pmap_kremove(vm_offset_t);
-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);
pt_entry_t *pmap_pte(pmap_t, vm_offset_t) __pure2;
void pmap_set_opt(void);
diff --git a/sys/i386/isa/isa_dma.c b/sys/i386/isa/isa_dma.c
index 3b6e231..381bd75 100644
--- a/sys/i386/isa/isa_dma.c
+++ b/sys/i386/isa/isa_dma.c
@@ -213,7 +213,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;
@@ -373,7 +373,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);
GIANT_REQUIRED;
diff --git a/sys/i386/isa/pcvt/pcvt_drv.c b/sys/i386/isa/pcvt/pcvt_drv.c
index e795180..b5d0063 100644
--- a/sys/i386/isa/pcvt/pcvt_drv.c
+++ b/sys/i386/isa/pcvt/pcvt_drv.c
@@ -417,7 +417,7 @@ pcvt_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td)
* driver mmap
*---------------------------------------------------------------------------*/
static int
-pcvt_mmap(dev_t dev, vm_offset_t offset, vm_offset_t *paddr, int nprot)
+pcvt_mmap(dev_t dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot)
{
if (offset > 0x20000 - PAGE_SIZE)
return -1;
diff --git a/sys/i386/isa/spigot.c b/sys/i386/isa/spigot.c
index 1a7bfec..2cbdc39 100644
--- a/sys/i386/isa/spigot.c
+++ b/sys/i386/isa/spigot.c
@@ -268,7 +268,7 @@ struct spigot_softc *ss = (struct spigot_softc *)&spigot_softc[unit];
}
static int
-spigot_mmap(dev_t dev, vm_offset_t offset, vm_offset_t *paddr, int nprot)
+spigot_mmap(dev_t dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot)
{
struct spigot_softc *ss = (struct spigot_softc *)&spigot_softc[0];
OpenPOWER on IntegriCloud