diff -urN 2.4.3aa/arch/i386/config.in 2.4.3aa-virtual/arch/i386/config.in --- 2.4.3aa/arch/i386/config.in Fri Feb 9 17:34:03 2001 +++ 2.4.3aa-virtual/arch/i386/config.in Sun Apr 1 11:58:08 2001 @@ -151,6 +151,9 @@ define_bool CONFIG_HIGHMEM y define_bool CONFIG_X86_PAE y fi +if [ "$CONFIG_NOHIGHMEM" = "y" ]; then + define_bool CONFIG_NO_PAGE_VIRTUAL y +fi bool 'Math emulation' CONFIG_MATH_EMULATION bool 'MTRR (Memory Type Range Register) support' CONFIG_MTRR diff -urN 2.4.3aa/include/asm-i386/pgtable.h 2.4.3aa-virtual/include/asm-i386/pgtable.h --- 2.4.3aa/include/asm-i386/pgtable.h Sun Apr 1 11:42:51 2001 +++ 2.4.3aa-virtual/include/asm-i386/pgtable.h Sun Apr 1 11:58:08 2001 @@ -255,7 +255,11 @@ * Permanent address of a page. Obviously must never be * called on a highmem page. */ +#ifdef CONFIG_NO_PAGE_VIRTUAL +#define page_address(page) __va((page - mem_map) << PAGE_SHIFT) +#else #define page_address(page) ((page)->virtual) +#endif #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) /* diff -urN 2.4.3aa/include/linux/mm.h 2.4.3aa-virtual/include/linux/mm.h --- 2.4.3aa/include/linux/mm.h Sun Apr 1 11:52:10 2001 +++ 2.4.3aa-virtual/include/linux/mm.h Sun Apr 1 11:58:08 2001 @@ -143,7 +143,9 @@ wait_queue_head_t wait; struct page **pprev_hash; struct buffer_head * buffers; +#ifndef CONFIG_NO_PAGE_VIRTUAL void *virtual; /* non-NULL if kmapped */ +#endif struct zone_struct *zone; } mem_map_t; diff -urN 2.4.3aa/mm/page_alloc.c 2.4.3aa-virtual/mm/page_alloc.c --- 2.4.3aa/mm/page_alloc.c Sun Apr 1 11:52:10 2001 +++ 2.4.3aa-virtual/mm/page_alloc.c Sun Apr 1 11:58:44 2001 @@ -850,8 +850,10 @@ for (i = 0; i < size; i++) { struct page *page = mem_map + offset + i; page->zone = zone; +#ifndef CONFIG_NO_PAGE_VIRTUAL if (j != ZONE_HIGHMEM) page->virtual = __va(zone_start_paddr); +#endif zone_start_paddr += PAGE_SIZE; }