1 | /* |
---|
2 | * page.h |
---|
3 | * |
---|
4 | * PowerPC memory management structures |
---|
5 | * |
---|
6 | * It is a stripped down version of linux ppc file... |
---|
7 | * |
---|
8 | * Copyright (C) 1999 Eric Valette (valette@crf.canon.fr) |
---|
9 | * Canon Centre Recherche France. |
---|
10 | * |
---|
11 | * The license and distribution terms for this file may be |
---|
12 | * found in found in the file LICENSE in this distribution or at |
---|
13 | * http://www.OARcorp.com/rtems/license.html. |
---|
14 | * |
---|
15 | * $Id$ |
---|
16 | */ |
---|
17 | |
---|
18 | #ifndef _PPC_PAGE_H |
---|
19 | #define _PPC_PAGE_H |
---|
20 | |
---|
21 | /* PAGE_SHIFT determines the page size */ |
---|
22 | #define PAGE_SHIFT 12 |
---|
23 | #define PAGE_SIZE (1UL << PAGE_SHIFT) |
---|
24 | #define PAGE_MASK (~(PAGE_SIZE-1)) |
---|
25 | |
---|
26 | #define PAGE_OFFSET 0xc0000000 |
---|
27 | |
---|
28 | |
---|
29 | #ifndef ASM |
---|
30 | /* |
---|
31 | * .. while these make it easier on the compiler |
---|
32 | */ |
---|
33 | typedef unsigned long pte_t; |
---|
34 | typedef unsigned long pmd_t; |
---|
35 | typedef unsigned long pgd_t; |
---|
36 | typedef unsigned long pgprot_t; |
---|
37 | |
---|
38 | #define pte_val(x) (x) |
---|
39 | #define pmd_val(x) (x) |
---|
40 | #define pgd_val(x) (x) |
---|
41 | #define pgprot_val(x) (x) |
---|
42 | |
---|
43 | #define __pte(x) (x) |
---|
44 | #define __pmd(x) (x) |
---|
45 | #define __pgd(x) (x) |
---|
46 | #define __pgprot(x) (x) |
---|
47 | |
---|
48 | |
---|
49 | /* align addr on a size boundry - adjust address up if needed -- Cort */ |
---|
50 | #define _ALIGN(addr,size) (((addr)+size-1)&(~(size-1))) |
---|
51 | |
---|
52 | /* to align the pointer to the (next) page boundary */ |
---|
53 | #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) |
---|
54 | |
---|
55 | |
---|
56 | #define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) |
---|
57 | #define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE) |
---|
58 | /* map phys->virtual and virtual->phys for RAM pages */ |
---|
59 | |
---|
60 | #define __pa(x) ((unsigned long)(x)-PAGE_OFFSET) |
---|
61 | #define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) |
---|
62 | |
---|
63 | #define MAP_NR(addr) (((unsigned long)addr-PAGE_OFFSET) >> PAGE_SHIFT) |
---|
64 | #define MAP_PAGE_RESERVED (1<<15) |
---|
65 | |
---|
66 | extern unsigned long get_zero_page_fast(void); |
---|
67 | #endif /* ASM */ |
---|
68 | #endif /* _PPC_PAGE_H */ |
---|