[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] i386: Remove non-PAE hypervisor build target.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1210253531 -3600
# Node ID 8bd776540ab319d73b8e55656ad2c342c178a5b1
# Parent  b0d7780794ebb087766391380b1c17467f016fb6
i386: Remove non-PAE hypervisor build target.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
 xen/include/asm-x86/x86_32/page-2level.h             |   60 ------------
 xen/include/asm-x86/x86_32/page-3level.h             |   90 ------------------
 Config.mk                                            |    4 
 Makefile                                             |    4 
 buildconfigs/mk.linux-2.6-common                     |    4 
 buildconfigs/mk.linux-2.6.5-SLES-xen                 |    2 
 buildconfigs/mk.linux-2.6.9-RHEL-xen                 |    2 
 extras/mini-os/Config.mk                             |    8 -
 extras/mini-os/arch/x86/arch.mk                      |    5 -
 extras/mini-os/arch/x86/mm.c                         |   17 ---
 extras/mini-os/arch/x86/setup.c                      |    2 
 extras/mini-os/arch/x86/traps.c                      |    5 -
 extras/mini-os/arch/x86/x86_32.S                     |    4 
 extras/mini-os/include/types.h                       |    6 -
 extras/mini-os/include/x86/arch_limits.h             |    2 
 extras/mini-os/include/x86/arch_mm.h                 |   30 ------
 extras/mini-os/include/x86/x86_32/hypercall-x86_32.h |   12 --
 xen/arch/x86/Rules.mk                                |    5 -
 xen/arch/x86/boot/head.S                             |   24 -----
 xen/arch/x86/boot/trampoline.S                       |    6 -
 xen/arch/x86/boot/wakeup.S                           |    6 -
 xen/arch/x86/boot/x86_32.S                           |    2 
 xen/arch/x86/domain_build.c                          |    6 -
 xen/arch/x86/hvm/vmx/vmcs.c                          |    2 
 xen/arch/x86/hvm/vmx/vmx.c                           |    4 
 xen/arch/x86/mm.c                                    |   43 ++------
 xen/arch/x86/mm/hap/hap.c                            |   44 ---------
 xen/arch/x86/mm/p2m.c                                |    2 
 xen/arch/x86/mm/shadow/Makefile                      |    5 -
 xen/arch/x86/mm/shadow/common.c                      |   91 -------------------
 xen/arch/x86/mm/shadow/multi.c                       |   91 -------------------
 xen/arch/x86/mm/shadow/private.h                     |    9 -
 xen/arch/x86/setup.c                                 |   16 ---
 xen/arch/x86/traps.c                                 |    4 
 xen/arch/x86/x86_32/mm.c                             |   11 --
 xen/arch/x86/x86_32/traps.c                          |   10 --
 xen/include/asm-x86/config.h                         |   41 ++------
 xen/include/asm-x86/domain.h                         |    4 
 xen/include/asm-x86/fixmap.h                         |    2 
 xen/include/asm-x86/mm.h                             |    4 
 xen/include/asm-x86/page.h                           |   16 ---
 xen/include/asm-x86/types.h                          |    6 -
 xen/include/asm-x86/x86_32/page.h                    |   91 +++++++++++++++++--
 xen/include/public/arch-x86/xen-x86_32.h             |    7 -
 44 files changed, 134 insertions(+), 675 deletions(-)

diff -r b0d7780794eb -r 8bd776540ab3 Config.mk
--- a/Config.mk Thu May 08 13:40:40 2008 +0100
+++ b/Config.mk Thu May 08 14:32:11 2008 +0100
@@ -7,10 +7,6 @@ XEN_COMPILE_ARCH    ?= $(shell uname -m 
                          -e s/i86pc/x86_32/ -e s/amd64/x86_64/)
 XEN_TARGET_ARCH     ?= $(XEN_COMPILE_ARCH)
 XEN_OS              ?= $(shell uname -s)
-
-ifeq ($(XEN_TARGET_ARCH),x86_32)
-XEN_TARGET_X86_PAE  ?= y
-endif
 
 CONFIG_$(XEN_OS) := y
 
diff -r b0d7780794eb -r 8bd776540ab3 Makefile
--- a/Makefile  Thu May 08 13:40:40 2008 +0100
+++ b/Makefile  Thu May 08 14:32:11 2008 +0100
@@ -12,10 +12,6 @@ SUBARCH := $(subst x86_32,i386,$(XEN_TAR
 SUBARCH := $(subst x86_32,i386,$(XEN_TARGET_ARCH))
 export XEN_TARGET_ARCH SUBARCH XEN_SYSTYPE
 include buildconfigs/Rules.mk
-
-ifeq ($(XEN_TARGET_X86_PAE),y)
-export pae=y
-endif
 
 # build and install everything into the standard system directories
 .PHONY: install
diff -r b0d7780794eb -r 8bd776540ab3 buildconfigs/mk.linux-2.6-common
--- a/buildconfigs/mk.linux-2.6-common  Thu May 08 13:40:40 2008 +0100
+++ b/buildconfigs/mk.linux-2.6-common  Thu May 08 14:32:11 2008 +0100
@@ -91,11 +91,7 @@ ifneq ($(XEN_LINUX_CONFIG_UPDATE),)
        sh $(XEN_LINUX_CONFIG_UPDATE) $(CONFIG_FILE)
 endif
 ifeq ($(XEN_TARGET_ARCH),x86_32)
-ifeq ($(pae),y)
        sed -e 's!^CONFIG_HIGHMEM4G=y$$!\# CONFIG_HIGHMEM4G is not set!;s!^\# 
CONFIG_HIGHMEM64G is not set$$!CONFIG_HIGHMEM64G=y!' $(CONFIG_FILE) > 
$(CONFIG_FILE)- && mv $(CONFIG_FILE)- $(CONFIG_FILE)
-else
-       grep '^CONFIG_HIGHMEM64G=y' $(CONFIG_FILE) >/dev/null && ( sed -e 
's!^CONFIG_HIGHMEM64G=y$$!\# CONFIG_HIGHMEM64G is not set!;s!^\# 
CONFIG_HIGHMEM4G is not set$$!CONFIG_HIGHMEM4G=y!' $(CONFIG_FILE) > 
$(CONFIG_FILE)- && mv $(CONFIG_FILE)- $(CONFIG_FILE) ) || true
-endif
 endif
 ifneq ($(EXTRAVERSION),)
        echo "$(EXTRAVERSION)" >$(LINUX_DIR)/localversion-xen
diff -r b0d7780794eb -r 8bd776540ab3 buildconfigs/mk.linux-2.6.5-SLES-xen
--- a/buildconfigs/mk.linux-2.6.5-SLES-xen      Thu May 08 13:40:40 2008 +0100
+++ b/buildconfigs/mk.linux-2.6.5-SLES-xen      Thu May 08 14:32:11 2008 +0100
@@ -1,6 +1,4 @@
-# This tree only supports PAE
 XEN_TARGET_ARCH = x86_32
-XEN_TARGET_X86_PAE = y
 
 EXTRAVERSION = -xen
 LINUX_VER = 2.6.5-SLES
diff -r b0d7780794eb -r 8bd776540ab3 buildconfigs/mk.linux-2.6.9-RHEL-xen
--- a/buildconfigs/mk.linux-2.6.9-RHEL-xen      Thu May 08 13:40:40 2008 +0100
+++ b/buildconfigs/mk.linux-2.6.9-RHEL-xen      Thu May 08 14:32:11 2008 +0100
@@ -1,6 +1,4 @@
-# This tree only supports PAE
 XEN_TARGET_ARCH = x86_32
-XEN_TARGET_X86_PAE = y
 
 EXTRAVERSION = -xen
 LINUX_VER = 2.6.9-RHEL
diff -r b0d7780794eb -r 8bd776540ab3 extras/mini-os/Config.mk
--- a/extras/mini-os/Config.mk  Thu May 08 13:40:40 2008 +0100
+++ b/extras/mini-os/Config.mk  Thu May 08 14:32:11 2008 +0100
@@ -2,9 +2,6 @@ MINI-OS_ROOT=$(XEN_ROOT)/extras/mini-os
 MINI-OS_ROOT=$(XEN_ROOT)/extras/mini-os
 export MINI-OS_ROOT
 
-ifeq ($(XEN_TARGET_ARCH),x86_32)
-export pae ?= y
-endif
 libc = $(stubdom)
 
 XEN_INTERFACE_VERSION := 0x00030205
@@ -25,7 +22,6 @@ TARGET_ARCH_DIR := arch/$(TARGET_ARCH_FA
 # Export these variables for possible use in architecture dependent makefiles.
 export TARGET_ARCH_DIR
 export TARGET_ARCH_FAM
-export XEN_TARGET_X86_PAE 
 
 # This is used for architecture specific links.
 # This can be overwritten from arch specific rules.
@@ -70,7 +66,3 @@ ifneq ($(CAMLDIR),)
 ifneq ($(CAMLDIR),)
 caml=y
 endif
-
-ifeq ($(pae),y)
-DEF_CPPFLAGS += -DCONFIG_X86_PAE
-endif
diff -r b0d7780794eb -r 8bd776540ab3 extras/mini-os/arch/x86/arch.mk
--- a/extras/mini-os/arch/x86/arch.mk   Thu May 08 13:40:40 2008 +0100
+++ b/extras/mini-os/arch/x86/arch.mk   Thu May 08 14:32:11 2008 +0100
@@ -9,11 +9,6 @@ ARCH_ASFLAGS := -m32
 ARCH_ASFLAGS := -m32
 EXTRA_INC += $(TARGET_ARCH_FAM)/$(XEN_TARGET_ARCH)
 EXTRA_SRC += arch/$(EXTRA_INC)
-
-ifeq ($(XEN_TARGET_X86_PAE),y)
-ARCH_CFLAGS  += -DCONFIG_X86_PAE=1
-ARCH_ASFLAGS += -DCONFIG_X86_PAE=1
-endif
 endif
 
 ifeq ($(XEN_TARGET_ARCH),x86_64)
diff -r b0d7780794eb -r 8bd776540ab3 extras/mini-os/arch/x86/mm.c
--- a/extras/mini-os/arch/x86/mm.c      Thu May 08 13:40:40 2008 +0100
+++ b/extras/mini-os/arch/x86/mm.c      Thu May 08 14:32:11 2008 +0100
@@ -79,13 +79,11 @@ void new_pt_frame(unsigned long *pt_pfn,
          prot_t = L2_PROT;
          pincmd = MMUEXT_PIN_L1_TABLE;
          break;
-#if defined(__x86_64__) || defined(CONFIG_X86_PAE)
     case L2_FRAME:
          prot_e = L2_PROT;
          prot_t = L3_PROT;
          pincmd = MMUEXT_PIN_L2_TABLE;
          break;
-#endif
 #if defined(__x86_64__)
     case L3_FRAME:
          prot_e = L3_PROT;
@@ -102,11 +100,8 @@ void new_pt_frame(unsigned long *pt_pfn,
     /* Update the entry */
 #if defined(__x86_64__)
     tab = pte_to_virt(tab[l4_table_offset(pt_page)]);
+#endif
     tab = pte_to_virt(tab[l3_table_offset(pt_page)]);
-#endif
-#if defined(CONFIG_X86_PAE)
-    tab = pte_to_virt(tab[l3_table_offset(pt_page)]);
-#endif
 
     mmu_updates[0].ptr = ((pgentry_t)tab[l2_table_offset(pt_page)] & 
PAGE_MASK) + 
                          sizeof(pgentry_t) * l1_table_offset(pt_page);
@@ -164,7 +159,6 @@ static int need_pt_frame(unsigned long v
     } else
 #endif
 
-#if defined(__x86_64__) || defined(CONFIG_X86_PAE)
     if(level == L2_FRAME)
     {
 #if defined(__x86_64__)
@@ -181,7 +175,6 @@ static int need_pt_frame(unsigned long v
 
         return 1;
     } else 
-#endif /* defined(__x86_64__) || defined(CONFIG_X86_PAE) */
 
     /* Always need l1 frames */
     if(level == L1_FRAME)
@@ -236,7 +229,6 @@ void build_pagetable(unsigned long *star
         mfn = pte_to_mfn(page);
         tab = to_virt(mfn_to_pfn(mfn) << PAGE_SHIFT);
 #endif
-#if defined(__x86_64__) || defined(CONFIG_X86_PAE)
         offset = l3_table_offset(start_address);
         /* Need new L2 pt frame */
         if(!(start_address & L2_MASK))
@@ -246,7 +238,6 @@ void build_pagetable(unsigned long *star
         page = tab[offset];
         mfn = pte_to_mfn(page);
         tab = to_virt(mfn_to_pfn(mfn) << PAGE_SHIFT);
-#endif
         offset = l2_table_offset(start_address);        
         /* Need new L1 pt frame */
         if(!(start_address & L1_MASK))
@@ -298,12 +289,10 @@ static void set_readonly(void *text, voi
         mfn = pte_to_mfn(page);
         tab = to_virt(mfn_to_pfn(mfn) << PAGE_SHIFT);
 #endif
-#if defined(__x86_64__) || defined(CONFIG_X86_PAE)
         offset = l3_table_offset(start_address);
         page = tab[offset];
         mfn = pte_to_mfn(page);
         tab = to_virt(mfn_to_pfn(mfn) << PAGE_SHIFT);
-#endif
         offset = l2_table_offset(start_address);        
         page = tab[offset];
         mfn = pte_to_mfn(page);
@@ -382,13 +371,11 @@ static pgentry_t *get_pgt(unsigned long 
     mfn = pte_to_mfn(tab[offset]);
     tab = mfn_to_virt(mfn);
 #endif
-#if defined(__x86_64__) || defined(CONFIG_X86_PAE)
     offset = l3_table_offset(addr);
     if (!(tab[offset] & _PAGE_PRESENT))
         return NULL;
     mfn = pte_to_mfn(tab[offset]);
     tab = mfn_to_virt(mfn);
-#endif
     offset = l2_table_offset(addr);
     if (!(tab[offset] & _PAGE_PRESENT))
         return NULL;
@@ -418,7 +405,6 @@ static pgentry_t *need_pgt(unsigned long
     mfn = pte_to_mfn(tab[offset]);
     tab = mfn_to_virt(mfn);
 #endif
-#if defined(__x86_64__) || defined(CONFIG_X86_PAE)
     offset = l3_table_offset(addr);
     if (!(tab[offset] & _PAGE_PRESENT)) {
         pt_pfn = virt_to_pfn(alloc_page());
@@ -427,7 +413,6 @@ static pgentry_t *need_pgt(unsigned long
     ASSERT(tab[offset] & _PAGE_PRESENT);
     mfn = pte_to_mfn(tab[offset]);
     tab = mfn_to_virt(mfn);
-#endif
     offset = l2_table_offset(addr);
     if (!(tab[offset] & _PAGE_PRESENT)) {
         pt_pfn = virt_to_pfn(alloc_page());
diff -r b0d7780794eb -r 8bd776540ab3 extras/mini-os/arch/x86/setup.c
--- a/extras/mini-os/arch/x86/setup.c   Thu May 08 13:40:40 2008 +0100
+++ b/extras/mini-os/arch/x86/setup.c   Thu May 08 14:32:11 2008 +0100
@@ -53,7 +53,7 @@ void hypervisor_callback(void);
 void hypervisor_callback(void);
 void failsafe_callback(void);
 
-#if !defined(CONFIG_X86_PAE)
+#if defined(__x86_64__)
 #define __pte(x) ((pte_t) { (x) } )
 #else
 #define __pte(x) ({ unsigned long long _x = (x);        \
diff -r b0d7780794eb -r 8bd776540ab3 extras/mini-os/arch/x86/traps.c
--- a/extras/mini-os/arch/x86/traps.c   Thu May 08 13:40:40 2008 +0100
+++ b/extras/mini-os/arch/x86/traps.c   Thu May 08 14:32:11 2008 +0100
@@ -104,11 +104,9 @@ void page_walk(unsigned long virt_addres
         tab = pte_to_virt(page);
         printk(" L4 = %"PRIpte" (%p)  [offset = %lx]\n", page, tab, 
l4_table_offset(addr));
 #endif
-#if defined(__x86_64__) || defined(CONFIG_X86_PAE)
         page = tab[l3_table_offset(addr)];
         tab = pte_to_virt(page);
         printk("  L3 = %"PRIpte" (%p)  [offset = %lx]\n", page, tab, 
l3_table_offset(addr));
-#endif
         page = tab[l2_table_offset(addr)];
         tab = pte_to_virt(page);
         printk("   L2 = %"PRIpte" (%p)  [offset = %lx]\n", page, tab, 
l2_table_offset(addr));
@@ -129,12 +127,11 @@ static int handle_cow(unsigned long addr
            return 0;
         tab = pte_to_virt(page);
 #endif
-#if defined(__x86_64__) || defined(CONFIG_X86_PAE)
         page = tab[l3_table_offset(addr)];
        if (!(page & _PAGE_PRESENT))
            return 0;
         tab = pte_to_virt(page);
-#endif
+
         page = tab[l2_table_offset(addr)];
        if (!(page & _PAGE_PRESENT))
            return 0;
diff -r b0d7780794eb -r 8bd776540ab3 extras/mini-os/arch/x86/x86_32.S
--- a/extras/mini-os/arch/x86/x86_32.S  Thu May 08 13:40:40 2008 +0100
+++ b/extras/mini-os/arch/x86/x86_32.S  Thu May 08 14:32:11 2008 +0100
@@ -8,11 +8,7 @@
        .ascii  ",VIRT_BASE=0x0" /* &_text from minios_x86_32.lds */
        .ascii  ",ELF_PADDR_OFFSET=0x0"
        .ascii  ",HYPERCALL_PAGE=0x2"
-#ifdef CONFIG_X86_PAE
        .ascii  ",PAE=yes"
-#else
-       .ascii  ",PAE=no"
-#endif
        .ascii  ",LOADER=generic"
        .byte   0
 .text
diff -r b0d7780794eb -r 8bd776540ab3 extras/mini-os/include/types.h
--- a/extras/mini-os/include/types.h    Thu May 08 13:40:40 2008 +0100
+++ b/extras/mini-os/include/types.h    Thu May 08 14:32:11 2008 +0100
@@ -43,11 +43,7 @@ typedef long long           quad_t;
 typedef long long           quad_t;
 typedef unsigned long long  u_quad_t;
 
-#if !defined(CONFIG_X86_PAE)
-typedef struct { unsigned long pte_low; } pte_t;
-#else
 typedef struct { unsigned long pte_low, pte_high; } pte_t;
-#endif /* CONFIG_X86_PAE */
 
 #elif defined(__x86_64__) || defined(__ia64__)
 typedef long                quad_t;
@@ -56,7 +52,7 @@ typedef struct { unsigned long pte; } pt
 typedef struct { unsigned long pte; } pte_t;
 #endif /* __i386__ || __x86_64__ */
 
-#if !defined(CONFIG_X86_PAE)
+#ifdef __x86_64__
 #define __pte(x) ((pte_t) { (x) } )
 #else
 #define __pte(x) ({ unsigned long long _x = (x);        \
diff -r b0d7780794eb -r 8bd776540ab3 extras/mini-os/include/x86/arch_limits.h
--- a/extras/mini-os/include/x86/arch_limits.h  Thu May 08 13:40:40 2008 +0100
+++ b/extras/mini-os/include/x86/arch_limits.h  Thu May 08 14:32:11 2008 +0100
@@ -7,7 +7,7 @@
 #ifdef __ASSEMBLY__
 #define __PAGE_SIZE       (1 << __PAGE_SHIFT)
 #else
-#ifndef CONFIG_X86_PAE
+#ifdef __x86_64__
 #define __PAGE_SIZE       (1UL << __PAGE_SHIFT)
 #else
 #define __PAGE_SIZE       (1ULL << __PAGE_SHIFT)
diff -r b0d7780794eb -r 8bd776540ab3 extras/mini-os/include/x86/arch_mm.h
--- a/extras/mini-os/include/x86/arch_mm.h      Thu May 08 13:40:40 2008 +0100
+++ b/extras/mini-os/include/x86/arch_mm.h      Thu May 08 14:32:11 2008 +0100
@@ -44,24 +44,6 @@
 
 #if defined(__i386__)
 
-#if !defined(CONFIG_X86_PAE)
-
-#define L2_PAGETABLE_SHIFT      22
-
-#define L1_PAGETABLE_ENTRIES    1024
-#define L2_PAGETABLE_ENTRIES    1024
-
-#define PADDR_BITS              32
-#define PADDR_MASK              (~0UL)
-
-#define NOT_L1_FRAMES           1
-#define PRIpte "08lx"
-#ifndef __ASSEMBLY__
-typedef unsigned long pgentry_t;
-#endif
-
-#else /* defined(CONFIG_X86_PAE) */
-
 #define L2_PAGETABLE_SHIFT      21
 #define L3_PAGETABLE_SHIFT      30
 
@@ -85,8 +67,6 @@ typedef uint64_t pgentry_t;
 typedef uint64_t pgentry_t;
 #endif
 
-#endif /* !defined(CONFIG_X86_PAE) */
-
 #elif defined(__x86_64__)
 
 #define L2_PAGETABLE_SHIFT      21
@@ -122,10 +102,8 @@ typedef unsigned long pgentry_t;
   (((_a) >> L1_PAGETABLE_SHIFT) & (L1_PAGETABLE_ENTRIES - 1))
 #define l2_table_offset(_a) \
   (((_a) >> L2_PAGETABLE_SHIFT) & (L2_PAGETABLE_ENTRIES - 1))
-#if defined(__x86_64__) || defined(CONFIG_X86_PAE)
 #define l3_table_offset(_a) \
   (((_a) >> L3_PAGETABLE_SHIFT) & (L3_PAGETABLE_ENTRIES - 1))
-#endif
 #if defined(__x86_64__)
 #define l4_table_offset(_a) \
   (((_a) >> L4_PAGETABLE_SHIFT) & (L4_PAGETABLE_ENTRIES - 1))
@@ -146,9 +124,7 @@ typedef unsigned long pgentry_t;
 #define L1_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED)
 #define L1_PROT_RO (_PAGE_PRESENT|_PAGE_ACCESSED)
 #define L2_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY |_PAGE_USER)
-#if defined(CONFIG_X86_PAE)
 #define L3_PROT (_PAGE_PRESENT)
-#endif /* CONFIG_X86_PAE */
 #elif defined(__x86_64__)
 #define L1_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_USER)
 #define L1_PROT_RO (_PAGE_PRESENT|_PAGE_ACCESSED|_PAGE_USER)
@@ -172,7 +148,7 @@ typedef unsigned long pgentry_t;
 
 #ifndef __ASSEMBLY__
 /* Definitions for machine and pseudophysical addresses. */
-#ifdef CONFIG_X86_PAE
+#ifdef __i386__
 typedef unsigned long long paddr_t;
 typedef unsigned long long maddr_t;
 #else
@@ -225,14 +201,10 @@ static __inline__ paddr_t machine_to_phy
 #define virtual_to_l3(_virt)      PT_BASE
 #endif
 
-#if defined(__x86_64__) || defined(CONFIG_X86_PAE)
 #define virtual_to_l2(_virt)      ({ \
        unsigned long __virt2 = (_virt); \
        (pgentry_t *) 
pte_to_virt(virtual_to_l3(__virt2)[l3_table_offset(__virt2)]); \
 })
-#else
-#define virtual_to_l2(_virt)      PT_BASE
-#endif
 
 #define virtual_to_l1(_virt)      ({ \
        unsigned long __virt1 = (_virt); \
diff -r b0d7780794eb -r 8bd776540ab3 
extras/mini-os/include/x86/x86_32/hypercall-x86_32.h
--- a/extras/mini-os/include/x86/x86_32/hypercall-x86_32.h      Thu May 08 
13:40:40 2008 +0100
+++ b/extras/mini-os/include/x86/x86_32/hypercall-x86_32.h      Thu May 08 
14:32:11 2008 +0100
@@ -220,12 +220,8 @@ HYPERVISOR_update_va_mapping(
 HYPERVISOR_update_va_mapping(
        unsigned long va, pte_t new_val, unsigned long flags)
 {
-       unsigned long pte_hi = 0;
-#ifdef CONFIG_X86_PAE
-       pte_hi = new_val.pte_high;
-#endif
        return _hypercall4(int, update_va_mapping, va,
-                          new_val.pte_low, pte_hi, flags);
+                          new_val.pte_low, new_val.pte_high, flags);
 }
 
 static inline int
@@ -267,12 +263,8 @@ HYPERVISOR_update_va_mapping_otherdomain
 HYPERVISOR_update_va_mapping_otherdomain(
        unsigned long va, pte_t new_val, unsigned long flags, domid_t domid)
 {
-       unsigned long pte_hi = 0;
-#ifdef CONFIG_X86_PAE
-       pte_hi = new_val.pte_high;
-#endif
        return _hypercall5(int, update_va_mapping_otherdomain, va,
-                          new_val.pte_low, pte_hi, flags, domid);
+                          new_val.pte_low, new_val.pte_high, flags, domid);
 }
 
 static inline int
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/Rules.mk
--- a/xen/arch/x86/Rules.mk     Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/Rules.mk     Thu May 08 14:32:11 2008 +0100
@@ -9,7 +9,6 @@ xenoprof := y
 # If you change any of these configuration options then you must
 # 'make clean' before rebuilding.
 #
-pae ?= n
 supervisor_mode_kernel ?= n
 
 # Solaris grabs stdarg.h and friends from the system include directory.
@@ -30,10 +29,6 @@ CFLAGS += $(call cc-option,$(CC),-nopie,
 CFLAGS += $(call cc-option,$(CC),-nopie,)
 CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,)
 CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,)
-
-ifeq ($(TARGET_SUBARCH)$(pae),x86_32y)
-CFLAGS += -DCONFIG_X86_PAE=1
-endif
 
 ifeq ($(supervisor_mode_kernel),y)
 CFLAGS += -DCONFIG_X86_SUPERVISOR_MODE_KERNEL=1
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/boot/head.S
--- a/xen/arch/x86/boot/head.S  Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/boot/head.S  Thu May 08 14:32:11 2008 +0100
@@ -132,7 +132,7 @@ 1:      mov     %eax,(%edi)
         mov     %eax,sym_phys(idle_pg_table) + (262*8) /* PML4[262]: 1:1 map */
         mov     $(sym_phys(l3_xenmap)+7),%eax
         mov     %eax,sym_phys(idle_pg_table) + (261*8) /* PML4[261]: xen map */
-#elif defined(CONFIG_X86_PAE)
+#else
         /* Initialize low and high mappings of memory with 2MB pages */
         mov     $sym_phys(idle_pg_table_l2),%edi
         mov     $0xe3,%eax                   /* PRESENT+RW+A+D+2MB */
@@ -147,19 +147,6 @@ 1:      stosl   /* low mappings cover up
         add     $(1<<L2_PAGETABLE_SHIFT),%eax
         cmp     $(16<<20)+0xe3,%eax
         jne     1b
-#else
-        /* Initialize low and high mappings of memory with 4MB pages */
-        mov     $sym_phys(idle_pg_table),%edi
-        mov     $0xe3,%eax                   /* PRESENT+RW+A+D+4MB */
-1:      mov     %eax,__PAGE_OFFSET>>20(%edi) /* high mapping */
-        stosl                                /* low mapping */
-        add     $(1<<L2_PAGETABLE_SHIFT),%eax
-        cmp     $DIRECTMAP_PHYS_END+0xe3,%eax
-        jne     1b
-1:      stosl   /* low mappings cover up to 16MB */
-        add     $(1<<L2_PAGETABLE_SHIFT),%eax
-        cmp     $(16<<20)+0xe3,%eax
-        jne     1b
 #endif
 
         /* Initialize 4kB mappings of first 2MB or 4MB of memory. */
@@ -170,9 +157,7 @@ 1:      stosl   /* low mappings cover up
 #endif
         xor     %ecx,%ecx
 1:      stosl
-#if CONFIG_PAGING_LEVELS >= 3
-        add     $4,%edi
-#endif
+        add     $4,%edi
         add     $PAGE_SIZE,%eax
         inc     %ecx
         /* VGA hole (0xa0000-0xc0000) should be mapped UC. */
@@ -188,12 +173,9 @@ 2:      cmp     $L1_PAGETABLE_ENTRIES,%e
 #if defined(__x86_64__)
         mov     %edi,sym_phys(l2_identmap)
         mov     %edi,sym_phys(l2_xenmap)
-#elif defined(CONFIG_X86_PAE)
+#else
         mov     %edi,sym_phys(idle_pg_table_l2)
         mov     %edi,sym_phys(idle_pg_table_l2) + (__PAGE_OFFSET>>18)
-#else
-        mov     %edi,sym_phys(idle_pg_table)
-        mov     %edi,sym_phys(idle_pg_table) + (__PAGE_OFFSET>>20)
 #endif
 
         /* Copy bootstrap trampoline to low memory, below 1MB. */
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/boot/trampoline.S
--- a/xen/arch/x86/boot/trampoline.S    Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/boot/trampoline.S    Thu May 08 14:32:11 2008 +0100
@@ -60,11 +60,7 @@ trampoline_protmode_entry:
         fninit
 
         /* Initialise CR4. */
-#if CONFIG_PAGING_LEVELS == 2
-        mov     $X86_CR4_PSE,%ecx
-#else
         mov     $X86_CR4_PAE,%ecx
-#endif
         mov     %ecx,%cr4
 
         /* Load pagetable base register. */
@@ -72,7 +68,6 @@ trampoline_protmode_entry:
         add     bootsym_phys(trampoline_xen_phys_start),%eax
         mov     %eax,%cr3
 
-#if CONFIG_PAGING_LEVELS != 2
         /* Set up EFER (Extended Feature Enable Register). */
         mov     bootsym_phys(cpuid_ext_features),%edi
         test    $0x20100800,%edi /* SYSCALL/SYSRET, No Execute, Long Mode? */
@@ -88,7 +83,6 @@ trampoline_protmode_entry:
         btsl    $_EFER_NX,%eax  /* No Execute     */
 1:      wrmsr
 .Lskip_efer:
-#endif
 
         mov     $0x80050033,%eax /* hi-to-lo: PG,AM,WP,NE,ET,MP,PE */
         mov     %eax,%cr0
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/boot/wakeup.S
--- a/xen/arch/x86/boot/wakeup.S        Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/boot/wakeup.S        Thu May 08 14:32:11 2008 +0100
@@ -126,11 +126,7 @@ wakeup_32:
         /* fpu init? */
 
         /* Initialise CR4. */
-#if CONFIG_PAGING_LEVELS == 2
-        mov     $X86_CR4_PSE, %ecx
-#else
         mov     $X86_CR4_PAE, %ecx
-#endif
         mov     %ecx, %cr4
 
         /* Load pagetable base register */
@@ -139,7 +135,6 @@ wakeup_32:
         mov     %eax,%cr3
 
         /* Will cpuid feature change after resume? */
-#if CONFIG_PAGING_LEVELS != 2
         /* Set up EFER (Extended Feature Enable Register). */
         mov     bootsym_phys(cpuid_ext_features),%edi
         test    $0x20100800,%edi /* SYSCALL/SYSRET, No Execute, Long Mode? */
@@ -155,7 +150,6 @@ wakeup_32:
         btsl    $_EFER_NX,%eax  /* No Execute     */
 1:      wrmsr
 .Lskip_eferw:
-#endif
 
         wbinvd
 
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/boot/x86_32.S
--- a/xen/arch/x86/boot/x86_32.S        Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/boot/x86_32.S        Thu May 08 14:32:11 2008 +0100
@@ -81,14 +81,12 @@ gdt_descr:
         .long   gdt_table - FIRST_RESERVED_GDT_BYTE
 
 
-#ifdef CONFIG_X86_PAE
         .align 32
 ENTRY(idle_pg_table)
         .long sym_phys(idle_pg_table_l2) + 0*PAGE_SIZE + 0x01, 0
         .long sym_phys(idle_pg_table_l2) + 1*PAGE_SIZE + 0x01, 0
         .long sym_phys(idle_pg_table_l2) + 2*PAGE_SIZE + 0x01, 0
         .long sym_phys(idle_pg_table_l2) + 3*PAGE_SIZE + 0x01, 0
-#endif
 
         .align PAGE_SIZE, 0
 /* NB. Rings != 0 get access up to MACH2PHYS_VIRT_END. This allows access to */
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/domain_build.c
--- a/xen/arch/x86/domain_build.c       Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/domain_build.c       Thu May 08 14:32:11 2008 +0100
@@ -398,11 +398,7 @@ int __init construct_dom0(
         v_end            = (vstack_end + (1UL<<22)-1) & ~((1UL<<22)-1);
         if ( (v_end - vstack_end) < (512UL << 10) )
             v_end += 1UL << 22; /* Add extra 4MB to get >= 512kB padding. */
-#if defined(__i386__) && !defined(CONFIG_X86_PAE)
-        if ( (((v_end - v_start + ((1UL<<L2_PAGETABLE_SHIFT)-1)) >>
-               L2_PAGETABLE_SHIFT) + 1) <= nr_pt_pages )
-            break;
-#elif defined(__i386__) && defined(CONFIG_X86_PAE)
+#if defined(__i386__)
         /* 5 pages: 1x 3rd + 4x 2nd level */
         if ( (((v_end - v_start + ((1UL<<L2_PAGETABLE_SHIFT)-1)) >>
                L2_PAGETABLE_SHIFT) + 5) <= nr_pt_pages )
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/hvm/vmx/vmcs.c
--- a/xen/arch/x86/hvm/vmx/vmcs.c       Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/hvm/vmx/vmcs.c       Thu May 08 14:32:11 2008 +0100
@@ -630,7 +630,7 @@ static int construct_vmcs(struct vcpu *v
     if ( paging_mode_hap(d) )
     {
         __vmwrite(EPT_POINTER, d->arch.hvm_domain.vmx.ept_control.eptp);
-#ifdef CONFIG_X86_PAE
+#ifdef __i386__
         __vmwrite(EPT_POINTER_HIGH,
                   d->arch.hvm_domain.vmx.ept_control.eptp >> 32);
 #endif
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c        Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/hvm/vmx/vmx.c        Thu May 08 14:32:11 2008 +0100
@@ -934,7 +934,7 @@ static void vmx_load_pdptrs(struct vcpu 
     __vmwrite(GUEST_PDPTR1, guest_pdptrs[1]);
     __vmwrite(GUEST_PDPTR2, guest_pdptrs[2]);
     __vmwrite(GUEST_PDPTR3, guest_pdptrs[3]);
-#ifdef CONFIG_X86_PAE
+#ifdef __i386__
     __vmwrite(GUEST_PDPTR0_HIGH, guest_pdptrs[0] >> 32);
     __vmwrite(GUEST_PDPTR1_HIGH, guest_pdptrs[1] >> 32);
     __vmwrite(GUEST_PDPTR2_HIGH, guest_pdptrs[2] >> 32);
@@ -2253,7 +2253,7 @@ asmlinkage void vmx_vmexit_handler(struc
     case EXIT_REASON_EPT_VIOLATION:
     {
         paddr_t gpa = __vmread(GUEST_PHYSICAL_ADDRESS);
-#ifdef CONFIG_X86_PAE
+#ifdef __i386__
         gpa |= (paddr_t)__vmread(GUEST_PHYSICAL_ADDRESS_HIGH) << 32;
 #endif
         exit_qualification = __vmread(EXIT_QUALIFICATION);
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/mm.c
--- a/xen/arch/x86/mm.c Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/mm.c Thu May 08 14:32:11 2008 +0100
@@ -129,7 +129,7 @@ l1_pgentry_t __attribute__ ((__section__
  *  1. Debug builds get extra checking by using CMPXCHG[8B].
  *  2. PAE builds perform an atomic 8-byte store with CMPXCHG8B.
  */
-#if !defined(NDEBUG) || defined(CONFIG_X86_PAE)
+#if !defined(NDEBUG) || defined(__i386__)
 #define PTE_UPDATE_WITH_CMPXCHG
 #endif
 
@@ -340,7 +340,7 @@ void share_xen_page_with_privileged_gues
     share_xen_page_with_guest(page, dom_xen, readonly);
 }
 
-#if defined(CONFIG_X86_PAE)
+#if defined(__i386__)
 
 #ifdef NDEBUG
 /* Only PDPTs above 4GB boundary need to be shadowed in low memory. */
@@ -416,14 +416,14 @@ void make_cr3(struct vcpu *v, unsigned l
     spin_unlock(&cache->lock);
 }
 
-#else /* !CONFIG_X86_PAE */
+#else /* !defined(__i386__) */
 
 void make_cr3(struct vcpu *v, unsigned long mfn)
 {
     v->arch.cr3 = mfn << PAGE_SHIFT;
 }
 
-#endif /* !CONFIG_X86_PAE */
+#endif /* !defined(__i386__) */
 
 void write_ptbase(struct vcpu *v)
 {
@@ -997,7 +997,6 @@ static int alloc_l1_table(struct page_in
     return 0;
 }
 
-#if defined(CONFIG_X86_PAE) || defined(CONFIG_COMPAT)
 static int create_pae_xen_mappings(struct domain *d, l3_pgentry_t *pl3e)
 {
     struct page_info *page;
@@ -1070,11 +1069,8 @@ static int create_pae_xen_mappings(struc
 
     return 1;
 }
-#else
-# define create_pae_xen_mappings(d, pl3e) (1)
-#endif
-
-#ifdef CONFIG_X86_PAE
+
+#ifdef __i386__
 /* Flush a pgdir update into low-memory caches. */
 static void pae_flush_pgd(
     unsigned long mfn, unsigned int idx, l3_pgentry_t nl3e)
@@ -1144,20 +1140,6 @@ static int alloc_l2_table(struct page_in
         adjust_guest_l2e(pl2e[i], d);
     }
 
-#if CONFIG_PAGING_LEVELS == 2
-    /* Xen private mappings. */
-    memcpy(&pl2e[L2_PAGETABLE_FIRST_XEN_SLOT],
-           &idle_pg_table[L2_PAGETABLE_FIRST_XEN_SLOT],
-           L2_PAGETABLE_XEN_SLOTS * sizeof(l2_pgentry_t));
-    pl2e[l2_table_offset(LINEAR_PT_VIRT_START)] =
-        l2e_from_pfn(pfn, __PAGE_HYPERVISOR);
-    for ( i = 0; i < PDPT_L2_ENTRIES; i++ )
-        pl2e[l2_table_offset(PERDOMAIN_VIRT_START) + i] =
-            l2e_from_page(
-                virt_to_page(page_get_owner(page)->arch.mm_perdomain_pt) + i,
-                __PAGE_HYPERVISOR);
-#endif
-
     unmap_domain_page(pl2e);
     return 1;
 
@@ -1180,7 +1162,7 @@ static int alloc_l3_table(struct page_in
     l3_pgentry_t  *pl3e;
     int            i;
 
-#ifdef CONFIG_X86_PAE
+#if CONFIG_PAGING_LEVELS == 3
     /*
      * PAE pgdirs above 4GB are unacceptable if the guest does not understand
      * the weird 'extended cr3' format for dealing with high-order address
@@ -1209,7 +1191,6 @@ static int alloc_l3_table(struct page_in
 
     for ( i = 0; i < L3_PAGETABLE_ENTRIES; i++ )
     {
-#if defined(CONFIG_X86_PAE) || defined(CONFIG_COMPAT)
         if ( is_pv_32bit_domain(d) && (i == 3) )
         {
             if ( !(l3e_get_flags(pl3e[i]) & _PAGE_PRESENT) ||
@@ -1220,12 +1201,10 @@ static int alloc_l3_table(struct page_in
                                                 d) )
                 goto fail;
         }
-        else
-#endif
-        if ( is_guest_l3_slot(i) &&
-             unlikely(!get_page_from_l3e(pl3e[i], pfn, d)) )
+        else if ( is_guest_l3_slot(i) &&
+                  unlikely(!get_page_from_l3e(pl3e[i], pfn, d)) )
             goto fail;
-        
+
         adjust_guest_l3e(pl3e[i], d);
     }
 
@@ -1562,14 +1541,12 @@ static int mod_l3_entry(l3_pgentry_t *pl
         return 0;
     }
 
-#if defined(CONFIG_X86_PAE) || defined(CONFIG_COMPAT)
     /*
      * Disallow updates to final L3 slot. It contains Xen mappings, and it
      * would be a pain to ensure they remain continuously valid throughout.
      */
     if ( is_pv_32bit_domain(d) && (pgentry_ptr_to_slot(pl3e) >= 3) )
         return 0;
-#endif 
 
     if ( unlikely(__copy_from_user(&ol3e, pl3e, sizeof(ol3e)) != 0) )
         return 0;
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/mm/hap/hap.c
--- a/xen/arch/x86/mm/hap/hap.c Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/mm/hap/hap.c Thu May 08 14:32:11 2008 +0100
@@ -311,41 +311,6 @@ static void hap_install_xen_entries_in_l
 }
 #endif
 
-#if CONFIG_PAGING_LEVELS == 2
-static void hap_install_xen_entries_in_l2(struct vcpu *v, mfn_t l2mfn)
-{
-    struct domain *d = v->domain;
-    l2_pgentry_t *l2e;
-    int i;
-
-    l2e = hap_map_domain_page(l2mfn);
-    ASSERT(l2e != NULL);
-
-    /* Copy the common Xen mappings from the idle domain */
-    memcpy(&l2e[L2_PAGETABLE_FIRST_XEN_SLOT],
-           &idle_pg_table[L2_PAGETABLE_FIRST_XEN_SLOT],
-           L2_PAGETABLE_XEN_SLOTS * sizeof(l2_pgentry_t));
-
-    /* Install the per-domain mappings for this domain */
-    for ( i = 0; i < PDPT_L2_ENTRIES; i++ )
-        l2e[l2_table_offset(PERDOMAIN_VIRT_START) + i] =
-            l2e_from_pfn(
-                mfn_x(page_to_mfn(virt_to_page(d->arch.mm_perdomain_pt) + i)),
-                __PAGE_HYPERVISOR);
-
-    /* Install the linear mapping */
-    l2e[l2_table_offset(LINEAR_PT_VIRT_START)] =
-        l2e_from_pfn(mfn_x(l2mfn), __PAGE_HYPERVISOR);
-
-    /* Install the domain-specific P2M table */
-    l2e[l2_table_offset(RO_MPT_VIRT_START)] =
-        l2e_from_pfn(mfn_x(pagetable_get_mfn(d->arch.phys_table)),
-                            __PAGE_HYPERVISOR);
-
-    hap_unmap_domain_page(l2e);
-}
-#endif
-
 static mfn_t hap_make_monitor_table(struct vcpu *v)
 {
     struct domain *d = v->domain;
@@ -395,15 +360,6 @@ static mfn_t hap_make_monitor_table(stru
         HAP_PRINTK("new monitor table: %#lx\n", mfn_x(m3mfn));
         return m3mfn;
     }
-#else
-    {
-        mfn_t m2mfn;
-        if ( (pg = hap_alloc(d)) == NULL )
-            goto oom;
-        m2mfn = page_to_mfn(pg);;
-        hap_install_xen_entries_in_l2(v, m2mfn);
-        return m2mfn;
-    }
 #endif
 
  oom:
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/mm/p2m.c
--- a/xen/arch/x86/mm/p2m.c     Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/mm/p2m.c     Thu May 08 14:32:11 2008 +0100
@@ -488,8 +488,6 @@ int p2m_alloc_table(struct domain *d,
         PGT_l4_page_table
 #elif CONFIG_PAGING_LEVELS == 3
         PGT_l3_page_table
-#elif CONFIG_PAGING_LEVELS == 2
-        PGT_l2_page_table
 #endif
         | 1 | PGT_validated;
 
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/mm/shadow/Makefile
--- a/xen/arch/x86/mm/shadow/Makefile   Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/mm/shadow/Makefile   Thu May 08 14:32:11 2008 +0100
@@ -1,9 +1,4 @@ ifneq ($(pae),n)
-ifneq ($(pae),n)
 obj-$(x86_32) += common.o g2_on_s3.o g3_on_s3.o
-else
-obj-$(x86_32) += common.o g2_on_s2.o
-endif
-
 obj-$(x86_64) += common.o g4_on_s4.o g3_on_s3.o g2_on_s3.o
 
 guest_levels  = $(subst g,,$(filter g%,$(subst ., ,$(subst _, ,$(1)))))
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/mm/shadow/common.c
--- a/xen/arch/x86/mm/shadow/common.c   Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/mm/shadow/common.c   Thu May 08 14:32:11 2008 +0100
@@ -68,8 +68,6 @@ void shadow_vcpu_init(struct vcpu *v)
     v->arch.paging.mode = &SHADOW_INTERNAL_NAME(sh_paging_mode,3,3);
 #elif CONFIG_PAGING_LEVELS == 3
     v->arch.paging.mode = &SHADOW_INTERNAL_NAME(sh_paging_mode,3,3);
-#elif CONFIG_PAGING_LEVELS == 2
-    v->arch.paging.mode = &SHADOW_INTERNAL_NAME(sh_paging_mode,2,2);
 #endif
 }
 
@@ -504,27 +502,14 @@ sh_validate_guest_entry(struct vcpu *v, 
     if ( !(page->count_info & PGC_page_table) )
         return 0;  /* Not shadowed at all */
 
-#if CONFIG_PAGING_LEVELS == 2
-    if ( page->shadow_flags & SHF_L1_32 ) 
-        result |= SHADOW_INTERNAL_NAME(sh_map_and_validate_gl1e, 2, 2)
-            (v, gmfn, entry, size);
-#else 
     if ( page->shadow_flags & SHF_L1_32 ) 
         result |= SHADOW_INTERNAL_NAME(sh_map_and_validate_gl1e, 3, 2)
             (v, gmfn, entry, size);
-#endif
-
-#if CONFIG_PAGING_LEVELS == 2
-    if ( page->shadow_flags & SHF_L2_32 ) 
-        result |= SHADOW_INTERNAL_NAME(sh_map_and_validate_gl2e, 2, 2)
-            (v, gmfn, entry, size);
-#else 
+
     if ( page->shadow_flags & SHF_L2_32 ) 
         result |= SHADOW_INTERNAL_NAME(sh_map_and_validate_gl2e, 3, 2)
             (v, gmfn, entry, size);
-#endif
-
-#if CONFIG_PAGING_LEVELS >= 3 
+
     if ( page->shadow_flags & SHF_L1_PAE ) 
         result |= SHADOW_INTERNAL_NAME(sh_map_and_validate_gl1e, 3, 3)
             (v, gmfn, entry, size);
@@ -534,9 +519,6 @@ sh_validate_guest_entry(struct vcpu *v, 
     if ( page->shadow_flags & SHF_L2H_PAE ) 
         result |= SHADOW_INTERNAL_NAME(sh_map_and_validate_gl2he, 3, 3)
             (v, gmfn, entry, size);
-#else /* 32-bit non-PAE hypervisor does not support PAE guests */
-    ASSERT((page->shadow_flags & (SHF_L2H_PAE|SHF_L2_PAE|SHF_L1_PAE)) == 0);
-#endif
 
 #if CONFIG_PAGING_LEVELS >= 4 
     if ( page->shadow_flags & SHF_L1_64 ) 
@@ -554,7 +536,7 @@ sh_validate_guest_entry(struct vcpu *v, 
     if ( page->shadow_flags & SHF_L4_64 ) 
         result |= SHADOW_INTERNAL_NAME(sh_map_and_validate_gl4e, 4, 4)
             (v, gmfn, entry, size);
-#else /* 32-bit/PAE hypervisor does not support 64-bit guests */
+#else /* 32-bit hypervisor does not support 64-bit guests */
     ASSERT((page->shadow_flags 
             & (SHF_L4_64|SHF_L3_64|SHF_L2H_64|SHF_L2_64|SHF_L1_64)) == 0);
 #endif
@@ -685,7 +667,6 @@ static inline u32
 static inline u32
 shadow_order(unsigned int shadow_type) 
 {
-#if CONFIG_PAGING_LEVELS > 2
     static const u32 type_to_order[SH_type_unused] = {
         0, /* SH_type_none           */
         1, /* SH_type_l1_32_shadow   */
@@ -706,9 +687,6 @@ shadow_order(unsigned int shadow_type)
         };
     ASSERT(shadow_type < SH_type_unused);
     return type_to_order[shadow_type];
-#else  /* 32-bit Xen only ever shadows 32-bit guests on 32-bit shadows. */
-    return 0;
-#endif
 }
 
 static inline unsigned int
@@ -745,18 +723,12 @@ static void shadow_unhook_mappings(struc
     switch ( sp->type )
     {
     case SH_type_l2_32_shadow:
-#if CONFIG_PAGING_LEVELS == 2
-        SHADOW_INTERNAL_NAME(sh_unhook_32b_mappings,2,2)(v,smfn);
-#else
         SHADOW_INTERNAL_NAME(sh_unhook_32b_mappings,3,2)(v,smfn);
-#endif
         break;
-#if CONFIG_PAGING_LEVELS >= 3
     case SH_type_l2_pae_shadow:
     case SH_type_l2h_pae_shadow:
         SHADOW_INTERNAL_NAME(sh_unhook_pae_mappings,3,3)(v,smfn);
         break;
-#endif
 #if CONFIG_PAGING_LEVELS >= 4
     case SH_type_l4_64_shadow:
         SHADOW_INTERNAL_NAME(sh_unhook_64b_mappings,4,4)(v,smfn);
@@ -1599,15 +1571,6 @@ void sh_destroy_shadow(struct vcpu *v, m
      * small numbers that the compiler will enjoy */
     switch ( t )
     {
-#if CONFIG_PAGING_LEVELS == 2
-    case SH_type_l1_32_shadow:
-    case SH_type_fl1_32_shadow:
-        SHADOW_INTERNAL_NAME(sh_destroy_l1_shadow, 2, 2)(v, smfn); 
-        break;
-    case SH_type_l2_32_shadow:
-        SHADOW_INTERNAL_NAME(sh_destroy_l2_shadow, 2, 2)(v, smfn);
-        break;
-#else /* PAE or 64bit */
     case SH_type_l1_32_shadow:
     case SH_type_fl1_32_shadow:
         SHADOW_INTERNAL_NAME(sh_destroy_l1_shadow, 3, 2)(v, smfn);
@@ -1615,9 +1578,7 @@ void sh_destroy_shadow(struct vcpu *v, m
     case SH_type_l2_32_shadow:
         SHADOW_INTERNAL_NAME(sh_destroy_l2_shadow, 3, 2)(v, smfn);
         break;
-#endif
-
-#if CONFIG_PAGING_LEVELS >= 3
+
     case SH_type_l1_pae_shadow:
     case SH_type_fl1_pae_shadow:
         SHADOW_INTERNAL_NAME(sh_destroy_l1_shadow, 3, 3)(v, smfn);
@@ -1626,7 +1587,6 @@ void sh_destroy_shadow(struct vcpu *v, m
     case SH_type_l2h_pae_shadow:
         SHADOW_INTERNAL_NAME(sh_destroy_l2_shadow, 3, 3)(v, smfn);
         break;
-#endif
 
 #if CONFIG_PAGING_LEVELS >= 4
     case SH_type_l1_64_shadow:
@@ -1666,21 +1626,11 @@ int sh_remove_write_access(struct vcpu *
     /* Dispatch table for getting per-type functions */
     static hash_callback_t callbacks[SH_type_unused] = {
         NULL, /* none    */
-#if CONFIG_PAGING_LEVELS == 2
-        SHADOW_INTERNAL_NAME(sh_rm_write_access_from_l1,2,2), /* l1_32   */
-        SHADOW_INTERNAL_NAME(sh_rm_write_access_from_l1,2,2), /* fl1_32  */
-#else 
         SHADOW_INTERNAL_NAME(sh_rm_write_access_from_l1,3,2), /* l1_32   */
         SHADOW_INTERNAL_NAME(sh_rm_write_access_from_l1,3,2), /* fl1_32  */
-#endif
         NULL, /* l2_32   */
-#if CONFIG_PAGING_LEVELS >= 3
         SHADOW_INTERNAL_NAME(sh_rm_write_access_from_l1,3,3), /* l1_pae  */
         SHADOW_INTERNAL_NAME(sh_rm_write_access_from_l1,3,3), /* fl1_pae */
-#else 
-        NULL, /* l1_pae  */
-        NULL, /* fl1_pae */
-#endif
         NULL, /* l2_pae  */
         NULL, /* l2h_pae */
 #if CONFIG_PAGING_LEVELS >= 4
@@ -1860,21 +1810,11 @@ int sh_remove_all_mappings(struct vcpu *
     /* Dispatch table for getting per-type functions */
     static hash_callback_t callbacks[SH_type_unused] = {
         NULL, /* none    */
-#if CONFIG_PAGING_LEVELS == 2
-        SHADOW_INTERNAL_NAME(sh_rm_mappings_from_l1,2,2), /* l1_32   */
-        SHADOW_INTERNAL_NAME(sh_rm_mappings_from_l1,2,2), /* fl1_32  */
-#else 
         SHADOW_INTERNAL_NAME(sh_rm_mappings_from_l1,3,2), /* l1_32   */
         SHADOW_INTERNAL_NAME(sh_rm_mappings_from_l1,3,2), /* fl1_32  */
-#endif
         NULL, /* l2_32   */
-#if CONFIG_PAGING_LEVELS >= 3
         SHADOW_INTERNAL_NAME(sh_rm_mappings_from_l1,3,3), /* l1_pae  */
         SHADOW_INTERNAL_NAME(sh_rm_mappings_from_l1,3,3), /* fl1_pae */
-#else 
-        NULL, /* l1_pae  */
-        NULL, /* fl1_pae */
-#endif
         NULL, /* l2_pae  */
         NULL, /* l2h_pae */
 #if CONFIG_PAGING_LEVELS >= 4
@@ -1978,13 +1918,8 @@ static int sh_remove_shadow_via_pointer(
     {
     case SH_type_l1_32_shadow:
     case SH_type_l2_32_shadow:
-#if CONFIG_PAGING_LEVELS == 2
-        SHADOW_INTERNAL_NAME(sh_clear_shadow_entry,2,2)(v, vaddr, pmfn);
-#else
         SHADOW_INTERNAL_NAME(sh_clear_shadow_entry,3,2)(v, vaddr, pmfn);
-#endif
         break;
-#if CONFIG_PAGING_LEVELS >=3
     case SH_type_l1_pae_shadow:
     case SH_type_l2_pae_shadow:
     case SH_type_l2h_pae_shadow:
@@ -1999,7 +1934,6 @@ static int sh_remove_shadow_via_pointer(
         SHADOW_INTERNAL_NAME(sh_clear_shadow_entry,4,4)(v, vaddr, pmfn);
         break;
 #endif
-#endif
     default: BUG(); /* Some wierd unknown shadow type */
     }
     
@@ -2032,20 +1966,11 @@ void sh_remove_shadows(struct vcpu *v, m
         NULL, /* none    */
         NULL, /* l1_32   */
         NULL, /* fl1_32  */
-#if CONFIG_PAGING_LEVELS == 2
-        SHADOW_INTERNAL_NAME(sh_remove_l1_shadow,2,2), /* l2_32   */
-#else 
         SHADOW_INTERNAL_NAME(sh_remove_l1_shadow,3,2), /* l2_32   */
-#endif
         NULL, /* l1_pae  */
         NULL, /* fl1_pae */
-#if CONFIG_PAGING_LEVELS >= 3
         SHADOW_INTERNAL_NAME(sh_remove_l1_shadow,3,3), /* l2_pae  */
         SHADOW_INTERNAL_NAME(sh_remove_l1_shadow,3,3), /* l2h_pae */
-#else 
-        NULL, /* l2_pae  */
-        NULL, /* l2h_pae */
-#endif
         NULL, /* l1_64   */
         NULL, /* fl1_64  */
 #if CONFIG_PAGING_LEVELS >= 4
@@ -2232,8 +2157,6 @@ static void sh_update_paging_modes(struc
         v->arch.paging.mode = &SHADOW_INTERNAL_NAME(sh_paging_mode,4,4);
 #elif CONFIG_PAGING_LEVELS == 3
         v->arch.paging.mode = &SHADOW_INTERNAL_NAME(sh_paging_mode,3,3);
-#elif CONFIG_PAGING_LEVELS == 2
-        v->arch.paging.mode = &SHADOW_INTERNAL_NAME(sh_paging_mode,2,2);
 #else
 #error unexpected paging mode
 #endif
@@ -3110,11 +3033,6 @@ void shadow_audit_tables(struct vcpu *v)
     /* Dispatch table for getting per-type functions */
     static hash_callback_t callbacks[SH_type_unused] = {
         NULL, /* none    */
-#if CONFIG_PAGING_LEVELS == 2
-        SHADOW_INTERNAL_NAME(sh_audit_l1_table,2,2),  /* l1_32   */
-        SHADOW_INTERNAL_NAME(sh_audit_fl1_table,2,2), /* fl1_32  */
-        SHADOW_INTERNAL_NAME(sh_audit_l2_table,2,2),  /* l2_32   */
-#else 
         SHADOW_INTERNAL_NAME(sh_audit_l1_table,3,2),  /* l1_32   */
         SHADOW_INTERNAL_NAME(sh_audit_fl1_table,3,2), /* fl1_32  */
         SHADOW_INTERNAL_NAME(sh_audit_l2_table,3,2),  /* l2_32   */
@@ -3130,7 +3048,6 @@ void shadow_audit_tables(struct vcpu *v)
         SHADOW_INTERNAL_NAME(sh_audit_l3_table,4,4),  /* l3_64   */
         SHADOW_INTERNAL_NAME(sh_audit_l4_table,4,4),  /* l4_64   */
 #endif /* CONFIG_PAGING_LEVELS >= 4 */
-#endif /* CONFIG_PAGING_LEVELS > 2 */
         NULL  /* All the rest */
     };
     unsigned int mask; 
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/mm/shadow/multi.c
--- a/xen/arch/x86/mm/shadow/multi.c    Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/mm/shadow/multi.c    Thu May 08 14:32:11 2008 +0100
@@ -1745,56 +1745,6 @@ static void sh_install_xen_entries_in_l2
 #endif
 
 
-#if CONFIG_PAGING_LEVELS == 2 && GUEST_PAGING_LEVELS == 2
-void sh_install_xen_entries_in_l2(struct vcpu *v, mfn_t gl2mfn, mfn_t sl2mfn)
-{
-    struct domain *d = v->domain;
-    shadow_l2e_t *sl2e;
-    int i;
-
-    sl2e = sh_map_domain_page(sl2mfn);
-    ASSERT(sl2e != NULL);
-    ASSERT(sizeof (l2_pgentry_t) == sizeof (shadow_l2e_t));
-    
-    /* Copy the common Xen mappings from the idle domain */
-    memcpy(&sl2e[L2_PAGETABLE_FIRST_XEN_SLOT],
-           &idle_pg_table[L2_PAGETABLE_FIRST_XEN_SLOT],
-           L2_PAGETABLE_XEN_SLOTS * sizeof(l2_pgentry_t));
-
-    /* Install the per-domain mappings for this domain */
-    for ( i = 0; i < PDPT_L2_ENTRIES; i++ )
-        sl2e[shadow_l2_table_offset(PERDOMAIN_VIRT_START) + i] =
-            shadow_l2e_from_mfn(
-                page_to_mfn(virt_to_page(d->arch.mm_perdomain_pt) + i),
-                __PAGE_HYPERVISOR);
-
-    /* Linear mapping */
-    sl2e[shadow_l2_table_offset(SH_LINEAR_PT_VIRT_START)] =
-        shadow_l2e_from_mfn(sl2mfn, __PAGE_HYPERVISOR);
-
-    if ( shadow_mode_translate(v->domain) && !shadow_mode_external(v->domain) )
-    {
-        // linear tables may not be used with translated PV guests
-        sl2e[shadow_l2_table_offset(LINEAR_PT_VIRT_START)] =
-            shadow_l2e_empty();
-    }
-    else
-    {
-        sl2e[shadow_l2_table_offset(LINEAR_PT_VIRT_START)] =
-            shadow_l2e_from_mfn(gl2mfn, __PAGE_HYPERVISOR);
-    }
-
-    if ( shadow_mode_translate(d) )
-    {
-        /* install domain-specific P2M table */
-        sl2e[shadow_l2_table_offset(RO_MPT_VIRT_START)] =
-            shadow_l2e_from_mfn(pagetable_get_mfn(d->arch.phys_table),
-                                __PAGE_HYPERVISOR);
-    }
-
-    sh_unmap_domain_page(sl2e);
-}
-#endif
 
 
 
@@ -1865,10 +1815,6 @@ sh_make_shadow(struct vcpu *v, mfn_t gmf
 #if CONFIG_PAGING_LEVELS >= 3 && GUEST_PAGING_LEVELS >= 3
         case SH_type_l2h_shadow:
             sh_install_xen_entries_in_l2h(v, smfn); break;
-#endif
-#if CONFIG_PAGING_LEVELS == 2 && GUEST_PAGING_LEVELS == 2
-        case SH_type_l2_shadow:
-            sh_install_xen_entries_in_l2(v, gmfn, smfn); break;
 #endif
         default: /* Do nothing */ break;
         }
@@ -1987,17 +1933,6 @@ sh_make_monitor_table(struct vcpu *v)
 
         SHADOW_PRINTK("new monitor table: %#lx\n", mfn_x(m3mfn));
         return m3mfn;
-    }
-
-#elif CONFIG_PAGING_LEVELS == 2
-
-    {
-        mfn_t m2mfn;
-        m2mfn = shadow_alloc(d, SH_type_monitor_table, 0);
-        sh_install_xen_entries_in_l2(v, m2mfn, m2mfn);
-        /* Remember the level of this table */
-        mfn_to_page(m2mfn)->shadow_flags = 2;
-        return m2mfn;
     }
 
 #else
@@ -3641,32 +3576,6 @@ sh_update_linear_entries(struct vcpu *v)
             sh_unmap_domain_page(l2e);
     }
 
-#elif CONFIG_PAGING_LEVELS == 2
-
-    /* For PV, one l2e points at the guest l2, one points at the shadow
-     * l2. No maintenance required. 
-     * For HVM, just need to update the l2e that points to the shadow l2. */
-
-    if ( shadow_mode_external(d) )
-    {
-        /* Use the linear map if we can; otherwise make a new mapping */
-        if ( v == current ) 
-        {
-            __linear_l2_table[l2_linear_offset(SH_LINEAR_PT_VIRT_START)] = 
-                l2e_from_pfn(pagetable_get_pfn(v->arch.shadow_table[0]),
-                             __PAGE_HYPERVISOR);
-        } 
-        else
-        { 
-            l2_pgentry_t *ml2e;
-            ml2e = 
sh_map_domain_page(pagetable_get_mfn(v->arch.monitor_table));
-            ml2e[l2_table_offset(SH_LINEAR_PT_VIRT_START)] = 
-                l2e_from_pfn(pagetable_get_pfn(v->arch.shadow_table[0]),
-                             __PAGE_HYPERVISOR);
-            sh_unmap_domain_page(ml2e);
-        }
-    }
-
 #else
 #error this should not happen
 #endif
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/mm/shadow/private.h
--- a/xen/arch/x86/mm/shadow/private.h  Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/mm/shadow/private.h  Thu May 08 14:32:11 2008 +0100
@@ -161,14 +161,6 @@ extern void shadow_audit_tables(struct v
     name ## __shadow_ ## shadow_levels ## _guest_ ## guest_levels
 #define SHADOW_INTERNAL_NAME(name, shadow_levels, guest_levels) \
     SHADOW_INTERNAL_NAME_HIDDEN(name, shadow_levels, guest_levels)
-
-#if CONFIG_PAGING_LEVELS == 2
-#define GUEST_LEVELS  2
-#define SHADOW_LEVELS 2
-#include "multi.h"
-#undef GUEST_LEVELS
-#undef SHADOW_LEVELS
-#endif /* CONFIG_PAGING_LEVELS == 2 */
 
 #if CONFIG_PAGING_LEVELS == 3
 #define GUEST_LEVELS  2
@@ -360,7 +352,6 @@ void  shadow_free(struct domain *d, mfn_
 
 /* Install the xen mappings in various flavours of shadow */
 void sh_install_xen_entries_in_l4(struct vcpu *v, mfn_t gl4mfn, mfn_t sl4mfn);
-void sh_install_xen_entries_in_l2(struct vcpu *v, mfn_t gl2mfn, mfn_t sl2mfn);
 
 /* Update the shadows in response to a pagetable write from Xen */
 int sh_validate_guest_entry(struct vcpu *v, mfn_t gmfn, void *entry, u32 size);
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/setup.c
--- a/xen/arch/x86/setup.c      Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/setup.c      Thu May 08 14:32:11 2008 +0100
@@ -121,11 +121,7 @@ char __attribute__ ((__section__(".bss.s
 
 struct cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1 };
 
-#if CONFIG_PAGING_LEVELS > 2
 unsigned long mmu_cr4_features = X86_CR4_PSE | X86_CR4_PGE | X86_CR4_PAE;
-#else
-unsigned long mmu_cr4_features = X86_CR4_PSE;
-#endif
 EXPORT_SYMBOL(mmu_cr4_features);
 
 int acpi_disabled;
@@ -1064,17 +1060,7 @@ void arch_get_xen_caps(xen_capabilities_
 
     (*info)[0] = '\0';
 
-#if defined(CONFIG_X86_32) && !defined(CONFIG_X86_PAE)
-
-    snprintf(s, sizeof(s), "xen-%d.%d-x86_32 ", major, minor);
-    safe_strcat(*info, s);
-    if ( hvm_enabled )
-    {
-        snprintf(s, sizeof(s), "hvm-%d.%d-x86_32 ", major, minor);
-        safe_strcat(*info, s);
-    }
-
-#elif defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE)
+#if defined(CONFIG_X86_32)
 
     snprintf(s, sizeof(s), "xen-%d.%d-x86_32p ", major, minor);
     safe_strcat(*info, s);
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/traps.c
--- a/xen/arch/x86/traps.c      Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/traps.c      Thu May 08 14:32:11 2008 +0100
@@ -1021,13 +1021,13 @@ static int __spurious_page_fault(
 
 #if CONFIG_PAGING_LEVELS >= 3
     l3t  = map_domain_page(mfn);
-#ifdef CONFIG_X86_PAE
+#if CONFIG_PAGING_LEVELS == 3
     l3t += (cr3 & 0xFE0UL) >> 3;
 #endif
     l3e = l3e_read_atomic(&l3t[l3_table_offset(addr)]);
     mfn = l3e_get_pfn(l3e);
     unmap_domain_page(l3t);
-#ifdef CONFIG_X86_PAE
+#if CONFIG_PAGING_LEVELS == 3
     if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) )
         return 0;
 #else
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/x86_32/mm.c
--- a/xen/arch/x86/x86_32/mm.c  Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/x86_32/mm.c  Thu May 08 14:32:11 2008 +0100
@@ -30,13 +30,8 @@
 #include <asm/fixmap.h>
 #include <public/memory.h>
 
-#ifdef CONFIG_X86_PAE
 l2_pgentry_t __attribute__ ((__section__ (".bss.page_aligned")))
     idle_pg_table_l2[4 * L2_PAGETABLE_ENTRIES];
-#else
-l2_pgentry_t __attribute__ ((__section__ (".bss.page_aligned")))
-    idle_pg_table_l2[L2_PAGETABLE_ENTRIES];
-#endif
 
 extern l1_pgentry_t l1_identmap[L1_PAGETABLE_ENTRIES];
 
@@ -73,12 +68,6 @@ void __init paging_init(void)
     unsigned long v;
     struct page_info *pg;
     int i;
-
-#ifdef CONFIG_X86_PAE
-    printk("PAE enabled, limit: %d GB\n", MACHPHYS_MBYTES);
-#else
-    printk("PAE disabled.\n");
-#endif
 
     if ( cpu_has_pge )
     {
diff -r b0d7780794eb -r 8bd776540ab3 xen/arch/x86/x86_32/traps.c
--- a/xen/arch/x86/x86_32/traps.c       Thu May 08 13:40:40 2008 +0100
+++ b/xen/arch/x86/x86_32/traps.c       Thu May 08 14:32:11 2008 +0100
@@ -21,14 +21,10 @@ static void print_xen_info(void)
 static void print_xen_info(void)
 {
     char taint_str[TAINT_STRING_MAX_LEN];
-    char debug = 'n', *arch = "x86_32";
+    char debug = 'n', *arch = "x86_32p";
 
 #ifndef NDEBUG
     debug = 'y';
-#endif
-
-#ifdef CONFIG_X86_PAE
-    arch = "x86_32p";
 #endif
 
     printk("----[ Xen-%d.%d%s  %s  debug=%c  %s ]----\n",
@@ -117,9 +113,7 @@ void show_page_walk(unsigned long addr)
 void show_page_walk(unsigned long addr)
 {
     unsigned long pfn, mfn, cr3 = read_cr3();
-#ifdef CONFIG_X86_PAE
     l3_pgentry_t l3e, *l3t;
-#endif
     l2_pgentry_t l2e, *l2t;
     l1_pgentry_t l1e, *l1t;
 
@@ -127,7 +121,6 @@ void show_page_walk(unsigned long addr)
 
     mfn = cr3 >> PAGE_SHIFT;
 
-#ifdef CONFIG_X86_PAE
     l3t  = map_domain_page(mfn);
     l3t += (cr3 & 0xFE0UL) >> 3;
     l3e = l3t[l3_table_offset(addr)];
@@ -138,7 +131,6 @@ void show_page_walk(unsigned long addr)
     unmap_domain_page(l3t);
     if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) )
         return;
-#endif
 
     l2t = map_domain_page(mfn);
     l2e = l2t[l2_table_offset(addr)];
diff -r b0d7780794eb -r 8bd776540ab3 xen/include/asm-x86/config.h
--- a/xen/include/asm-x86/config.h      Thu May 08 13:40:40 2008 +0100
+++ b/xen/include/asm-x86/config.h      Thu May 08 14:32:11 2008 +0100
@@ -9,10 +9,8 @@
 
 #if defined(__x86_64__)
 # define CONFIG_PAGING_LEVELS 4
-#elif defined(CONFIG_X86_PAE)
+#else
 # define CONFIG_PAGING_LEVELS 3
-#else
-# define CONFIG_PAGING_LEVELS 2
 #endif
 
 #define CONFIG_X86 1
@@ -274,17 +272,17 @@ extern unsigned int video_mode, video_fl
 #define asmlinkage __attribute__((regparm(0)))
 
 /*
- * Memory layout (high to low):                          SIZE   PAE-SIZE
- *                                                       ------ ------
+ * Memory layout (high to low):                          PAE-SIZE
+ *                                                       ------
  *  I/O remapping area                                   ( 4MB)
  *  Direct-map (1:1) area [Xen code/data/heap]           (12MB)
  *  Per-domain mappings (inc. 4MB map_domain_page cache) ( 8MB)
- *  Shadow linear pagetable                              ( 4MB) ( 8MB)
- *  Guest linear pagetable                               ( 4MB) ( 8MB)
- *  Machine-to-physical translation table [writable]     ( 4MB) (16MB)
- *  Frame-info table                                     (24MB) (96MB)
+ *  Shadow linear pagetable                              ( 8MB)
+ *  Guest linear pagetable                               ( 8MB)
+ *  Machine-to-physical translation table [writable]     (16MB)
+ *  Frame-info table                                     (96MB)
  *   * Start of guest inaccessible area
- *  Machine-to-physical translation table [read-only]    ( 4MB) (16MB)
+ *  Machine-to-physical translation table [read-only]    (16MB)
  *   * Start of guest unmodifiable area
  */
 
@@ -293,15 +291,9 @@ extern unsigned int video_mode, video_fl
 #define MAPCACHE_MBYTES          4
 #define PERDOMAIN_MBYTES         8
 
-#ifdef CONFIG_X86_PAE
-# define LINEARPT_MBYTES         8
-# define MACHPHYS_MBYTES        16 /* 1 MB needed per 1 GB memory */
-# define FRAMETABLE_MBYTES (MACHPHYS_MBYTES * 6)
-#else
-# define LINEARPT_MBYTES         4
-# define MACHPHYS_MBYTES         4
-# define FRAMETABLE_MBYTES      24
-#endif
+#define LINEARPT_MBYTES          8
+#define MACHPHYS_MBYTES         16 /* 1 MB needed per 1 GB memory */
+#define FRAMETABLE_MBYTES       (MACHPHYS_MBYTES * 6)
 
 #define IOREMAP_VIRT_END       0UL
 #define IOREMAP_VIRT_START     (IOREMAP_VIRT_END - (IOREMAP_MBYTES<<20))
@@ -328,13 +320,8 @@ extern unsigned int video_mode, video_fl
 /* Maximum linear address accessible via guest memory segments. */
 #define GUEST_SEGMENT_MAX_ADDR  RO_MPT_VIRT_END
 
-#ifdef CONFIG_X86_PAE
 /* Hypervisor owns top 168MB of virtual address space. */
 #define HYPERVISOR_VIRT_START   mk_unsigned_long(0xF5800000)
-#else
-/* Hypervisor owns top 64MB of virtual address space. */
-#define HYPERVISOR_VIRT_START   mk_unsigned_long(0xFC000000)
-#endif
 
 #define L2_PAGETABLE_FIRST_XEN_SLOT \
     (HYPERVISOR_VIRT_START >> L2_PAGETABLE_SHIFT)
@@ -343,11 +330,7 @@ extern unsigned int video_mode, video_fl
 #define L2_PAGETABLE_XEN_SLOTS \
     (L2_PAGETABLE_LAST_XEN_SLOT - L2_PAGETABLE_FIRST_XEN_SLOT + 1)
 
-#ifdef CONFIG_X86_PAE
-# define PGT_base_page_table     PGT_l3_page_table
-#else
-# define PGT_base_page_table     PGT_l2_page_table
-#endif
+#define PGT_base_page_table     PGT_l3_page_table
 
 #define __HYPERVISOR_CS 0xe008
 #define __HYPERVISOR_DS 0xe010
diff -r b0d7780794eb -r 8bd776540ab3 xen/include/asm-x86/domain.h
--- a/xen/include/asm-x86/domain.h      Thu May 08 13:40:40 2008 +0100
+++ b/xen/include/asm-x86/domain.h      Thu May 08 14:32:11 2008 +0100
@@ -255,7 +255,7 @@ struct arch_domain
     cpuid_input_t cpuids[MAX_CPUID_INPUT];
 } __cacheline_aligned;
 
-#ifdef CONFIG_X86_PAE
+#ifdef __i386__
 struct pae_l3_cache {
     /*
      * Two low-memory (<4GB) PAE L3 tables, used as fallback when the guest
@@ -269,7 +269,7 @@ struct pae_l3_cache {
     spinlock_t    lock;
 };
 #define pae_l3_cache_init(c) spin_lock_init(&(c)->lock)
-#else /* !CONFIG_X86_PAE */
+#else /* !defined(__i386__) */
 struct pae_l3_cache { };
 #define pae_l3_cache_init(c) ((void)0)
 #endif
diff -r b0d7780794eb -r 8bd776540ab3 xen/include/asm-x86/fixmap.h
--- a/xen/include/asm-x86/fixmap.h      Thu May 08 13:40:40 2008 +0100
+++ b/xen/include/asm-x86/fixmap.h      Thu May 08 14:32:11 2008 +0100
@@ -29,7 +29,7 @@
  * from the end of virtual memory backwards.
  */
 enum fixed_addresses {
-#ifdef CONFIG_X86_PAE
+#ifdef __i386__
     FIX_PAE_HIGHMEM_0,
     FIX_PAE_HIGHMEM_END = FIX_PAE_HIGHMEM_0 + NR_CPUS-1,
 #endif
diff -r b0d7780794eb -r 8bd776540ab3 xen/include/asm-x86/mm.h
--- a/xen/include/asm-x86/mm.h  Thu May 08 13:40:40 2008 +0100
+++ b/xen/include/asm-x86/mm.h  Thu May 08 14:32:11 2008 +0100
@@ -122,11 +122,7 @@ static inline u32 pickle_domptr(struct d
 #endif
 
 /* The order of the largest allocation unit we use for shadow pages */
-#if CONFIG_PAGING_LEVELS == 2
-#define SHADOW_MAX_ORDER 0 /* Only ever need 4k allocations */
-#else  
 #define SHADOW_MAX_ORDER 2 /* Need up to 16k allocs for 32-bit on PAE/64 */
-#endif
 
 #define page_get_owner(_p)    (unpickle_domptr((_p)->u.inuse._domain))
 #define page_set_owner(_p,_d) ((_p)->u.inuse._domain = pickle_domptr(_d))
diff -r b0d7780794eb -r 8bd776540ab3 xen/include/asm-x86/page.h
--- a/xen/include/asm-x86/page.h        Thu May 08 13:40:40 2008 +0100
+++ b/xen/include/asm-x86/page.h        Thu May 08 14:32:11 2008 +0100
@@ -123,13 +123,11 @@ static inline l2_pgentry_t l2e_from_padd
     ASSERT((pa & ~(PADDR_MASK & PAGE_MASK)) == 0);
     return (l2_pgentry_t) { pa | put_pte_flags(flags) };
 }
-#if CONFIG_PAGING_LEVELS >= 3
 static inline l3_pgentry_t l3e_from_paddr(paddr_t pa, unsigned int flags)
 {
     ASSERT((pa & ~(PADDR_MASK & PAGE_MASK)) == 0);
     return (l3_pgentry_t) { pa | put_pte_flags(flags) };
 }
-#endif
 #if CONFIG_PAGING_LEVELS >= 4
 static inline l4_pgentry_t l4e_from_paddr(paddr_t pa, unsigned int flags)
 {
@@ -195,10 +193,7 @@ static inline l4_pgentry_t l4e_from_padd
 #ifndef __ASSEMBLY__
 
 /* Page-table type. */
-#if CONFIG_PAGING_LEVELS == 2
-/* x86_32 default */
-typedef struct { u32 pfn; } pagetable_t;
-#elif CONFIG_PAGING_LEVELS == 3
+#if CONFIG_PAGING_LEVELS == 3
 /* x86_32 PAE */
 typedef struct { u32 pfn; } pagetable_t;
 #elif CONFIG_PAGING_LEVELS == 4
@@ -251,12 +246,6 @@ void clear_page_sse2(void *);
 #endif /* !defined(__ASSEMBLY__) */
 
 /* High table entries are reserved by the hypervisor. */
-#if defined(CONFIG_X86_32) && !defined(CONFIG_X86_PAE)
-#define DOMAIN_ENTRIES_PER_L2_PAGETABLE     \
-  (HYPERVISOR_VIRT_START >> L2_PAGETABLE_SHIFT)
-#define HYPERVISOR_ENTRIES_PER_L2_PAGETABLE \
-  (L2_PAGETABLE_ENTRIES - DOMAIN_ENTRIES_PER_L2_PAGETABLE)
-#else
 #define DOMAIN_ENTRIES_PER_L2_PAGETABLE     0
 #define HYPERVISOR_ENTRIES_PER_L2_PAGETABLE 0
 
@@ -267,7 +256,6 @@ void clear_page_sse2(void *);
 #define HYPERVISOR_ENTRIES_PER_L4_PAGETABLE \
     (L4_PAGETABLE_ENTRIES - GUEST_ENTRIES_PER_L4_PAGETABLE  \
      + DOMAIN_ENTRIES_PER_L4_PAGETABLE)
-#endif
 
 /* Where to find each level of the linear mapping */
 #define __linear_l1_table ((l1_pgentry_t *)(LINEAR_PT_VIRT_START))
@@ -284,8 +272,6 @@ extern root_pgentry_t idle_pg_table[ROOT
 #if CONFIG_PAGING_LEVELS == 3
 extern l2_pgentry_t   idle_pg_table_l2[
     ROOT_PAGETABLE_ENTRIES * L2_PAGETABLE_ENTRIES];
-#elif CONFIG_PAGING_LEVELS == 2
-#define idle_pg_table_l2 idle_pg_table
 #elif CONFIG_PAGING_LEVELS == 4
 extern l2_pgentry_t  *compat_idle_pg_table_l2;
 extern unsigned int   m2p_compat_vstart;
diff -r b0d7780794eb -r 8bd776540ab3 xen/include/asm-x86/types.h
--- a/xen/include/asm-x86/types.h       Thu May 08 13:40:40 2008 +0100
+++ b/xen/include/asm-x86/types.h       Thu May 08 14:32:11 2008 +0100
@@ -36,15 +36,9 @@ typedef unsigned int u32;
 #if defined(__i386__)
 typedef signed long long s64;
 typedef unsigned long long u64;
-#if defined(CONFIG_X86_PAE)
 typedef u64 paddr_t;
 #define INVALID_PADDR (~0ULL)
 #define PRIpaddr "016llx"
-#else
-typedef unsigned long paddr_t;
-#define INVALID_PADDR (~0UL)
-#define PRIpaddr "08lx"
-#endif
 #elif defined(__x86_64__)
 typedef signed long s64;
 typedef unsigned long u64;
diff -r b0d7780794eb -r 8bd776540ab3 xen/include/asm-x86/x86_32/page-2level.h
--- a/xen/include/asm-x86/x86_32/page-2level.h  Thu May 08 13:40:40 2008 +0100
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-#ifndef __X86_32_PAGE_2LEVEL_H__
-#define __X86_32_PAGE_2LEVEL_H__
-
-#define L1_PAGETABLE_SHIFT      12
-#define L2_PAGETABLE_SHIFT      22
-#define PAGE_SHIFT              L1_PAGETABLE_SHIFT
-#define ROOT_PAGETABLE_SHIFT    L2_PAGETABLE_SHIFT
-
-#define PAGETABLE_ORDER         10
-#define L1_PAGETABLE_ENTRIES    (1<<PAGETABLE_ORDER)
-#define L2_PAGETABLE_ENTRIES    (1<<PAGETABLE_ORDER)
-#define ROOT_PAGETABLE_ENTRIES  L2_PAGETABLE_ENTRIES
-
-#define PADDR_BITS              32
-#define PADDR_MASK              (~0UL)
-
-#ifndef __ASSEMBLY__
-
-#include <asm/types.h>
-
-/* read access (should only be used for debug printk's) */
-typedef u32 intpte_t;
-#define PRIpte "08x"
-
-typedef struct { intpte_t l1; } l1_pgentry_t;
-typedef struct { intpte_t l2; } l2_pgentry_t;
-typedef l2_pgentry_t root_pgentry_t;
-
-#endif /* !__ASSEMBLY__ */
-
-#define pte_read_atomic(ptep)       (*(ptep))
-#define pte_write_atomic(ptep, pte) (*(ptep) = (pte))
-#define pte_write(ptep, pte)        (*(ptep) = (pte))
-
-/* root table */
-#define root_get_pfn              l2e_get_pfn
-#define root_get_flags            l2e_get_flags
-#define root_get_intpte           l2e_get_intpte
-#define root_empty                l2e_empty
-#define root_from_paddr           l2e_from_paddr
-#define PGT_root_page_table       PGT_l2_page_table
-
-/* misc */
-#define is_guest_l1_slot(_s)    (1)
-#define is_guest_l2_slot(_d, _t,_s) ((_s) < L2_PAGETABLE_FIRST_XEN_SLOT)
-
-/*
- * PTE pfn and flags:
- *  20-bit pfn   = (pte[31:12])
- *  12-bit flags = (pte[11:0])
- */
-
-#define _PAGE_NX_BIT            0U
-#define _PAGE_NX                0U
-
-/* Extract flags into 12-bit integer, or turn 12-bit flags into a pte mask. */
-#define get_pte_flags(x) ((int)(x) & 0xFFF)
-#define put_pte_flags(x) ((intpte_t)((x) & 0xFFF))
-
-#endif /* __X86_32_PAGE_2LEVEL_H__ */
diff -r b0d7780794eb -r 8bd776540ab3 xen/include/asm-x86/x86_32/page-3level.h
--- a/xen/include/asm-x86/x86_32/page-3level.h  Thu May 08 13:40:40 2008 +0100
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-#ifndef __X86_32_PAGE_3LEVEL_H__
-#define __X86_32_PAGE_3LEVEL_H__
-
-#define L1_PAGETABLE_SHIFT      12
-#define L2_PAGETABLE_SHIFT      21
-#define L3_PAGETABLE_SHIFT      30
-#define PAGE_SHIFT              L1_PAGETABLE_SHIFT
-#define ROOT_PAGETABLE_SHIFT    L3_PAGETABLE_SHIFT
-
-#define PAGETABLE_ORDER         9
-#define L1_PAGETABLE_ENTRIES    (1<<PAGETABLE_ORDER)
-#define L2_PAGETABLE_ENTRIES    (1<<PAGETABLE_ORDER)
-#define L3_PAGETABLE_ENTRIES    4
-#define ROOT_PAGETABLE_ENTRIES  L3_PAGETABLE_ENTRIES
-
-/*
- * Architecturally, physical addresses may be up to 52 bits. However, the
- * page-frame number (pfn) of a 52-bit address will not fit into a 32-bit
- * word. Instead we treat bits 44-51 of a pte as flag bits which are never
- * allowed to be set by a guest kernel. This 'limits' us to addressing 16TB
- * of physical memory on a 32-bit PAE system.
- */
-#define PADDR_BITS              44
-#define PADDR_MASK              ((1ULL << PADDR_BITS)-1)
-
-#ifndef __ASSEMBLY__
-
-#include <asm/types.h>
-
-/* read access (should only be used for debug printk's) */
-typedef u64 intpte_t;
-#define PRIpte "016llx"
-
-typedef struct { intpte_t l1; } l1_pgentry_t;
-typedef struct { intpte_t l2; } l2_pgentry_t;
-typedef struct { intpte_t l3; } l3_pgentry_t;
-typedef l3_pgentry_t root_pgentry_t;
-
-#endif /* !__ASSEMBLY__ */
-
-#define pte_read_atomic(ptep) ({                              \
-    intpte_t __pte = *(ptep), __npte;                         \
-    while ( (__npte = cmpxchg(ptep, __pte, __pte)) != __pte ) \
-        __pte = __npte;                                       \
-    __pte; })
-#define pte_write_atomic(ptep, pte) do {                      \
-    intpte_t __pte = *(ptep), __npte;                         \
-    while ( (__npte = cmpxchg(ptep, __pte, (pte))) != __pte ) \
-        __pte = __npte;                                       \
-} while ( 0 )
-#define pte_write(ptep, pte) do {                             \
-    u32 *__ptep_words = (u32 *)(ptep);                        \
-    __ptep_words[0] = 0;                                      \
-    wmb();                                                    \
-    __ptep_words[1] = (pte) >> 32;                            \
-    wmb();                                                    \
-    __ptep_words[0] = (pte) >>  0;                            \
-} while ( 0 )
-
-/* root table */
-#define root_get_pfn              l3e_get_pfn
-#define root_get_flags            l3e_get_flags
-#define root_get_intpte           l3e_get_intpte
-#define root_empty                l3e_empty
-#define root_from_paddr           l3e_from_paddr
-#define PGT_root_page_table       PGT_l3_page_table
-
-/* misc */
-#define is_guest_l1_slot(s)    (1)
-#define is_guest_l2_slot(d,t,s)                                            \
-    ( !((t) & PGT_pae_xen_l2) ||                                           \
-      ((s) < (L2_PAGETABLE_FIRST_XEN_SLOT & (L2_PAGETABLE_ENTRIES - 1))) )
-#define is_guest_l3_slot(s)    (1)
-
-/*
- * PTE pfn and flags:
- *  32-bit pfn   = (pte[43:12])
- *  32-bit flags = (pte[63:44],pte[11:0])
- */
-
-#define _PAGE_NX_BIT (1U<<31)
-#define _PAGE_NX     (cpu_has_nx ? _PAGE_NX_BIT : 0)
-
-/* Extract flags into 32-bit integer, or turn 32-bit flags into a pte mask. */
-#define get_pte_flags(x) (((int)((x) >> 32) & ~0xFFF) | ((int)(x) & 0xFFF))
-#define put_pte_flags(x) (((intpte_t)((x) & ~0xFFF) << 32) | ((x) & 0xFFF))
-
-#define L3_DISALLOW_MASK 0xFFFFF1FEU /* must-be-zero */
-
-#endif /* __X86_32_PAGE_3LEVEL_H__ */
diff -r b0d7780794eb -r 8bd776540ab3 xen/include/asm-x86/x86_32/page.h
--- a/xen/include/asm-x86/x86_32/page.h Thu May 08 13:40:40 2008 +0100
+++ b/xen/include/asm-x86/x86_32/page.h Thu May 08 14:32:11 2008 +0100
@@ -1,6 +1,28 @@
 
 #ifndef __X86_32_PAGE_H__
 #define __X86_32_PAGE_H__
+
+#define L1_PAGETABLE_SHIFT      12
+#define L2_PAGETABLE_SHIFT      21
+#define L3_PAGETABLE_SHIFT      30
+#define PAGE_SHIFT              L1_PAGETABLE_SHIFT
+#define ROOT_PAGETABLE_SHIFT    L3_PAGETABLE_SHIFT
+
+#define PAGETABLE_ORDER         9
+#define L1_PAGETABLE_ENTRIES    (1<<PAGETABLE_ORDER)
+#define L2_PAGETABLE_ENTRIES    (1<<PAGETABLE_ORDER)
+#define L3_PAGETABLE_ENTRIES    4
+#define ROOT_PAGETABLE_ENTRIES  L3_PAGETABLE_ENTRIES
+
+/*
+ * Architecturally, physical addresses may be up to 52 bits. However, the
+ * page-frame number (pfn) of a 52-bit address will not fit into a 32-bit
+ * word. Instead we treat bits 44-51 of a pte as flag bits which are never
+ * allowed to be set by a guest kernel. This 'limits' us to addressing 16TB
+ * of physical memory on a 32-bit PAE system.
+ */
+#define PADDR_BITS              44
+#define PADDR_MASK              ((1ULL << PADDR_BITS)-1)
 
 #define __PAGE_OFFSET           (0xFF000000)
 #define __XEN_VIRT_START        __PAGE_OFFSET
@@ -13,21 +35,75 @@
 
 #define is_canonical_address(x) 1
 
-#include <xen/config.h>
-#ifdef CONFIG_X86_PAE
-# include <asm/x86_32/page-3level.h>
-#else
-# include <asm/x86_32/page-2level.h>
-#endif
-
 /* Given a virtual address, get an entry offset into a linear page table. */
 #define l1_linear_offset(_a) ((_a) >> L1_PAGETABLE_SHIFT)
 #define l2_linear_offset(_a) ((_a) >> L2_PAGETABLE_SHIFT)
 
 #ifndef __ASSEMBLY__
+
+#include <xen/config.h>
+#include <asm/types.h>
+
+/* read access (should only be used for debug printk's) */
+typedef u64 intpte_t;
+#define PRIpte "016llx"
+
+typedef struct { intpte_t l1; } l1_pgentry_t;
+typedef struct { intpte_t l2; } l2_pgentry_t;
+typedef struct { intpte_t l3; } l3_pgentry_t;
+typedef l3_pgentry_t root_pgentry_t;
+
 extern unsigned int PAGE_HYPERVISOR;
 extern unsigned int PAGE_HYPERVISOR_NOCACHE;
+
 #endif
+
+#define pte_read_atomic(ptep) ({                              \
+    intpte_t __pte = *(ptep), __npte;                         \
+    while ( (__npte = cmpxchg(ptep, __pte, __pte)) != __pte ) \
+        __pte = __npte;                                       \
+    __pte; })
+#define pte_write_atomic(ptep, pte) do {                      \
+    intpte_t __pte = *(ptep), __npte;                         \
+    while ( (__npte = cmpxchg(ptep, __pte, (pte))) != __pte ) \
+        __pte = __npte;                                       \
+} while ( 0 )
+#define pte_write(ptep, pte) do {                             \
+    u32 *__ptep_words = (u32 *)(ptep);                        \
+    __ptep_words[0] = 0;                                      \
+    wmb();                                                    \
+    __ptep_words[1] = (pte) >> 32;                            \
+    wmb();                                                    \
+    __ptep_words[0] = (pte) >>  0;                            \
+} while ( 0 )
+
+/* root table */
+#define root_get_pfn              l3e_get_pfn
+#define root_get_flags            l3e_get_flags
+#define root_get_intpte           l3e_get_intpte
+#define root_empty                l3e_empty
+#define root_from_paddr           l3e_from_paddr
+#define PGT_root_page_table       PGT_l3_page_table
+
+/* misc */
+#define is_guest_l1_slot(s)    (1)
+#define is_guest_l2_slot(d,t,s)                                            \
+    ( !((t) & PGT_pae_xen_l2) ||                                           \
+      ((s) < (L2_PAGETABLE_FIRST_XEN_SLOT & (L2_PAGETABLE_ENTRIES - 1))) )
+#define is_guest_l3_slot(s)    (1)
+
+/*
+ * PTE pfn and flags:
+ *  32-bit pfn   = (pte[43:12])
+ *  32-bit flags = (pte[63:44],pte[11:0])
+ */
+
+#define _PAGE_NX_BIT (1U<<31)
+#define _PAGE_NX     (cpu_has_nx ? _PAGE_NX_BIT : 0)
+
+/* Extract flags into 32-bit integer, or turn 32-bit flags into a pte mask. */
+#define get_pte_flags(x) (((int)((x) >> 32) & ~0xFFF) | ((int)(x) & 0xFFF))
+#define put_pte_flags(x) (((intpte_t)((x) & ~0xFFF) << 32) | ((x) & 0xFFF))
 
 #define GRANT_PTE_FLAGS \
     (_PAGE_PRESENT|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_GNTTAB)
@@ -40,6 +116,7 @@ extern unsigned int PAGE_HYPERVISOR_NOCA
 
 #define L1_DISALLOW_MASK (BASE_DISALLOW_MASK | _PAGE_GNTTAB)
 #define L2_DISALLOW_MASK (BASE_DISALLOW_MASK)
+#define L3_DISALLOW_MASK 0xFFFFF1FEU /* must-be-zero */
 
 #endif /* __X86_32_PAGE_H__ */
 
diff -r b0d7780794eb -r 8bd776540ab3 xen/include/public/arch-x86/xen-x86_32.h
--- a/xen/include/public/arch-x86/xen-x86_32.h  Thu May 08 13:40:40 2008 +0100
+++ b/xen/include/public/arch-x86/xen-x86_32.h  Thu May 08 14:32:11 2008 +0100
@@ -74,6 +74,7 @@
 #define MACH2PHYS_VIRT_END_PAE         \
     mk_unsigned_long(__MACH2PHYS_VIRT_END_PAE)
 
+/* Non-PAE bounds are obsolete. */
 #define __HYPERVISOR_VIRT_START_NONPAE 0xFC000000
 #define __MACH2PHYS_VIRT_START_NONPAE  0xFC000000
 #define __MACH2PHYS_VIRT_END_NONPAE    0xFC400000
@@ -84,15 +85,9 @@
 #define MACH2PHYS_VIRT_END_NONPAE      \
     mk_unsigned_long(__MACH2PHYS_VIRT_END_NONPAE)
 
-#ifdef CONFIG_X86_PAE
 #define __HYPERVISOR_VIRT_START __HYPERVISOR_VIRT_START_PAE
 #define __MACH2PHYS_VIRT_START  __MACH2PHYS_VIRT_START_PAE
 #define __MACH2PHYS_VIRT_END    __MACH2PHYS_VIRT_END_PAE
-#else
-#define __HYPERVISOR_VIRT_START __HYPERVISOR_VIRT_START_NONPAE
-#define __MACH2PHYS_VIRT_START  __MACH2PHYS_VIRT_START_NONPAE
-#define __MACH2PHYS_VIRT_END    __MACH2PHYS_VIRT_END_NONPAE
-#endif
 
 #ifndef HYPERVISOR_VIRT_START
 #define HYPERVISOR_VIRT_START mk_unsigned_long(__HYPERVISOR_VIRT_START)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.