0b7a96114b
pgtable.h does not include highmem.h but uses various constants from highmem.h. We cannot include highmem.h because highmem.h will in turn include many other include files that also depend on pgtable.h So move the definitions from highmem.h into pgtable.h. [akpm@linux-foundation.org: coding-style fixes] Signed-off-by: Christoph Lameter <clameter@sgi.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
79 lines
2 KiB
C
79 lines
2 KiB
C
/*
|
|
* highmem.h: virtual kernel memory mappings for high memory
|
|
*
|
|
* Used in CONFIG_HIGHMEM systems for memory pages which
|
|
* are not addressable by direct kernel virtual addresses.
|
|
*
|
|
* Copyright (C) 1999 Gerhard Wichert, Siemens AG
|
|
* Gerhard.Wichert@pdb.siemens.de
|
|
*
|
|
*
|
|
* Redesigned the x86 32-bit VM architecture to deal with
|
|
* up to 16 Terabyte physical memory. With current x86 CPUs
|
|
* we now support up to 64 Gigabytes physical RAM.
|
|
*
|
|
* Copyright (C) 1999 Ingo Molnar <mingo@redhat.com>
|
|
*/
|
|
|
|
#ifndef _ASM_HIGHMEM_H
|
|
#define _ASM_HIGHMEM_H
|
|
|
|
#ifdef __KERNEL__
|
|
|
|
#include <linux/interrupt.h>
|
|
#include <linux/threads.h>
|
|
#include <asm/kmap_types.h>
|
|
#include <asm/tlbflush.h>
|
|
#include <asm/paravirt.h>
|
|
|
|
/* declarations for highmem.c */
|
|
extern unsigned long highstart_pfn, highend_pfn;
|
|
|
|
extern pte_t *kmap_pte;
|
|
extern pgprot_t kmap_prot;
|
|
extern pte_t *pkmap_page_table;
|
|
|
|
/*
|
|
* Right now we initialize only a single pte table. It can be extended
|
|
* easily, subsequent pte tables have to be allocated in one physical
|
|
* chunk of RAM.
|
|
*/
|
|
/*
|
|
* Ordering is:
|
|
*
|
|
* FIXADDR_TOP
|
|
* fixed_addresses
|
|
* FIXADDR_START
|
|
* temp fixed addresses
|
|
* FIXADDR_BOOT_START
|
|
* Persistent kmap area
|
|
* PKMAP_BASE
|
|
* VMALLOC_END
|
|
* Vmalloc area
|
|
* VMALLOC_START
|
|
* high_memory
|
|
*/
|
|
#define LAST_PKMAP_MASK (LAST_PKMAP-1)
|
|
#define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT)
|
|
#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
|
|
|
|
extern void *kmap_high(struct page *page);
|
|
extern void kunmap_high(struct page *page);
|
|
|
|
void *kmap(struct page *page);
|
|
void kunmap(struct page *page);
|
|
void *kmap_atomic_prot(struct page *page, enum km_type type, pgprot_t prot);
|
|
void *kmap_atomic(struct page *page, enum km_type type);
|
|
void kunmap_atomic(void *kvaddr, enum km_type type);
|
|
void *kmap_atomic_pfn(unsigned long pfn, enum km_type type);
|
|
struct page *kmap_atomic_to_page(void *ptr);
|
|
|
|
#ifndef CONFIG_PARAVIRT
|
|
#define kmap_atomic_pte(page, type) kmap_atomic(page, type)
|
|
#endif
|
|
|
|
#define flush_cache_kmaps() do { } while (0)
|
|
|
|
#endif /* __KERNEL__ */
|
|
|
|
#endif /* _ASM_HIGHMEM_H */
|