Date: Wed, 20 Nov 2002 17:45:56 -0800 (PST) From: Peter Wemm <peter@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 21326 for review Message-ID: <200211210145.gAL1jutW021590@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=21326 Change 21326 by peter@peter_daintree on 2002/11/20 17:45:07 fill in some more blanks Affected files ... .. //depot/projects/hammer/sys/x86_64/include/param.h#4 edit Differences ... ==== //depot/projects/hammer/sys/x86_64/include/param.h#4 (text+ko) ==== @@ -90,30 +90,54 @@ #define ALIGN(p) _ALIGN(p) #define ALIGNED_POINTER(p,t) _ALIGNED_POINTER((p),(t)) +/* Size of the level 1 page table units */ +#define NPTEPG (PAGE_SIZE/(sizeof (pt_entry_t))) #define PAGE_SHIFT 12 /* LOG2(PAGE_SIZE) */ #define PAGE_SIZE (1<<PAGE_SHIFT) /* bytes/page */ #define PAGE_MASK (PAGE_SIZE-1) -#define NPTEPG (PAGE_SIZE/(sizeof (pt_entry_t))) +/* Size of the level 2 page directory units */ +#define NPDEPG (PAGE_SIZE/(sizeof (pd_entry_t))) +#define PDRSHIFT 21 /* LOG2(NBPDR) */ +#define NBPDR (1<<PDRSHIFT) /* bytes/page dir */ +#define PDRMASK (NBPDR-1) +/* Size of the level 3 page directory pointer table units */ +#define NPDPEPG (PAGE_SIZE/(sizeof (pdp_entry_t))) +#define PDPTSHIFT 30 /* LOG2(NBPDPT) */ +#define NBPDPT (1<<PDPTSHIFT) /* bytes/page dir ptr table */ +#define PDPTMASK (NBPDPT-1) +/* Size of the level 4 page-map level-4 table units */ +#define NPML4EPG (PAGE_SIZE/(sizeof (pml4_entry_t))) +#define PML4SHIFT 39 /* LOG2(NBPML4T) */ +#define NBPML4T (1ul<<PML4SHIFT)/* bytes/page map lev4 table */ +#define PML4MASK (NBPML4T-1) -#define KERNBASE 0x0000000000000000LL /* start of kernel virtual */ +/* + * 48 bit page virtual addresses have a "hole" where you + * have to sign extend the top bit. This puts the kernel + * at L4 entry 256, which corresponds to 0xffff800000000000, + * which is the sign extended form of 0x0000008000000000. + * There is a big "hole" from 0x0000008000000000 though + * 0xffff7fffffffffff. + */ +#define KERNBASE 0xffff800000000000ul /* start of kernel virtual */ #define BTOPKERNBASE ((u_long)KERNBASE >> PGSHIFT) #define IOPAGES 2 /* pages of i/o permission bitmap */ #ifndef KSTACK_PAGES -#define KSTACK_PAGES 2 /* pages of kstack (with pcb) */ +#define KSTACK_PAGES 4 /* pages of kstack (with pcb) */ #endif #define UAREA_PAGES 1 /* holds struct user WITHOUT PCB (see def.) */ -#define KSTACK_GUARD 1 /* compile in the kstack guard page */ +#define KSTACK_GUARD 1 /* compile in the kstack guard page */ /* * Mach derived conversion macros */ #define round_page(x) ((((unsigned long)(x)) + PAGE_MASK) & ~(PAGE_MASK)) #define trunc_page(x) ((unsigned long)(x) & ~(PAGE_MASK)) -#define trunc_4mpage(x) ((unsigned)(x) & ~PDRMASK) -#define round_4mpage(x) ((((unsigned)(x)) + PDRMASK) & ~PDRMASK) +#define trunc_2mpage(x) ((unsigned long)(x) & ~PDRMASK) +#define round_2mpage(x) ((((unsigned long)(x)) + PDRMASK) & ~PDRMASK) #define atop(x) ((unsigned long)(x) >> PAGE_SHIFT) #define ptoa(x) ((unsigned long)(x) << PAGE_SHIFT) @@ -121,7 +145,7 @@ #define x86_64_btop(x) ((unsigned long)(x) >> PAGE_SHIFT) #define x86_64_ptob(x) ((unsigned long)(x) << PAGE_SHIFT) -#define pgtok(x) ((x) * (PAGE_SIZE / 1024)) +#define pgtok(x) ((unsigned long)(x) * (PAGE_SIZE / 1024)) #endif /* !_MACHINE_PARAM_H_ */ #endif /* !_NO_NAMESPACE_POLLUTION */ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200211210145.gAL1jutW021590>