diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2005-05-31 15:39:28 +0000 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2005-05-31 15:39:28 +0000 |
commit | 88198ec1b0bd2094cbabd600baae1ebe3026e7ad (patch) | |
tree | 9791c2750f1f9561f652a8887c43e3ab95d16f2c /xen/include/asm-x86/smp.h | |
parent | 59f83bdc8f5ba87cb8bd1235f42bd27c1fff39c0 (diff) | |
download | xen-88198ec1b0bd2094cbabd600baae1ebe3026e7ad.tar.gz xen-88198ec1b0bd2094cbabd600baae1ebe3026e7ad.tar.bz2 xen-88198ec1b0bd2094cbabd600baae1ebe3026e7ad.zip |
bitkeeper revision 1.1615.1.1 (429c8530L_ZtVuxsQcKwKB3yPuljog)
Subject: PAE support
This patch adds initial support for PAE paging to xen.
This patch does:
* boot Xen itself with PAE paging enabled.
* add PAE support to the dom0 domain builder.
Some notes on the design and the changes:
* There are two new config options: CONFIG_X86_PAE (boolean,
same name Linux uses to simply things) and
CONFIG_PAGING_LEVELS (int, possible values are 2,3,4). I've
used #if CONFIG_PAGING_LEVELS for stuff which simply depends
on the number of paging levels in the code common for
x86-32/64, and CONFIG_X86_PAE for special PAE quirks or
i386-only stuff. I've tried to avoid ifdefs if possible
though, often I rearranged code to make it work in both
PAE and non-PAE case instead.
* idle_pg_table: 3rd level is statically initialized, 2nd
level is contignous in physical and virtual memory, so it can
be addressed linear (the dom0 builder uses the same trick to
simplify things a bit btw.). There are two new symbols:
idle_pg_table_l3 and idle_pg_table_l2 for the two tables.
idle_pg_table is aliased to the toplevel page table, i.e.
idle_pg_table_l3 in PAE mode and idle_pg_table_l2 in non-pae
mode. The idle l3 table is actually never ever touched after
boot, the l2 table is accessed via idle_pg_table_l2 and
addressed linear in both PAE and non-PAE mode.
* I've added a "intpte_t" type and a PRIpte define, modeled
after the C99 inttypes.h header, for page table entries.
Signed-off-by: Gerd Knorr <kraxel@bytesex.org>
Diffstat (limited to 'xen/include/asm-x86/smp.h')
-rw-r--r-- | xen/include/asm-x86/smp.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/xen/include/asm-x86/smp.h b/xen/include/asm-x86/smp.h index 336cab889f..08995644e8 100644 --- a/xen/include/asm-x86/smp.h +++ b/xen/include/asm-x86/smp.h @@ -39,7 +39,12 @@ extern cpumask_t cpu_sibling_map[]; extern void smp_flush_tlb(void); extern void smp_invalidate_rcv(void); /* Process an NMI */ extern void (*mtrr_hook) (void); -extern void zap_low_mappings (void); + +#ifdef CONFIG_X86_64 +extern void zap_low_mappings(void); +#else +extern void zap_low_mappings(l2_pgentry_t *base); +#endif #define MAX_APICID 256 extern u8 x86_cpu_to_apicid[]; |