diff options
author | Jan Beulich <jbeulich@suse.com> | 2012-09-11 15:45:20 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2012-09-11 15:45:20 +0200 |
commit | 0923fba2cf02e08275c6e454906a0420baa455b5 (patch) | |
tree | 0acb7d37d0920c77a9775f869aab0e6b60a4b681 /xen/arch/x86/boot | |
parent | 28957ed4fd2fecc99b67db60a9266aa2f59ab980 (diff) | |
download | xen-0923fba2cf02e08275c6e454906a0420baa455b5.tar.gz xen-0923fba2cf02e08275c6e454906a0420baa455b5.tar.bz2 xen-0923fba2cf02e08275c6e454906a0420baa455b5.zip |
x86: allow early use of fixmaps
As a prerequisite for adding an EHCI debug port based console
implementation, set up the page tables needed for (a sub-portion of)
the fixmaps together with other boot time page table construction.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/boot')
-rw-r--r-- | xen/arch/x86/boot/head.S | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S index 47b9861c4f..5d2ca4ebc0 100644 --- a/xen/arch/x86/boot/head.S +++ b/xen/arch/x86/boot/head.S @@ -3,6 +3,7 @@ #include <public/xen.h> #include <asm/asm_defns.h> #include <asm/desc.h> +#include <asm/fixmap.h> #include <asm/page.h> #include <asm/msr.h> @@ -136,6 +137,9 @@ __start: add $8,%edx add $(1<<L2_PAGETABLE_SHIFT),%eax loop 1b + /* Initialise L2 fixmap page directory entry. */ + mov $(sym_phys(l1_fixmap)+7),%eax + mov %eax,sym_phys(l2_fixmap) + l2_table_offset(FIXADDR_TOP-1)*8 /* Initialise L3 identity-map page directory entries. */ mov $sym_phys(l3_identmap),%edi mov $(sym_phys(l2_identmap)+7),%eax @@ -144,9 +148,11 @@ __start: add $8,%edi add $PAGE_SIZE,%eax loop 1b - /* Initialise L3 xen-map page directory entry. */ + /* Initialise L3 xen-map and fixmap page directory entries. */ mov $(sym_phys(l2_xenmap)+7),%eax mov %eax,sym_phys(l3_xenmap) + l3_table_offset(XEN_VIRT_START)*8 + mov $(sym_phys(l2_fixmap)+7),%eax + mov %eax,sym_phys(l3_xenmap) + l3_table_offset(FIXADDR_TOP-1)*8 /* Initialise L3 boot-map page directory entry. */ mov $(sym_phys(l2_bootmap)+7),%eax mov %eax,sym_phys(l3_bootmap) + 0*8 @@ -172,6 +178,9 @@ __start: add $(1<<L2_PAGETABLE_SHIFT),%eax cmp $(16<<20)+0xe3,%eax jne 1b + /* Initialise L2 fixmap page directory entry. */ + mov $(sym_phys(l1_fixmap)+7),%eax + mov %eax,sym_phys(idle_pg_table_l2) + l2_table_offset(FIXADDR_TOP-1)*8 #endif /* Initialize 4kB mappings of first 2MB or 4MB of memory. */ |