0001
0002
0003 #ifndef __ASM_CSKY_PAGE_H
0004 #define __ASM_CSKY_PAGE_H
0005
0006 #include <asm/setup.h>
0007 #include <asm/cache.h>
0008 #include <linux/const.h>
0009
0010
0011
0012
0013 #define PAGE_SHIFT 12
0014 #define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT)
0015 #define PAGE_MASK (~(PAGE_SIZE - 1))
0016 #define THREAD_SIZE (PAGE_SIZE * 2)
0017 #define THREAD_MASK (~(THREAD_SIZE - 1))
0018 #define THREAD_SHIFT (PAGE_SHIFT + 1)
0019
0020
0021
0022
0023
0024
0025
0026
0027 #define PAGE_OFFSET CONFIG_PAGE_OFFSET
0028 #define SSEG_SIZE 0x20000000
0029 #define LOWMEM_LIMIT (SSEG_SIZE * 2)
0030
0031 #define PHYS_OFFSET_OFFSET (CONFIG_DRAM_BASE & (SSEG_SIZE - 1))
0032
0033 #ifndef __ASSEMBLY__
0034
0035 #include <linux/pfn.h>
0036
0037 #define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
0038 #define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT)
0039
0040 #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET && \
0041 (void *)(kaddr) < high_memory)
0042 #define pfn_valid(pfn) ((pfn) >= ARCH_PFN_OFFSET && ((pfn) - ARCH_PFN_OFFSET) < max_mapnr)
0043
0044 extern void *memset(void *dest, int c, size_t l);
0045 extern void *memcpy(void *to, const void *from, size_t l);
0046
0047 #define clear_page(page) memset((page), 0, PAGE_SIZE)
0048 #define copy_page(to, from) memcpy((to), (from), PAGE_SIZE)
0049
0050 #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
0051 #define phys_to_page(paddr) (pfn_to_page(PFN_DOWN(paddr)))
0052
0053 struct page;
0054
0055 #include <abi/page.h>
0056
0057 struct vm_area_struct;
0058
0059 typedef struct { unsigned long pte_low; } pte_t;
0060 #define pte_val(x) ((x).pte_low)
0061
0062 typedef struct { unsigned long pgd; } pgd_t;
0063 typedef struct { unsigned long pgprot; } pgprot_t;
0064 typedef struct page *pgtable_t;
0065
0066 #define pgd_val(x) ((x).pgd)
0067 #define pgprot_val(x) ((x).pgprot)
0068
0069 #define ptep_buddy(x) ((pte_t *)((unsigned long)(x) ^ sizeof(pte_t)))
0070
0071 #define __pte(x) ((pte_t) { (x) })
0072 #define __pgd(x) ((pgd_t) { (x) })
0073 #define __pgprot(x) ((pgprot_t) { (x) })
0074
0075 extern unsigned long va_pa_offset;
0076
0077 #define ARCH_PFN_OFFSET PFN_DOWN(va_pa_offset + PHYS_OFFSET_OFFSET)
0078
0079 #define __pa(x) ((unsigned long)(x) - PAGE_OFFSET + va_pa_offset)
0080 #define __va(x) ((void *)((unsigned long)(x) + PAGE_OFFSET - va_pa_offset))
0081
0082 #define __pa_symbol(x) __pa(RELOC_HIDE((unsigned long)(x), 0))
0083
0084 #define MAP_NR(x) PFN_DOWN((unsigned long)(x) - PAGE_OFFSET - \
0085 PHYS_OFFSET_OFFSET)
0086 #define virt_to_page(x) (mem_map + MAP_NR(x))
0087
0088 #define pfn_to_kaddr(x) __va(PFN_PHYS(x))
0089
0090 #include <asm-generic/memory_model.h>
0091 #include <asm-generic/getorder.h>
0092
0093 #endif
0094 #endif