diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-06-20 07:51:46 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-06-20 07:51:46 +0000 |
commit | 321569f79abe10e934979dd8bb26357e956cc650 (patch) | |
tree | 6cef910231fafd393f2d1cd945edcd76bbacfb4b | |
parent | 1b2f03ac96628063e11669d579f814ebc56a87e8 (diff) | |
download | xen-321569f79abe10e934979dd8bb26357e956cc650.tar.gz xen-321569f79abe10e934979dd8bb26357e956cc650.tar.bz2 xen-321569f79abe10e934979dd8bb26357e956cc650.zip |
bitkeeper revision 1.985 (40d54212AaOKN_5U41AzX44kVS3-7w)
Allow compilation of Xen with debug symbols.
-rw-r--r-- | xen/arch/x86/apic.c | 2 | ||||
-rw-r--r-- | xen/arch/x86/mm.c | 2 | ||||
-rw-r--r-- | xen/include/asm-x86/fixmap.h | 93 | ||||
-rw-r--r-- | xen/include/asm-x86/io_apic.h | 2 |
4 files changed, 22 insertions, 77 deletions
diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c index e36f7ff44b..6831c3021a 100644 --- a/xen/arch/x86/apic.c +++ b/xen/arch/x86/apic.c @@ -470,7 +470,7 @@ void __init init_apic_mappings(void) ioapic_phys = mp_ioapics[i].mpc_apicaddr; set_fixmap_nocache(idx, ioapic_phys); Dprintk("mapped IOAPIC to %08lx (%08lx)\n", - __fix_to_virt(idx), ioapic_phys); + fix_to_virt(idx), ioapic_phys); idx++; } } diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 403a91ac86..f9f739265e 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -45,7 +45,7 @@ static inline void set_pte_phys(unsigned long vaddr, void __set_fixmap(enum fixed_addresses idx, l1_pgentry_t entry) { - unsigned long address = __fix_to_virt(idx); + unsigned long address = fix_to_virt(idx); if ( likely(idx < __end_of_fixed_addresses) ) set_pte_phys(address, entry); diff --git a/xen/include/asm-x86/fixmap.h b/xen/include/asm-x86/fixmap.h index fcfa97aee9..211d4cf895 100644 --- a/xen/include/asm-x86/fixmap.h +++ b/xen/include/asm-x86/fixmap.h @@ -6,8 +6,7 @@ * for more details. * * Copyright (C) 1998 Ingo Molnar - * - * Support of BIGMEM added by Gerhard Wichert, Siemens AG, July 1999 + * Modifications for Xen are copyright (c) 2002-2004, K A Fraser */ #ifndef _ASM_FIXMAP_H @@ -22,91 +21,37 @@ * Here we define all the compile-time 'special' virtual * addresses. The point is to have a constant address at * compile time, but to set the physical address only - * in the boot process. We allocate these special addresses - * from the end of virtual memory (0xfffff000) backwards. - * Also this lets us do fail-safe vmalloc(), we - * can guarantee that these special addresses and - * vmalloc()-ed addresses never overlap. - * - * these 'compile-time allocated' memory buffers are - * fixed-size 4k pages. (or larger if used with an increment - * highger than 1) use fixmap_set(idx,phys) to associate - * physical memory with fixmap indices. - * - * TLB entries of such buffers will not be flushed across - * task switches. - */ - -/* - * on UP currently we will have no trace of the fixmap mechanizm, - * no page table allocations, etc. This might change in the - * future, say framebuffers for the console driver(s) could be - * fix-mapped? + * in the boot process. We allocate these special addresses + * from the end of virtual memory backwards. */ enum fixed_addresses { #ifdef CONFIG_X86_LOCAL_APIC - FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */ + FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */ #endif #ifdef CONFIG_X86_IO_APIC - FIX_IO_APIC_BASE_0, - FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS-1, -#endif -#ifdef CONFIG_HIGHMEM - FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */ - FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1, + FIX_IO_APIC_BASE_0, + FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS-1, #endif #ifdef CONFIG_ACPI_BOOT - FIX_ACPI_BEGIN, - FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1, + FIX_ACPI_BEGIN, + FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1, #endif - __end_of_fixed_addresses + __end_of_fixed_addresses }; -extern void __set_fixmap (enum fixed_addresses idx, - l1_pgentry_t entry); +#define FIXADDR_TOP (0xffffe000UL) +#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT) +#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) -#define set_fixmap(idx, phys) \ - __set_fixmap(idx, mk_l1_pgentry(phys|PAGE_HYPERVISOR)) -/* - * Some hardware wants to get fixmapped without caching. - */ -#define set_fixmap_nocache(idx, phys) \ - __set_fixmap(idx, mk_l1_pgentry(phys|PAGE_HYPERVISOR_NOCACHE)) -/* - * used by vmalloc.c. - * - * Leave one empty page between vmalloc'ed areas and - * the start of the fixmap, and leave one page empty - * at the top of mem.. - */ -#define FIXADDR_TOP (0xffffe000UL) -#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT) -#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) - -#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT)) +extern void __set_fixmap(enum fixed_addresses idx, + l1_pgentry_t entry); -extern void __this_fixmap_does_not_exist(void); +#define set_fixmap(idx, phys) \ + __set_fixmap(idx, mk_l1_pgentry(phys|PAGE_HYPERVISOR)) -/* - * 'index to address' translation. If anyone tries to use the idx - * directly without tranlation, we catch the bug with a NULL-deference - * kernel oops. Illegal ranges of incoming indices are caught too. - */ -static inline unsigned long fix_to_virt(const unsigned int idx) -{ - /* - * this branch gets completely eliminated after inlining, - * except when someone tries to use fixaddr indices in an - * illegal way. (such as mixing up address types or using - * out-of-range indices). - * - * If it doesn't get removed, the linker will complain - * loudly with a reasonably clear error message.. - */ - if (idx >= __end_of_fixed_addresses) - __this_fixmap_does_not_exist(); +#define set_fixmap_nocache(idx, phys) \ + __set_fixmap(idx, mk_l1_pgentry(phys|PAGE_HYPERVISOR_NOCACHE)) - return __fix_to_virt(idx); -} +#define fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT)) #endif diff --git a/xen/include/asm-x86/io_apic.h b/xen/include/asm-x86/io_apic.h index 8b94875891..89e0fc0b5b 100644 --- a/xen/include/asm-x86/io_apic.h +++ b/xen/include/asm-x86/io_apic.h @@ -15,7 +15,7 @@ #define APIC_MISMATCH_DEBUG #define IO_APIC_BASE(idx) \ - ((volatile int *)(__fix_to_virt(FIX_IO_APIC_BASE_0 + idx) \ + ((volatile int *)(fix_to_virt(FIX_IO_APIC_BASE_0 + idx) \ + (mp_ioapics[idx].mpc_apicaddr & ~PAGE_MASK))) /* |