Index: kernel/Makefile
===================================================================
--- kernel/Makefile	(revision 9a0367fa3b9a9c76101f2153a0f10900ea972c2b)
+++ kernel/Makefile	(revision 687c3cd5921e1d47b5311bdcf4dfbc5f55ee093b)
@@ -33,19 +33,23 @@
 include ../version
 -include ../Makefile.config
+-include ../config.defs
 
 INCLUDES = generic/include
 OPTIMIZATION = 3
 
+ifndef CROSS_PREFIX
+	CROSS_PREFIX = /usr/local
+endif
+
 ## Common compiler flags
 #
 
-DEFS = -D$(ARCH) -DARCH=\"$(ARCH)\" -DRELEASE=\"$(RELEASE)\" "-DNAME=\"$(NAME)\"" \
-	-DKERNEL
-
-GCC_CFLAGS = -I$(INCLUDES) -O$(OPTIMIZATION) \
+DEFS = -DKERNEL -DRELEASE=$(RELEASE) "-DNAME=$(NAME)"
+
+GCC_CFLAGS = -I$(INCLUDES) -O$(OPTIMIZATION) -imacros ../config.h \
 	-fno-builtin -Wall -Wextra -Wno-unused-parameter -Wmissing-prototypes -Werror \
 	-nostdlib -nostdinc -pipe
 
-ICC_CFLAGS = -I$(INCLUDES) -O$(OPTIMIZATION) \
+ICC_CFLAGS = -I$(INCLUDES) -O$(OPTIMIZATION) -imacros ../config.h \
 	-fno-builtin -Wall -Wmissing-prototypes -Werror \
 	-nostdlib -nostdinc \
@@ -59,13 +63,5 @@
 AFLAGS =
 
-ifdef REVISION
-	DEFS += "-DREVISION=\"$(REVISION)\""
-endif
-
-ifdef TIMESTAMP
-	DEFS += "-DTIMESTAMP=\"$(TIMESTAMP)\""
-endif
-
--include arch/$(ARCH)/Makefile.inc
+-include arch/$(KARCH)/Makefile.inc
 -include genarch/Makefile.inc
 
@@ -84,90 +80,4 @@
 #
 SYMTAB_SECTION=".section symtab.data, \"a\", $(ATSIGN)progbits;"
-
-## Setup kernel configuration
-#
-ifeq ($(CONFIG_DEBUG),y)
-	DEFS += -DCONFIG_DEBUG
-endif
-
-ifeq ($(CONFIG_LOG),y)
-	DEFS += -DCONFIG_LOG
-endif
-
-ifeq ($(CONFIG_KCONSOLE),y)
-	DEFS += -DCONFIG_KCONSOLE
-endif
-
-ifeq ($(CONFIG_DEBUG_SPINLOCK),y)
-	DEFS += -DCONFIG_DEBUG_SPINLOCK
-endif
-
-ifeq ($(CONFIG_DEBUG_AS_WATCHPOINT),y)
-	DEFS += -DCONFIG_DEBUG_AS_WATCHPOINT
-endif
-
-ifeq ($(CONFIG_FPU_LAZY),y)
-	DEFS += -DCONFIG_FPU_LAZY
-endif
-
-ifeq ($(CONFIG_DEBUG_ALLREGS),y)
-	DEFS += -DCONFIG_DEBUG_ALLREGS
-endif
-
-ifeq ($(CONFIG_VHPT),y)
-	DEFS += -DCONFIG_VHPT
-endif
-
-ifeq ($(CONFIG_TSB),y)
-	DEFS += -DCONFIG_TSB
-endif
-
-ifeq ($(CONFIG_Z8530),y)
-	DEFS += -DCONFIG_Z8530
-endif
-
-ifeq ($(CONFIG_NS16550),y)
-	DEFS += -DCONFIG_NS16550
-endif
-
-ifeq ($(CONFIG_I8042_INTERRUPT_DRIVEN),y)
-	DEFS += -DCONFIG_I8042_INTERRUPT_DRIVEN
-endif
-
-ifeq ($(CONFIG_NS16550_INTERRUPT_DRIVEN),y)
-	DEFS += -DCONFIG_NS16550_INTERRUPT_DRIVEN
-endif
-
-ifeq ($(CONFIG_IOSAPIC),y)
-	DEFS += -DCONFIG_IOSAPIC
-endif
-
-ifeq ($(CONFIG_VIRT_IDX_DCACHE),y)
-	DEFS += -DCONFIG_VIRT_IDX_DCACHE
-endif
-
-ifeq ($(CONFIG_FB),y)
-	ifeq ($(ARCH),ia32)
-		DEFS += -DCONFIG_VESA_WIDTH=$(CONFIG_VESA_WIDTH)
-		DEFS += -DCONFIG_VESA_HEIGHT=$(CONFIG_VESA_HEIGHT)
-		DEFS += -DCONFIG_VESA_BPP=$(CONFIG_VESA_BPP)
-	endif
-	
-	ifeq ($(ARCH),amd64)
-		DEFS += -DCONFIG_VESA_WIDTH=$(CONFIG_VESA_WIDTH)
-		DEFS += -DCONFIG_VESA_HEIGHT=$(CONFIG_VESA_HEIGHT)
-		DEFS += -DCONFIG_VESA_BPP=$(CONFIG_VESA_BPP)
-	endif
-	
-	ifeq ($(ARCH),ia32xen)
-		DEFS += -DCONFIG_VESA_WIDTH=$(CONFIG_VESA_WIDTH)
-		DEFS += -DCONFIG_VESA_HEIGHT=$(CONFIG_VESA_HEIGHT)
-		DEFS += -DCONFIG_VESA_BPP=$(CONFIG_VESA_BPP)
-	endif
-endif
-
-ifeq ($(CONFIG_UDEBUG),y)
-	DEFS += -DCONFIG_UDEBUG
-endif
 
 ## Simple detection for the type of the host system
@@ -195,4 +105,5 @@
 	LIBDIR = /usr/lib
 	CFLAGS = $(GCC_CFLAGS)
+	DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
 endif
 
@@ -206,4 +117,5 @@
 	LIBDIR = /usr/lib
 	CFLAGS = $(ICC_CFLAGS)
+	DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
 endif
 
@@ -217,4 +129,6 @@
 	LIBDIR = /usr/lib
 	CFLAGS = $(SUNCC_CFLAGS)
+	DEFS += $(CONFIG_DEFS)
+	DEPEND_DEFS = $(DEFS)
 endif
 
@@ -228,4 +142,5 @@
 	LIBDIR = $(TOOLCHAIN_DIR)/lib
 	CFLAGS = $(GCC_CFLAGS)
+	DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
 endif
 
@@ -326,5 +241,4 @@
 
 ifeq ($(CONFIG_TEST),y)
-	DEFS += -DCONFIG_TEST
 	CFLAGS += -Itest/
 	GENERIC_SOURCES += \
@@ -335,7 +249,4 @@
 		test/debug/mips1.c \
 		test/fault/fault1.c \
-		test/fpu/fpu1.c \
-		test/fpu/sse1.c \
-		test/fpu/mips2.c \
 		test/mm/falloc1.c \
 		test/mm/falloc2.c \
@@ -354,4 +265,43 @@
 		test/thread/thread1.c \
 		test/sysinfo/sysinfo1.c
+	
+	ifeq ($(CONFIG_FPU),y)
+		ifeq ($(KARCH),ia32)
+			TEST_FPU1 = y
+			TEST_SSE1 = y
+		endif
+		
+		ifeq ($(KARCH),amd64)
+			TEST_FPU1 = y
+			TEST_SSE1 = y
+		endif
+		
+		ifeq ($(KARCH),ia64)
+			TEST_FPU1 = y
+		endif
+		
+		ifeq ($(KARCH),mips32)
+			TEST_MIPS2 = y
+		endif
+	endif
+	
+	ifeq ($(TEST_FPU1),y)
+		GENERIC_SOURCES += test/fpu/fpu1.c
+	else
+		GENERIC_SOURCES += test/fpu/fpu1_skip.c
+	endif
+	
+	ifeq ($(TEST_SSE1),y)
+		GENERIC_SOURCES += test/fpu/sse1.c
+	else
+		GENERIC_SOURCES += test/fpu/sse1_skip.c
+	endif
+	
+	ifeq ($(TEST_MIPS2),y)
+		GENERIC_SOURCES += test/fpu/mips2.c
+	else
+		GENERIC_SOURCES += test/fpu/mips2_skip.c
+	endif
+	
 endif
 
@@ -362,5 +312,5 @@
 .PHONY: all build clean archlinks depend disasm
 
-all: ../Makefile.config
+all: ../Makefile.config ../config.h ../config.defs
 	-rm Makefile.depend
 	$(MAKE) -C . build
@@ -371,5 +321,5 @@
 
 clean:
-	-rm -f kernel.bin kernel.raw kernel.map kernel.map.pre kernel.objdump kernel.disasm generic/src/debug/real_map.bin Makefile.depend* generic/include/arch generic/include/genarch arch/$(ARCH)/_link.ld
+	-rm -f kernel.bin kernel.raw kernel.map kernel.map.pre kernel.objdump kernel.disasm generic/src/debug/real_map.bin Makefile.depend* generic/include/arch generic/include/genarch arch/$(KARCH)/_link.ld
 	find generic/src/ arch/*/src/ genarch/src/ test/ -name '*.o' -follow -exec rm \{\} \;
 	for arch in arch/* ; do \
@@ -378,16 +328,16 @@
 
 archlinks:
-	ln -sfn ../../arch/$(ARCH)/include/ generic/include/arch
+	ln -sfn ../../arch/$(KARCH)/include/ generic/include/arch
 	ln -sfn ../../genarch/include/ generic/include/genarch
 
 depend: archlinks
-	-makedepend -f - -- $(DEFS) $(CFLAGS) -- $(ARCH_SOURCES) $(GENARCH_SOURCES) $(GENERIC_SOURCES) > Makefile.depend 2> /dev/null
-
-arch/$(ARCH)/_link.ld: arch/$(ARCH)/_link.ld.in
+	-makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(ARCH_SOURCES) $(GENARCH_SOURCES) $(GENERIC_SOURCES) > Makefile.depend 2> /dev/null
+
+arch/$(KARCH)/_link.ld: arch/$(KARCH)/_link.ld.in
 	$(GCC) $(DEFS) $(GCC_CFLAGS) -D__ASM__ -D__LINKER__ -E -x c $< | grep -v "^\#" > $@
 
-generic/src/debug/real_map.bin: depend arch/$(ARCH)/_link.ld $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS)
+generic/src/debug/real_map.bin: depend arch/$(KARCH)/_link.ld $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS)
 	echo $(SYMTAB_SECTION) | $(AS) $(AFLAGS) -o generic/src/debug/empty_map.o
-	$(LD) -T arch/$(ARCH)/_link.ld $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) generic/src/debug/empty_map.o  -o $@ -Map kernel.map.pre
+	$(LD) -T arch/$(KARCH)/_link.ld $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) generic/src/debug/empty_map.o  -o $@ -Map kernel.map.pre
 	$(OBJDUMP) -t $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) > kernel.objdump
 	tools/genmap.py kernel.map.pre kernel.objdump generic/src/debug/real_map.bin 
@@ -395,5 +345,5 @@
 	# on architectures, that have bss after symtab
 	echo $(SYMTAB_SECTION)" .incbin \"$@\"" | $(AS) $(AFLAGS) -o generic/src/debug/sizeok_map.o
-	$(LD) -T arch/$(ARCH)/_link.ld $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) generic/src/debug/sizeok_map.o -o $@ -Map kernel.map.pre
+	$(LD) -T arch/$(KARCH)/_link.ld $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) generic/src/debug/sizeok_map.o -o $@ -Map kernel.map.pre
 	$(OBJDUMP) -t $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) > kernel.objdump
 	tools/genmap.py kernel.map.pre kernel.objdump generic/src/debug/real_map.bin 
@@ -402,6 +352,6 @@
 	echo $(SYMTAB_SECTION)" .incbin \"$<\"" | $(AS) $(AFLAGS) -o $@ 
 
-kernel.raw: depend arch/$(ARCH)/_link.ld $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) generic/src/debug/real_map.o
-	$(LD) -T arch/$(ARCH)/_link.ld $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) generic/src/debug/real_map.o -o $@ -Map kernel.map
+kernel.raw: depend arch/$(KARCH)/_link.ld $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) generic/src/debug/real_map.o
+	$(LD) -T arch/$(KARCH)/_link.ld $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) generic/src/debug/real_map.o -o $@ -Map kernel.map
 
 kernel.bin: kernel.raw
