~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-sh/page.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef __ASM_SH_PAGE_H
  2 #define __ASM_SH_PAGE_H
  3 
  4 /*
  5  * Copyright (C) 1999  Niibe Yutaka
  6  */
  7 
  8 /*
  9    [ P0/U0 (virtual) ]          0x00000000     <------ User space
 10    [ P1 (fixed)   cached ]      0x80000000     <------ Kernel space
 11    [ P2 (fixed)  non-cachable]  0xA0000000     <------ Physical access
 12    [ P3 (virtual) cached]       0xC0000000     <------ vmalloced area
 13    [ P4 control   ]             0xE0000000
 14  */
 15 
 16 #include <linux/config.h>
 17 
 18 /* PAGE_SHIFT determines the page size */
 19 #define PAGE_SHIFT      12
 20 #define PAGE_SIZE       (1UL << PAGE_SHIFT)
 21 #define PAGE_MASK       (~(PAGE_SIZE-1))
 22 #define PTE_MASK        PAGE_MASK
 23 
 24 #ifdef __KERNEL__
 25 #ifndef __ASSEMBLY__
 26 
 27 #define clear_page(page)        memset((void *)(page), 0, PAGE_SIZE)
 28 #define copy_page(to,from)      memcpy((void *)(to), (void *)(from), PAGE_SIZE)
 29 
 30 #if defined(__sh3__)
 31 #define clear_user_page(page, vaddr)    clear_page(page)
 32 #define copy_user_page(to, from, vaddr) copy_page(to, from)
 33 #elif defined(__SH4__)
 34 extern void clear_user_page(void *to, unsigned long address);
 35 extern void copy_user_page(void *to, void *from, unsigned long address);
 36 #endif
 37 
 38 /*
 39  * These are used to make use of C type-checking..
 40  */
 41 typedef struct { unsigned long pte; } pte_t;
 42 typedef struct { unsigned long pmd; } pmd_t;
 43 typedef struct { unsigned long pgd; } pgd_t;
 44 typedef struct { unsigned long pgprot; } pgprot_t;
 45 
 46 #define pte_val(x)      ((x).pte)
 47 #define pmd_val(x)      ((x).pmd)
 48 #define pgd_val(x)      ((x).pgd)
 49 #define pgprot_val(x)   ((x).pgprot)
 50 
 51 #define __pte(x) ((pte_t) { (x) } )
 52 #define __pmd(x) ((pmd_t) { (x) } )
 53 #define __pgd(x) ((pgd_t) { (x) } )
 54 #define __pgprot(x)     ((pgprot_t) { (x) } )
 55 
 56 #endif /* !__ASSEMBLY__ */
 57 
 58 /* to align the pointer to the (next) page boundary */
 59 #define PAGE_ALIGN(addr)        (((addr)+PAGE_SIZE-1)&PAGE_MASK)
 60 
 61 /*
 62  * IF YOU CHANGE THIS, PLEASE ALSO CHANGE
 63  *
 64  *      arch/sh/vmlinux.lds.S
 65  *
 66  * which has the same constant encoded..
 67  */
 68 
 69 #define __MEMORY_START          CONFIG_MEMORY_START
 70 
 71 #define PAGE_OFFSET             (0x80000000UL)
 72 #define __pa(x)                 ((unsigned long)(x)-PAGE_OFFSET)
 73 #define __va(x)                 ((void *)((unsigned long)(x)+PAGE_OFFSET))
 74 #define virt_to_page(kaddr)     (mem_map + ((__pa(kaddr)-__MEMORY_START) >> PAGE_SHIFT))
 75 #define VALID_PAGE(page)        ((page - mem_map) < max_mapnr)
 76 
 77 #ifndef __ASSEMBLY__
 78 
 79 /*
 80  * Tell the user there is some problem.
 81  */
 82 #define BUG() do { \
 83         printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
 84         asm volatile("nop"); \
 85 } while (0)
 86 
 87 #define PAGE_BUG(page) do { \
 88         BUG(); \
 89 } while (0)
 90 
 91 /* Pure 2^n version of get_order */
 92 extern __inline__ int get_order(unsigned long size)
 93 {
 94         int order;
 95 
 96         size = (size-1) >> (PAGE_SHIFT-1);
 97         order = -1;
 98         do {
 99                 size >>= 1;
100                 order++;
101         } while (size);
102         return order;
103 }
104 
105 #endif
106 
107 #endif /* __KERNEL__ */
108 
109 #endif /* __ASM_SH_PAGE_H */
110 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.