linux/arch/mips/include/asm/highmem.h
<<
>>
Prefs
   1/*
   2 * highmem.h: virtual kernel memory mappings for high memory
   3 *
   4 * Used in CONFIG_HIGHMEM systems for memory pages which
   5 * are not addressable by direct kernel virtual addresses.
   6 *
   7 * Copyright (C) 1999 Gerhard Wichert, Siemens AG
   8 *                    Gerhard.Wichert@pdb.siemens.de
   9 *
  10 *
  11 * Redesigned the x86 32-bit VM architecture to deal with
  12 * up to 16 Terabyte physical memory. With current x86 CPUs
  13 * we now support up to 64 Gigabytes physical RAM.
  14 *
  15 * Copyright (C) 1999 Ingo Molnar <mingo@redhat.com>
  16 */
  17#ifndef _ASM_HIGHMEM_H
  18#define _ASM_HIGHMEM_H
  19
  20#ifdef __KERNEL__
  21
  22#include <linux/init.h>
  23#include <linux/interrupt.h>
  24#include <linux/uaccess.h>
  25#include <asm/kmap_types.h>
  26
  27/* undef for production */
  28#define HIGHMEM_DEBUG 1
  29
  30/* declarations for highmem.c */
  31extern unsigned long highstart_pfn, highend_pfn;
  32
  33extern pte_t *pkmap_page_table;
  34
  35/*
  36 * Right now we initialize only a single pte table. It can be extended
  37 * easily, subsequent pte tables have to be allocated in one physical
  38 * chunk of RAM.
  39 */
  40#define LAST_PKMAP 1024
  41#define LAST_PKMAP_MASK (LAST_PKMAP-1)
  42#define PKMAP_NR(virt)  ((virt-PKMAP_BASE) >> PAGE_SHIFT)
  43#define PKMAP_ADDR(nr)  (PKMAP_BASE + ((nr) << PAGE_SHIFT))
  44
  45extern void * kmap_high(struct page *page);
  46extern void kunmap_high(struct page *page);
  47
  48extern void *kmap(struct page *page);
  49extern void kunmap(struct page *page);
  50extern void *__kmap_atomic(struct page *page);
  51extern void __kunmap_atomic(void *kvaddr);
  52extern void *kmap_atomic_pfn(unsigned long pfn);
  53extern struct page *kmap_atomic_to_page(void *ptr);
  54
  55#define flush_cache_kmaps()     flush_cache_all()
  56
  57extern void kmap_init(void);
  58
  59#define kmap_prot PAGE_KERNEL
  60
  61#endif /* __KERNEL__ */
  62
  63#endif /* _ASM_HIGHMEM_H */
  64