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

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

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

  1 /*
  2  *  include/asm-s390/page.h
  3  *
  4  *  S390 version
  5  *    Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
  6  *    Author(s): Hartmut Penner (hp@de.ibm.com)
  7  */
  8 
  9 #ifndef _S390_PAGE_H
 10 #define _S390_PAGE_H
 11 
 12 /* PAGE_SHIFT determines the page size */
 13 #define PAGE_SHIFT      12
 14 #define PAGE_SIZE       (1UL << PAGE_SHIFT)
 15 #define PAGE_MASK       (~(PAGE_SIZE-1))
 16 
 17 #ifdef __KERNEL__
 18 #ifndef __ASSEMBLY__
 19 
 20 #define STRICT_MM_TYPECHECKS
 21 
 22 #define BUG() do { \
 23         printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
 24         __asm__ __volatile__(".word 0x0000"); \
 25 } while (0)                                       
 26 
 27 #define PAGE_BUG(page) do { \
 28         BUG(); \
 29 } while (0)                      
 30 
 31 /* Pure 2^n version of get_order */
 32 extern __inline__ int get_order(unsigned long size)
 33 {
 34         int order;
 35 
 36         size = (size-1) >> (PAGE_SHIFT-1);
 37         order = -1;
 38         do {
 39                 size >>= 1;
 40                 order++;
 41         } while (size);
 42         return order;
 43 }
 44 
 45 /*
 46  * gcc uses builtin, i.e. MVCLE for both operations
 47  */
 48 
 49 #define clear_page(page)        memset((void *)(page), 0, PAGE_SIZE)
 50 #define copy_page(to,from)      memcpy((void *)(to), (void *)(from), PAGE_SIZE)
 51 
 52 #ifdef STRICT_MM_TYPECHECKS
 53 /*
 54  * These are used to make use of C type-checking..
 55  */
 56 typedef struct { unsigned long pte; } pte_t;
 57 typedef struct { unsigned long pmd; } pmd_t;
 58 typedef struct {
 59         unsigned long pgd0;
 60         unsigned long pgd1;
 61         unsigned long pgd2;
 62         unsigned long pgd3;
 63         } pgd_t;
 64 typedef struct { unsigned long pgprot; } pgprot_t;
 65 
 66 #define pte_val(x)      ((x).pte)
 67 #define pmd_val(x)      ((x).pmd)
 68 #define pgd_val(x)      ((x).pgd0)
 69 #define pgprot_val(x)   ((x).pgprot)
 70 
 71 #define __pte(x)        ((pte_t) { (x) } )
 72 #define __pmd(x)        ((pmd_t) { (x) } )
 73 #define __pgd(x)        ((pgd_t) { (x) } )
 74 #define __pgprot(x)     ((pgprot_t) { (x) } )
 75 
 76 #else
 77 /*
 78  * .. while these make it easier on the compiler
 79  */
 80 typedef unsigned long pte_t;
 81 typedef unsigned long pmd_t;
 82 typedef struct {
 83         unsigned long pgd0;
 84         unsigned long pgd1;
 85         unsigned long pgd2;
 86         unsigned long pgd3;
 87         } pgd_t;
 88 typedef unsigned long pgprot_t;
 89 
 90 #define pte_val(x)      (x)
 91 #define pmd_val(x)      (x)
 92 #define pgd_val(x)      (x)
 93 #define pgprot_val(x)   (x)
 94 
 95 #define __pte(x)        (x)
 96 #define __pmd(x)        (x)
 97 #define __pgd(x)        (x)
 98 #define __pgprot(x)     (x)
 99 
100 #endif
101 #endif                                 /* !__ASSEMBLY__                    */
102 
103 /* to align the pointer to the (next) page boundary */
104 #define PAGE_ALIGN(addr)        (((addr)+PAGE_SIZE-1)&PAGE_MASK)
105 
106 /*
107  *
108  *
109  */
110 
111 #define __PAGE_OFFSET           (0x0)
112 #define PAGE_OFFSET             ((unsigned long)__PAGE_OFFSET)
113 #define __pa(x)                 ((unsigned long)(x)-PAGE_OFFSET)
114 #define __va(x)                 ((void *)((unsigned long)(x)+PAGE_OFFSET))
115 #define virt_to_page(kaddr)     (mem_map + (__pa(kaddr) >> PAGE_SHIFT))
116 #define VALID_PAGE(page)        ((page - mem_map) < max_mapnr)
117 
118 #endif                                 /* __KERNEL__                       */
119 
120 #endif                                 /* _S390_PAGE_H                     */
121 

~ [ 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.