0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef _SPARC_PAGE_H
0010 #define _SPARC_PAGE_H
0011
0012 #include <linux/const.h>
0013
0014 #define PAGE_SHIFT 12
0015 #define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT)
0016 #define PAGE_MASK (~(PAGE_SIZE-1))
0017
0018 #ifndef __ASSEMBLY__
0019
0020 #define clear_page(page) memset((void *)(page), 0, PAGE_SIZE)
0021 #define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE)
0022 #define clear_user_page(addr, vaddr, page) \
0023 do { clear_page(addr); \
0024 sparc_flush_page_to_ram(page); \
0025 } while (0)
0026 #define copy_user_page(to, from, vaddr, page) \
0027 do { copy_page(to, from); \
0028 sparc_flush_page_to_ram(page); \
0029 } while (0)
0030
0031
0032
0033
0034
0035
0036
0037
0038 struct sparc_phys_banks {
0039 unsigned long base_addr;
0040 unsigned long num_bytes;
0041 };
0042
0043 #define SPARC_PHYS_BANKS 32
0044
0045 extern struct sparc_phys_banks sp_banks[SPARC_PHYS_BANKS+1];
0046
0047
0048
0049
0050
0051 #ifdef STRICT_MM_TYPECHECKS
0052
0053
0054
0055 typedef struct { unsigned long pte; } pte_t;
0056 typedef struct { unsigned long iopte; } iopte_t;
0057 typedef struct { unsigned long pmd; } pmd_t;
0058 typedef struct { unsigned long pgd; } pgd_t;
0059 typedef struct { unsigned long ctxd; } ctxd_t;
0060 typedef struct { unsigned long pgprot; } pgprot_t;
0061 typedef struct { unsigned long iopgprot; } iopgprot_t;
0062
0063 #define pte_val(x) ((x).pte)
0064 #define iopte_val(x) ((x).iopte)
0065 #define pmd_val(x) ((x).pmd)
0066 #define pgd_val(x) ((x).pgd)
0067 #define ctxd_val(x) ((x).ctxd)
0068 #define pgprot_val(x) ((x).pgprot)
0069 #define iopgprot_val(x) ((x).iopgprot)
0070
0071 #define __pte(x) ((pte_t) { (x) } )
0072 #define __pmd(x) ((pmd_t) { { (x) }, })
0073 #define __iopte(x) ((iopte_t) { (x) } )
0074 #define __pgd(x) ((pgd_t) { (x) } )
0075 #define __ctxd(x) ((ctxd_t) { (x) } )
0076 #define __pgprot(x) ((pgprot_t) { (x) } )
0077 #define __iopgprot(x) ((iopgprot_t) { (x) } )
0078
0079 #else
0080
0081
0082
0083 typedef unsigned long pte_t;
0084 typedef unsigned long iopte_t;
0085 typedef unsigned long pmd_t;
0086 typedef unsigned long pgd_t;
0087 typedef unsigned long ctxd_t;
0088 typedef unsigned long pgprot_t;
0089 typedef unsigned long iopgprot_t;
0090
0091 #define pte_val(x) (x)
0092 #define iopte_val(x) (x)
0093 #define pmd_val(x) (x)
0094 #define pgd_val(x) (x)
0095 #define ctxd_val(x) (x)
0096 #define pgprot_val(x) (x)
0097 #define iopgprot_val(x) (x)
0098
0099 #define __pte(x) (x)
0100 #define __pmd(x) (x)
0101 #define __iopte(x) (x)
0102 #define __pgd(x) (x)
0103 #define __ctxd(x) (x)
0104 #define __pgprot(x) (x)
0105 #define __iopgprot(x) (x)
0106
0107 #endif
0108
0109 typedef pte_t *pgtable_t;
0110
0111 #define TASK_UNMAPPED_BASE 0x50000000
0112
0113 #else
0114
0115 #define __pgprot(x) (x)
0116
0117 #endif
0118
0119 #define PAGE_OFFSET 0xf0000000
0120 #ifndef __ASSEMBLY__
0121 extern unsigned long phys_base;
0122 extern unsigned long pfn_base;
0123 #endif
0124 #define __pa(x) ((unsigned long)(x) - PAGE_OFFSET + phys_base)
0125 #define __va(x) ((void *)((unsigned long) (x) - phys_base + PAGE_OFFSET))
0126
0127 #define virt_to_phys __pa
0128 #define phys_to_virt __va
0129
0130 #define ARCH_PFN_OFFSET (pfn_base)
0131 #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
0132
0133 #define pfn_valid(pfn) (((pfn) >= (pfn_base)) && (((pfn)-(pfn_base)) < max_mapnr))
0134 #define virt_addr_valid(kaddr) ((((unsigned long)(kaddr)-PAGE_OFFSET)>>PAGE_SHIFT) < max_mapnr)
0135
0136 #include <asm-generic/memory_model.h>
0137 #include <asm-generic/getorder.h>
0138
0139 #endif