linux/arch/x86/include/asm/fixmap_32.h
<<
>>
Prefs
   1/*
   2 * fixmap.h: compile-time virtual memory allocation
   3 *
   4 * This file is subject to the terms and conditions of the GNU General Public
   5 * License.  See the file "COPYING" in the main directory of this archive
   6 * for more details.
   7 *
   8 * Copyright (C) 1998 Ingo Molnar
   9 *
  10 * Support of BIGMEM added by Gerhard Wichert, Siemens AG, July 1999
  11 */
  12
  13#ifndef _ASM_X86_FIXMAP_32_H
  14#define _ASM_X86_FIXMAP_32_H
  15
  16
  17/* used by vmalloc.c, vsyscall.lds.S.
  18 *
  19 * Leave one empty page between vmalloc'ed areas and
  20 * the start of the fixmap.
  21 */
  22extern unsigned long __FIXADDR_TOP;
  23#define FIXADDR_USER_START     __fix_to_virt(FIX_VDSO)
  24#define FIXADDR_USER_END       __fix_to_virt(FIX_VDSO - 1)
  25
  26#ifndef __ASSEMBLY__
  27#include <linux/kernel.h>
  28#include <asm/acpi.h>
  29#include <asm/apicdef.h>
  30#include <asm/page.h>
  31#include <linux/threads.h>
  32#include <asm/kmap_types.h>
  33
  34/*
  35 * Here we define all the compile-time 'special' virtual
  36 * addresses. The point is to have a constant address at
  37 * compile time, but to set the physical address only
  38 * in the boot process. We allocate these special addresses
  39 * from the end of virtual memory (0xfffff000) backwards.
  40 * Also this lets us do fail-safe vmalloc(), we
  41 * can guarantee that these special addresses and
  42 * vmalloc()-ed addresses never overlap.
  43 *
  44 * these 'compile-time allocated' memory buffers are
  45 * fixed-size 4k pages. (or larger if used with an increment
  46 * highger than 1) use fixmap_set(idx,phys) to associate
  47 * physical memory with fixmap indices.
  48 *
  49 * TLB entries of such buffers will not be flushed across
  50 * task switches.
  51 */
  52enum fixed_addresses {
  53        FIX_HOLE,
  54        FIX_VDSO,
  55        FIX_DBGP_BASE,
  56        FIX_EARLYCON_MEM_BASE,
  57#ifdef CONFIG_X86_LOCAL_APIC
  58        FIX_APIC_BASE,  /* local (CPU) APIC) -- required for SMP or not */
  59#endif
  60#ifdef CONFIG_X86_IO_APIC
  61        FIX_IO_APIC_BASE_0,
  62        FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS-1,
  63#endif
  64#ifdef CONFIG_X86_VISWS_APIC
  65        FIX_CO_CPU,     /* Cobalt timer */
  66        FIX_CO_APIC,    /* Cobalt APIC Redirection Table */
  67        FIX_LI_PCIA,    /* Lithium PCI Bridge A */
  68        FIX_LI_PCIB,    /* Lithium PCI Bridge B */
  69#endif
  70#ifdef CONFIG_X86_F00F_BUG
  71        FIX_F00F_IDT,   /* Virtual mapping for IDT */
  72#endif
  73#ifdef CONFIG_X86_CYCLONE_TIMER
  74        FIX_CYCLONE_TIMER, /*cyclone timer register*/
  75#endif
  76        FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */
  77        FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,
  78#ifdef CONFIG_PCI_MMCONFIG
  79        FIX_PCIE_MCFG,
  80#endif
  81#ifdef CONFIG_PARAVIRT
  82        FIX_PARAVIRT_BOOTMAP,
  83#endif
  84        __end_of_permanent_fixed_addresses,
  85        /*
  86         * 256 temporary boot-time mappings, used by early_ioremap(),
  87         * before ioremap() is functional.
  88         *
  89         * We round it up to the next 256 pages boundary so that we
  90         * can have a single pgd entry and a single pte table:
  91         */
  92#define NR_FIX_BTMAPS           64
  93#define FIX_BTMAPS_SLOTS        4
  94        FIX_BTMAP_END = __end_of_permanent_fixed_addresses + 256 -
  95                        (__end_of_permanent_fixed_addresses & 255),
  96        FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS*FIX_BTMAPS_SLOTS - 1,
  97        FIX_WP_TEST,
  98#ifdef CONFIG_ACPI
  99        FIX_ACPI_BEGIN,
 100        FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1,
 101#endif
 102#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
 103        FIX_OHCI1394_BASE,
 104#endif
 105        __end_of_fixed_addresses
 106};
 107
 108extern void reserve_top_address(unsigned long reserve);
 109
 110
 111#define FIXADDR_TOP     ((unsigned long)__FIXADDR_TOP)
 112
 113#define __FIXADDR_SIZE  (__end_of_permanent_fixed_addresses << PAGE_SHIFT)
 114#define __FIXADDR_BOOT_SIZE     (__end_of_fixed_addresses << PAGE_SHIFT)
 115#define FIXADDR_START           (FIXADDR_TOP - __FIXADDR_SIZE)
 116#define FIXADDR_BOOT_START      (FIXADDR_TOP - __FIXADDR_BOOT_SIZE)
 117
 118#endif /* !__ASSEMBLY__ */
 119#endif /* _ASM_X86_FIXMAP_32_H */
 120
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.