1#ifndef _ALPHA_PAGE_H
2#define _ALPHA_PAGE_H
3
4#include <asm/pal.h>
5
6
7#define PAGE_SHIFT 13
8#define PAGE_SIZE (1UL << PAGE_SHIFT)
9#define PAGE_MASK (~(PAGE_SIZE-1))
10
11#ifdef __KERNEL__
12
13#ifndef __ASSEMBLY__
14
15#define STRICT_MM_TYPECHECKS
16
17extern void clear_page(void *page);
18#define clear_user_page(page, vaddr, pg) clear_page(page)
19
20extern void copy_page(void * _to, void * _from);
21#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
22
23#ifdef STRICT_MM_TYPECHECKS
24
25
26
27typedef struct { unsigned long pte; } pte_t;
28typedef struct { unsigned long pmd; } pmd_t;
29typedef struct { unsigned long pgd; } pgd_t;
30typedef struct { unsigned long pgprot; } pgprot_t;
31
32#define pte_val(x) ((x).pte)
33#define pmd_val(x) ((x).pmd)
34#define pgd_val(x) ((x).pgd)
35#define pgprot_val(x) ((x).pgprot)
36
37#define __pte(x) ((pte_t) { (x) } )
38#define __pmd(x) ((pmd_t) { (x) } )
39#define __pgd(x) ((pgd_t) { (x) } )
40#define __pgprot(x) ((pgprot_t) { (x) } )
41
42#else
43
44
45
46typedef unsigned long pte_t;
47typedef unsigned long pmd_t;
48typedef unsigned long pgd_t;
49typedef unsigned long pgprot_t;
50
51#define pte_val(x) (x)
52#define pmd_val(x) (x)
53#define pgd_val(x) (x)
54#define pgprot_val(x) (x)
55
56#define __pte(x) (x)
57#define __pgd(x) (x)
58#define __pgprot(x) (x)
59
60#endif
61
62
63extern __inline__ int get_order(unsigned long size)
64{
65 int order;
66
67 size = (size-1) >> (PAGE_SHIFT-1);
68 order = -1;
69 do {
70 size >>= 1;
71 order++;
72 } while (size);
73 return order;
74}
75
76#ifdef USE_48_BIT_KSEG
77#define PAGE_OFFSET 0xffff800000000000UL
78#else
79#define PAGE_OFFSET 0xfffffc0000000000UL
80#endif
81
82#else
83
84#ifdef USE_48_BIT_KSEG
85#define PAGE_OFFSET 0xffff800000000000
86#else
87#define PAGE_OFFSET 0xfffffc0000000000
88#endif
89
90#endif
91
92
93#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)
94
95#define __pa(x) ((unsigned long) (x) - PAGE_OFFSET)
96#define __va(x) ((void *)((unsigned long) (x) + PAGE_OFFSET))
97#ifndef CONFIG_DISCONTIGMEM
98#define pfn_to_page(pfn) (mem_map + (pfn))
99#define page_to_pfn(page) ((unsigned long)((page) - mem_map))
100#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
101
102#define pfn_valid(pfn) ((pfn) < max_mapnr)
103#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
104#endif
105
106#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
107 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
108
109#endif
110
111#endif
112