/root/src/xen/xen/include/asm/fixmap.h
Line | Count | Source (jump to first uncovered line) |
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 | | * Modifications for Xen are copyright (c) 2002-2004, K A Fraser |
10 | | */ |
11 | | |
12 | | #ifndef _ASM_FIXMAP_H |
13 | | #define _ASM_FIXMAP_H |
14 | | |
15 | | #include <asm/page.h> |
16 | | |
17 | 89.0k | #define FIXADDR_TOP (VMAP_VIRT_END - PAGE_SIZE) |
18 | | |
19 | | #ifndef __ASSEMBLY__ |
20 | | |
21 | | #include <xen/acpi.h> |
22 | | #include <xen/pfn.h> |
23 | | #include <xen/kexec.h> |
24 | | #include <xen/iommu.h> |
25 | | #include <asm/apicdef.h> |
26 | | #include <asm/amd-iommu.h> |
27 | | #include <asm/msi.h> |
28 | | #include <acpi/apei.h> |
29 | | |
30 | | /* |
31 | | * Here we define all the compile-time 'special' virtual |
32 | | * addresses. The point is to have a constant address at |
33 | | * compile time, but to set the physical address only |
34 | | * in the boot process. We allocate these special addresses |
35 | | * from the end of virtual memory backwards. |
36 | | */ |
37 | | enum fixed_addresses { |
38 | | /* Index 0 is reserved since fix_to_virt(0) == FIXADDR_TOP. */ |
39 | | FIX_RESERVED, |
40 | | /* |
41 | | * Indexes using the page tables set up before entering __start_xen() |
42 | | * must be among the first (L1_PAGETABLE_ENTRIES - 1) entries. |
43 | | * These are generally those needed by the various console drivers. |
44 | | */ |
45 | | FIX_COM_BEGIN, |
46 | | FIX_COM_END, |
47 | | FIX_EHCI_DBGP, |
48 | | /* Everything else should go further down. */ |
49 | | FIX_APIC_BASE, |
50 | | FIX_IO_APIC_BASE_0, |
51 | | FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS-1, |
52 | | FIX_ACPI_BEGIN, |
53 | | FIX_ACPI_END = FIX_ACPI_BEGIN + NUM_FIXMAP_ACPI_PAGES - 1, |
54 | | FIX_HPET_BASE, |
55 | | FIX_TBOOT_SHARED_BASE, |
56 | | FIX_MSIX_IO_RESERV_BASE, |
57 | | FIX_MSIX_IO_RESERV_END = FIX_MSIX_IO_RESERV_BASE + FIX_MSIX_MAX_PAGES -1, |
58 | | FIX_TBOOT_MAP_ADDRESS, |
59 | | FIX_APEI_RANGE_BASE, |
60 | | FIX_APEI_RANGE_END = FIX_APEI_RANGE_BASE + FIX_APEI_RANGE_MAX -1, |
61 | | FIX_EFI_MPF, |
62 | | __end_of_fixed_addresses |
63 | | }; |
64 | | |
65 | | #define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT) |
66 | | #define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) |
67 | | |
68 | | extern void __set_fixmap( |
69 | | enum fixed_addresses idx, unsigned long mfn, unsigned long flags); |
70 | | |
71 | | #define set_fixmap(idx, phys) \ |
72 | 22 | __set_fixmap(idx, (phys)>>PAGE_SHIFT, PAGE_HYPERVISOR) |
73 | | |
74 | | #define set_fixmap_nocache(idx, phys) \ |
75 | 15 | __set_fixmap(idx, (phys)>>PAGE_SHIFT, PAGE_HYPERVISOR_UCMINUS) |
76 | | |
77 | 0 | #define clear_fixmap(idx) __set_fixmap(idx, 0, 0) |
78 | | |
79 | 89.0k | #define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT)) |
80 | 0 | #define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT) |
81 | | |
82 | 86.3k | #define fix_to_virt(x) (__fix_to_virt(x)) |
83 | | |
84 | | static inline unsigned long virt_to_fix(const unsigned long vaddr) |
85 | 0 | { |
86 | 0 | BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START); |
87 | 0 | return __virt_to_fix(vaddr); |
88 | 0 | } Unexecuted instantiation: ns16550.c:virt_to_fix Unexecuted instantiation: ehci-dbgp.c:virt_to_fix Unexecuted instantiation: io.c:virt_to_fix Unexecuted instantiation: iommu.c:virt_to_fix Unexecuted instantiation: utils.c:virt_to_fix Unexecuted instantiation: intremap.c:virt_to_fix Unexecuted instantiation: quirks.c:virt_to_fix Unexecuted instantiation: vtd.c:virt_to_fix Unexecuted instantiation: iommu_init.c:virt_to_fix Unexecuted instantiation: pci_amd_iommu.c:virt_to_fix Unexecuted instantiation: iommu_intr.c:virt_to_fix Unexecuted instantiation: erst.c:virt_to_fix Unexecuted instantiation: apei-io.c:virt_to_fix Unexecuted instantiation: apic.c:virt_to_fix Unexecuted instantiation: crash.c:virt_to_fix Unexecuted instantiation: i8259.c:virt_to_fix Unexecuted instantiation: io_apic.c:virt_to_fix Unexecuted instantiation: msi.c:virt_to_fix Unexecuted instantiation: irq.c:virt_to_fix Unexecuted instantiation: machine_kexec.c:virt_to_fix Unexecuted instantiation: mm.c:virt_to_fix Unexecuted instantiation: mpparse.c:virt_to_fix Unexecuted instantiation: nmi.c:virt_to_fix Unexecuted instantiation: physdev.c:virt_to_fix Unexecuted instantiation: platform_hypercall.c:virt_to_fix Unexecuted instantiation: setup.c:virt_to_fix Unexecuted instantiation: shutdown.c:virt_to_fix Unexecuted instantiation: smp.c:virt_to_fix Unexecuted instantiation: smpboot.c:virt_to_fix Unexecuted instantiation: time.c:virt_to_fix Unexecuted instantiation: traps.c:virt_to_fix Unexecuted instantiation: tboot.c:virt_to_fix Unexecuted instantiation: hpet.c:virt_to_fix Unexecuted instantiation: lib.c:virt_to_fix Unexecuted instantiation: power.c:virt_to_fix Unexecuted instantiation: cpu_idle.c:virt_to_fix Unexecuted instantiation: amd.c:virt_to_fix Unexecuted instantiation: common.c:virt_to_fix Unexecuted instantiation: intel.c:virt_to_fix Unexecuted instantiation: vpmu.c:virt_to_fix Unexecuted instantiation: vpmu_amd.c:virt_to_fix Unexecuted instantiation: vpmu_intel.c:virt_to_fix Unexecuted instantiation: mce.c:virt_to_fix Unexecuted instantiation: mce_intel.c:virt_to_fix Unexecuted instantiation: bigsmp.c:virt_to_fix Unexecuted instantiation: x2apic.c:virt_to_fix Unexecuted instantiation: default.c:virt_to_fix Unexecuted instantiation: delivery.c:virt_to_fix Unexecuted instantiation: probe.c:virt_to_fix Unexecuted instantiation: hvm.c:virt_to_fix Unexecuted instantiation: vioapic.c:virt_to_fix Unexecuted instantiation: viridian.c:virt_to_fix Unexecuted instantiation: vlapic.c:virt_to_fix Unexecuted instantiation: vmsi.c:virt_to_fix Unexecuted instantiation: vpt.c:virt_to_fix Unexecuted instantiation: svm.c:virt_to_fix Unexecuted instantiation: vmcs.c:virt_to_fix Unexecuted instantiation: vmx.c:virt_to_fix Unexecuted instantiation: nmi_int.c:virt_to_fix Unexecuted instantiation: op_model_p4.c:virt_to_fix Unexecuted instantiation: op_model_ppro.c:virt_to_fix Unexecuted instantiation: op_model_athlon.c:virt_to_fix Unexecuted instantiation: emul-gate-op.c:virt_to_fix Unexecuted instantiation: emul-inv-op.c:virt_to_fix Unexecuted instantiation: emul-priv-op.c:virt_to_fix Unexecuted instantiation: acpi_mmcfg.c:virt_to_fix |
89 | | |
90 | | #endif /* __ASSEMBLY__ */ |
91 | | |
92 | | #endif |