--- Gnu-Mach/i386/intel/pmap.h 2020/09/02 04:49:25 1.1.1.4 +++ Gnu-Mach/i386/intel/pmap.h 2020/09/02 04:55:41 1.1.1.5 @@ -64,11 +64,7 @@ * i386/i486 Page Table Entry */ -#if PAE -typedef unsigned long long pt_entry_t; -#else /* PAE */ -typedef unsigned int pt_entry_t; -#endif /* PAE */ +typedef phys_addr_t pt_entry_t; #define PT_ENTRY_NULL ((pt_entry_t *) 0) #endif /* __ASSEMBLER__ */ @@ -93,11 +89,14 @@ typedef unsigned int pt_entry_t; /* * Convert linear offset to page descriptor index */ +#define lin2pdenum(a) (((a) >> PDESHIFT) & PDEMASK) + #if PAE -/* Making it include the page directory pointer table index too */ -#define lin2pdenum(a) (((a) >> PDESHIFT) & 0x7ff) +/* Special version assuming contiguous page directories. Making it + include the page directory pointer table index too. */ +#define lin2pdenum_cont(a) (((a) >> PDESHIFT) & 0x7ff) #else -#define lin2pdenum(a) (((a) >> PDESHIFT) & PDEMASK) +#define lin2pdenum_cont(a) lin2pdenum(a) #endif /* @@ -163,10 +162,11 @@ typedef volatile long cpu_set; /* set of /* changed by other processors */ struct pmap { +#if ! PAE pt_entry_t *dirbase; /* page directory table */ -#if PAE +#else pt_entry_t *pdpbase; /* page directory pointer table */ -#endif /* PAE */ +#endif /* ! PAE */ int ref_count; /* reference count */ decl_simple_lock_data(,lock) /* lock on map */ @@ -447,19 +447,19 @@ extern void pmap_unmap_page_zero (void); /* * pmap_zero_page zeros the specified (machine independent) page. */ -extern void pmap_zero_page (vm_offset_t); +extern void pmap_zero_page (phys_addr_t); /* * pmap_copy_page copies the specified (machine independent) pages. */ -extern void pmap_copy_page (vm_offset_t, vm_offset_t); +extern void pmap_copy_page (phys_addr_t, phys_addr_t); /* * kvtophys(addr) * * Convert a kernel virtual address to a physical address */ -extern vm_offset_t kvtophys (vm_offset_t); +extern phys_addr_t kvtophys (vm_offset_t); void pmap_remove_range( pmap_t pmap,