diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1995-11-14 08:00:00 +0000 |
---|---|---|
committer | <ralf@linux-mips.org> | 1995-11-14 08:00:00 +0000 |
commit | e7c2a72e2680827d6a733931273a93461c0d8d1b (patch) | |
tree | c9abeda78ef7504062bb2e816bcf3e3c9d680112 /include/asm-alpha/page.h | |
parent | ec6044459060a8c9ce7f64405c465d141898548c (diff) |
Import of Linux/MIPS 1.3.0
Diffstat (limited to 'include/asm-alpha/page.h')
-rw-r--r-- | include/asm-alpha/page.h | 84 |
1 files changed, 55 insertions, 29 deletions
diff --git a/include/asm-alpha/page.h b/include/asm-alpha/page.h index 6a09532f9..316bc9dd1 100644 --- a/include/asm-alpha/page.h +++ b/include/asm-alpha/page.h @@ -1,6 +1,53 @@ #ifndef _ALPHA_PAGE_H #define _ALPHA_PAGE_H +/* PAGE_SHIFT determines the page size */ +#define PAGE_SHIFT 13 +#define PAGE_SIZE (1UL << PAGE_SHIFT) +#define PAGE_MASK (~(PAGE_SIZE-1)) + +#ifdef __KERNEL__ + +#define CONFIG_STRICT_MM_TYPECHECKS + +#ifdef CONFIG_STRICT_MM_TYPECHECKS +/* + * These are used to make use of C type-checking.. + */ +typedef struct { unsigned long pte; } pte_t; +typedef struct { unsigned long pmd; } pmd_t; +typedef struct { unsigned long pgd; } pgd_t; +typedef struct { unsigned long pgprot; } pgprot_t; + +#define pte_val(x) ((x).pte) +#define pmd_val(x) ((x).pmd) +#define pgd_val(x) ((x).pgd) +#define pgprot_val(x) ((x).pgprot) + +#define __pte(x) ((pte_t) { (x) } ) +#define __pgd(x) ((pgd_t) { (x) } ) +#define __pgprot(x) ((pgprot_t) { (x) } ) + +#else +/* + * .. while these make it easier on the compiler + */ +typedef unsigned long pte_t; +typedef unsigned long pmd_t; +typedef unsigned long pgd_t; +typedef unsigned long pgprot_t; + +#define pte_val(x) (x) +#define pmd_val(x) (x) +#define pgd_val(x) (x) +#define pgprot_val(x) (x) + +#define __pte(x) (x) +#define __pgd(x) (x) +#define __pgprot(x) (x) + +#endif + #define invalidate_all() \ __asm__ __volatile__( \ "lda $16,-2($31)\n\t" \ @@ -13,37 +60,16 @@ __asm__ __volatile__( \ ".long 51" \ : : :"$1", "$16", "$17", "$22","$23","$24","$25") - /* PAGE_SHIFT determines the page size */ -#define PAGE_SHIFT 13 -#define PGDIR_SHIFT 23 -#define PAGE_SIZE (1UL << PAGE_SHIFT) -#define PGDIR_SIZE (1UL << PGDIR_SHIFT) +#define copy_page(from,to) memcpy((void *) to, (void *) from, PAGE_SIZE) -#ifdef __KERNEL__ - - /* number of bits that fit into a memory pointer */ -#define BITS_PER_PTR (8*sizeof(unsigned long)) - /* to mask away the intra-page address bits */ -#define PAGE_MASK (~(PAGE_SIZE-1)) - /* to mask away the intra-page address bits */ -#define PGDIR_MASK (~(PGDIR_SIZE-1)) - /* to align the pointer to the (next) page boundary */ +/* to align the pointer to the (next) page boundary */ #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) - /* to align the pointer to a pointer address */ -#define PTR_MASK (~(sizeof(void*)-1)) - - /* sizeof(void*)==1<<SIZEOF_PTR_LOG2 */ - /* 64-bit machines, beware! SRB. */ -#define SIZEOF_PTR_LOG2 4 - - /* to find an entry in a page-table-directory */ -#define PAGE_DIR_OFFSET(base,address) ((unsigned long*)((base)+\ - ((unsigned long)(address)>>(PAGE_SHIFT-SIZEOF_PTR_LOG2)*2&PTR_MASK&~PAGE_MASK))) - /* to find an entry in a page-table */ -#define PAGE_PTR(address) \ - ((unsigned long)(address)>>(PAGE_SHIFT-SIZEOF_PTR_LOG2)&PTR_MASK&~PAGE_MASK) - /* the no. of pointers that fit on a page */ -#define PTRS_PER_PAGE (PAGE_SIZE/sizeof(void*)) + +#define PAGE_OFFSET 0xFFFFFC0000000000 +#define MAP_NR(addr) ((((unsigned long) (addr)) - PAGE_OFFSET) >> PAGE_SHIFT) +#define MAP_PAGE_RESERVED (1<<31) + +typedef unsigned int mem_map_t; #endif /* __KERNEL__ */ |