Index: kernel/arch/xen32/Makefile.inc
===================================================================
--- kernel/arch/xen32/Makefile.inc	(revision 231fcb23cee33316ea3e310a65aa685ed0fc8538)
+++ kernel/arch/xen32/Makefile.inc	(revision f6ed1ae0138f8959995e82827b74a793e31488e4)
@@ -1,1 +1,135 @@
-../ia32/Makefile.inc
+#
+# Copyright (C) 2006 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# - The name of the author may not be used to endorse or promote products
+#   derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+## Toolchain configuration
+#
+
+BFD_NAME = elf32-i386
+BFD_ARCH = i386
+BFD = elf32-i386
+TARGET = i686-pc-linux-gnu
+TOOLCHAIN_DIR = /usr/local/i686/bin
+
+DEFS += -DMACHINE=$(MACHINE) -D__32_BITS__
+
+## Accepted CPUs
+#
+
+ifeq ($(MACHINE),athlon-xp)
+	CFLAGS += -march=athlon-xp -mmmx -msse -m3dnow
+	DEFS += -DCONFIG_FENCES_P3
+	CONFIG_SMP = n
+	CONFIG_HT = n
+endif
+ifeq ($(MACHINE),athlon-mp)
+	CFLAGS += -march=athlon-mp -mmmx -msse -m3dnow
+	DEFS += -DCONFIG_FENCES_P3
+	CONFIG_HT = n
+endif
+ifeq ($(MACHINE),pentium3)
+	CFLAGS += -march=pentium3 -mmmx -msse
+	DEFS += -DCONFIG_FENCES_P3
+	CONFIG_HT = n
+endif
+ifeq ($(MACHINE),prescott)
+	CFLAGS += -march=pentium4 -mfpmath=sse -mmmx -msse -msse2 -msse3
+	DEFS += -DCONFIG_FENCES_P4
+endif
+ifeq ($(MACHINE),pentium4)
+	CFLAGS += -march=pentium4 -mfpmath=sse -mmmx -msse -msse2
+	DEFS += -DCONFIG_FENCES_P4
+endif
+
+## Own configuration directives
+#
+
+CONFIG_ACPI = y
+
+## Compile with hierarchical page tables support.
+#
+
+CONFIG_PAGE_PT = y
+DEFS += -DCONFIG_PAGE_PT
+
+## Compile with i8042 controller support
+#
+
+CONFIG_I8042 = y
+
+
+## Accepted configuration directives
+#
+
+ifeq ($(CONFIG_SMP),y)
+	DEFS += -DCONFIG_SMP
+endif
+ifeq ($(CONFIG_HT),y)
+	DEFS += -DCONFIG_HT
+endif
+ifeq ($(CONFIG_SIMICS_FIX),y)
+	DEFS += -DCONFIG_SIMICS_FIX
+endif
+
+## Compile with support for software integer division.
+#
+
+CONFIG_SOFTINT = y
+
+ARCH_SOURCES = \
+	arch/$(ARCH)/src/context.s \
+	arch/$(ARCH)/src/debug/panic.s \
+	arch/$(ARCH)/src/delay.s \
+	arch/$(ARCH)/src/asm.S \
+	arch/$(ARCH)/src/proc/scheduler.c \
+	arch/$(ARCH)/src/proc/task.c \
+	arch/$(ARCH)/src/proc/thread.c \
+	arch/$(ARCH)/src/bios/bios.c \
+	arch/$(ARCH)/src/smp/ap.S \
+	arch/$(ARCH)/src/smp/apic.c \
+	arch/$(ARCH)/src/smp/mps.c \
+	arch/$(ARCH)/src/smp/smp.c \
+	arch/$(ARCH)/src/atomic.S \
+	arch/$(ARCH)/src/smp/ipi.c \
+	arch/$(ARCH)/src/ia32.c \
+	arch/$(ARCH)/src/interrupt.c \
+	arch/$(ARCH)/src/pm.c \
+	arch/$(ARCH)/src/userspace.c \
+	arch/$(ARCH)/src/cpu/cpu.c \
+	arch/$(ARCH)/src/mm/as.c \
+	arch/$(ARCH)/src/mm/frame.c \
+	arch/$(ARCH)/src/mm/memory_init.c \
+	arch/$(ARCH)/src/mm/page.c \
+	arch/$(ARCH)/src/mm/tlb.c \
+	arch/$(ARCH)/src/ddi/ddi.c \
+	arch/$(ARCH)/src/drivers/i8254.c \
+	arch/$(ARCH)/src/drivers/i8259.c \
+	arch/$(ARCH)/src/drivers/ega.c \
+	arch/$(ARCH)/src/drivers/vesa.c \
+	arch/$(ARCH)/src/boot/boot.S \
+	arch/$(ARCH)/src/fpu_context.c \
+	arch/$(ARCH)/src/debugger.c
Index: kernel/arch/xen32/_link.ld.in
===================================================================
--- kernel/arch/xen32/_link.ld.in	(revision 231fcb23cee33316ea3e310a65aa685ed0fc8538)
+++ kernel/arch/xen32/_link.ld.in	(revision f6ed1ae0138f8959995e82827b74a793e31488e4)
@@ -1,1 +1,69 @@
-../ia32/_link.ld.in
+/** Xen32 linker script
+ *  
+ * umapped section:
+ * 	kernel text
+ * 	kernel data
+ * mapped section:
+ *	kernel text
+ *	kernel data 
+ */
+
+#define __ASM__
+#include <arch/boot/boot.h>
+#include <arch/mm/page.h>
+
+SECTIONS {
+	.unmapped BOOT_OFFSET: AT (0) {
+		unmapped_ktext_start = .;
+		*(K_TEXT_START);
+		unmapped_ktext_end = .;
+	
+		unmapped_kdata_start = .;
+		*(K_DATA_START);
+		unmapped_kdata_end = .;
+	}
+	
+	.mapped (PA2KA(BOOT_OFFSET)+SIZEOF(.unmapped)): AT (SIZEOF(.unmapped)) { 
+		ktext_start = .;
+		*(.text);
+		ktext_end = .;
+		
+		kdata_start = .;
+		*(.data);			/* initialized data */
+		*(.rodata*);			/* string literals */
+		*(COMMON);			/* global variables */
+		hardcoded_load_address = .;
+		LONG(PA2KA(BOOT_OFFSET));
+		hardcoded_ktext_size = .;
+		LONG((ktext_end - ktext_start) + (unmapped_ktext_end - unmapped_ktext_start));
+		hardcoded_kdata_size = .;
+		LONG((kdata_end - kdata_start) + (unmapped_kdata_end - unmapped_kdata_start));
+		hardcoded_unmapped_ktext_size = .;
+		LONG(unmapped_ktext_end - unmapped_ktext_start);
+		hardcoded_unmapped_kdata_size = .;
+		LONG(unmapped_kdata_end - unmapped_kdata_start);
+		symbol_table = .;
+		*(symtab.*);            	/* Symbol table, must be LAST symbol! */
+		*(.bss);			/* uninitialized static variables */
+		kdata_end = .;
+	}
+	
+	__xen_guest(0): AT (SIZEOF(.unmapped)+SIZEOF(.mapped)) {
+		*(__xen_guest);
+	}
+
+	/DISCARD/ : {
+		*(.note.GNU-stack);		
+		*(.comment);
+	}
+	
+#ifdef CONFIG_SMP	
+	
+	_hardcoded_unmapped_size = (unmapped_ktext_end - unmapped_ktext_start) + (unmapped_kdata_end - unmapped_kdata_start);
+	ap_boot = unmapped_ap_boot - BOOT_OFFSET + AP_BOOT_OFFSET;
+	ap_gdtr = unmapped_ap_gdtr - BOOT_OFFSET + AP_BOOT_OFFSET;
+	protected_ap_gdtr = PA2KA(ap_gdtr);
+
+#endif /* CONFIG_SMP */
+
+}
Index: rnel/arch/xen32/src/boot
===================================================================
--- kernel/arch/xen32/src/boot	(revision 231fcb23cee33316ea3e310a65aa685ed0fc8538)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../ia32/src/boot
