linux-bk/include/asm-alpha/page.h
<<
>>
Prefs
   1#ifndef _ALPHA_PAGE_H
   2#define _ALPHA_PAGE_H
   3
   4#include <asm/pal.h>
   5
   6/* PAGE_SHIFT determines the page size */
   7#define PAGE_SHIFT      13
   8#define PAGE_SIZE       (1UL << PAGE_SHIFT)
   9#define PAGE_MASK       (~(PAGE_SIZE-1))
  10
  11#ifdef __KERNEL__
  12
  13#ifndef __ASSEMBLY__
  14
  15#define STRICT_MM_TYPECHECKS
  16
  17extern void clear_page(void *page);
  18#define clear_user_page(page, vaddr, pg)        clear_page(page)
  19
  20extern void copy_page(void * _to, void * _from);
  21#define copy_user_page(to, from, vaddr, pg)     copy_page(to, from)
  22
  23#ifdef STRICT_MM_TYPECHECKS
  24/*
  25 * These are used to make use of C type-checking..
  26 */
  27typedef struct { unsigned long pte; } pte_t;
  28typedef struct { unsigned long pmd; } pmd_t;
  29typedef struct { unsigned long pgd; } pgd_t;
  30typedef struct { unsigned long pgprot; } pgprot_t;
  31
  32#define pte_val(x)      ((x).pte)
  33#define pmd_val(x)      ((x).pmd)
  34#define pgd_val(x)      ((x).pgd)
  35#define pgprot_val(x)   ((x).pgprot)
  36
  37#define __pte(x)        ((pte_t) { (x) } )
  38#define __pmd(x)        ((pmd_t) { (x) } )
  39#define __pgd(x)        ((pgd_t) { (x) } )
  40#define __pgprot(x)     ((pgprot_t) { (x) } )
  41
  42#else
  43/*
  44 * .. while these make it easier on the compiler
  45 */
  46typedef unsigned long pte_t;
  47typedef unsigned long pmd_t;
  48typedef unsigned long pgd_t;
  49typedef unsigned long pgprot_t;
  50
  51#define pte_val(x)      (x)
  52#define pmd_val(x)      (x)
  53#define pgd_val(x)      (x)
  54#define pgprot_val(x)   (x)
  55
  56#define __pte(x)        (x)
  57#define __pgd(x)        (x)
  58#define __pgprot(x)     (x)
  59
  60#endif /* STRICT_MM_TYPECHECKS */
  61
  62/* Pure 2^n version of get_order */
  63extern __inline__ int get_order(unsigned long size)
  64{
  65        int order;
  66
  67        size = (size-1) >> (PAGE_SHIFT-1);
  68        order = -1;
  69        do {
  70                size >>= 1;
  71                order++;
  72        } while (size);
  73        return order;
  74}
  75
  76#ifdef USE_48_BIT_KSEG
  77#define PAGE_OFFSET             0xffff800000000000UL
  78#else
  79#define PAGE_OFFSET             0xfffffc0000000000UL
  80#endif
  81
  82#else
  83
  84#ifdef USE_48_BIT_KSEG
  85#define PAGE_OFFSET             0xffff800000000000
  86#else
  87#define PAGE_OFFSET             0xfffffc0000000000
  88#endif
  89
  90#endif /* !__ASSEMBLY__ */
  91
  92/* to align the pointer to the (next) page boundary */
  93#define PAGE_ALIGN(addr)        (((addr)+PAGE_SIZE-1)&PAGE_MASK)
  94
  95#define __pa(x)                 ((unsigned long) (x) - PAGE_OFFSET)
  96#define __va(x)                 ((void *)((unsigned long) (x) + PAGE_OFFSET))
  97#ifndef CONFIG_DISCONTIGMEM
  98#define pfn_to_page(pfn)        (mem_map + (pfn))
  99#define page_to_pfn(page)       ((unsigned long)((page) - mem_map))
 100#define virt_to_page(kaddr)     pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
 101
 102#define pfn_valid(pfn)          ((pfn) < max_mapnr)
 103#define virt_addr_valid(kaddr)  pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
 104#endif /* CONFIG_DISCONTIGMEM */
 105
 106#define VM_DATA_DEFAULT_FLAGS           (VM_READ | VM_WRITE | VM_EXEC | \
 107                                         VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
 108
 109#endif /* __KERNEL__ */
 110
 111#endif /* _ALPHA_PAGE_H */
 112
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.