Index: boot/Makefile
===================================================================
--- boot/Makefile	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/Makefile	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -31,4 +31,5 @@
 
 -include ../Makefile.config
+-include ../config.defs
 
 ## Paths
@@ -39,21 +40,9 @@
 USPACEDIR = $(BASE)/uspace
 
-ifeq ($(CONFIG_DEBUG),y)
-	DEFS += -DCONFIG_DEBUG
-endif
-
-ifeq ($(CONFIG_BAT),y)
-	DEFS += -DCONFIG_BAT
-endif
-
-ifeq ($(CONFIG_AP),y)
-	DEFS += -DCONFIG_AP
-endif
-
 .PHONY: all build clean generic_clean
 
-all: ../Makefile.config build
+all: ../Makefile.config ../config.h ../config.defs build
 
--include arch/$(ARCH)/Makefile.inc
+-include arch/$(BARCH)/Makefile.inc
 
 generic_clean:
Index: boot/arch/amd64/Makefile.inc
===================================================================
--- boot/arch/amd64/Makefile.inc	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/amd64/Makefile.inc	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -58,16 +58,16 @@
 build: $(BASE)/image.iso
 
-$(BASE)/image.iso: arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/grub/menu.lst $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_SRVS) $(RD_APPS)
-	mkdir -p arch/$(ARCH)/iso/boot/grub
-	cp arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/iso/boot/grub/
+$(BASE)/image.iso: arch/$(BARCH)/grub/stage2_eltorito arch/$(BARCH)/grub/menu.lst $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_SRVS) $(RD_APPS)
+	mkdir -p arch/$(BARCH)/iso/boot/grub
+	cp arch/$(BARCH)/grub/stage2_eltorito arch/$(BARCH)/iso/boot/grub/
 ifneq ($(RDFMT),tmpfs)
-	cat arch/$(ARCH)/grub/menu.lst | grep -v "tmpfs" >arch/$(ARCH)/iso/boot/grub/menu.lst
+	cat arch/$(BARCH)/grub/menu.lst | grep -v "tmpfs" >arch/$(BARCH)/iso/boot/grub/menu.lst
 endif
 ifneq ($(RDFMT),fat)
-	cat arch/$(ARCH)/grub/menu.lst | grep -v "fat" >arch/$(ARCH)/iso/boot/grub/menu.lst
+	cat arch/$(BARCH)/grub/menu.lst | grep -v "fat" >arch/$(BARCH)/iso/boot/grub/menu.lst
 endif
-	cp $(KERNELDIR)/kernel.bin arch/$(ARCH)/iso/boot/
+	cp $(KERNELDIR)/kernel.bin arch/$(BARCH)/iso/boot/
 	for task in $(INIT_TASKS) ; do \
-		cp $$task arch/$(ARCH)/iso/boot/ ; \
+		cp $$task arch/$(BARCH)/iso/boot/ ; \
 	done
 	for file in $(RD_SRVS) ; do \
@@ -78,12 +78,12 @@
 	done
 ifeq ($(RDFMT),tmpfs)
-	$(BASE)/tools/mktmpfs.py $(USPACEDIR)/dist/ arch/$(ARCH)/iso/boot/initrd.fs
+	$(BASE)/tools/mktmpfs.py $(USPACEDIR)/dist/ arch/$(BARCH)/iso/boot/initrd.fs
 endif
 ifeq ($(RDFMT),fat)
-	$(BASE)/tools/mkfat.py $(USPACEDIR)/dist/ arch/$(ARCH)/iso/boot/initrd.fs
+	$(BASE)/tools/mkfat.py $(USPACEDIR)/dist/ arch/$(BARCH)/iso/boot/initrd.fs
 endif
-	$(BASE)/tools/mkhord.py 4096 arch/$(ARCH)/iso/boot/initrd.fs arch/$(ARCH)/iso/boot/initrd.img
-	rm arch/$(ARCH)/iso/boot/initrd.fs
-	mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o $(BASE)/image.iso arch/$(ARCH)/iso/
+	$(BASE)/tools/mkhord.py 4096 arch/$(BARCH)/iso/boot/initrd.fs arch/$(BARCH)/iso/boot/initrd.img
+	rm arch/$(BARCH)/iso/boot/initrd.fs
+	mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o $(BASE)/image.iso arch/$(BARCH)/iso/
 
 clean:
@@ -94,4 +94,4 @@
 		rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
 	done
-	-rm -fr arch/$(ARCH)/iso
+	-rm -fr arch/$(BARCH)/iso
 	-rm -f $(BASE)/image.iso
Index: boot/arch/arm32/Makefile.inc
===================================================================
--- boot/arch/arm32/Makefile.inc	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/arm32/Makefile.inc	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -29,14 +29,14 @@
 build: $(BASE)/image.boot
 
-$(BASE)/image.boot: depend arch/$(ARCH)/loader/image.boot
-	cp arch/$(ARCH)/loader/image.boot $(BASE)/image.boot
+$(BASE)/image.boot: depend arch/$(BARCH)/loader/image.boot
+	cp arch/$(BARCH)/loader/image.boot $(BASE)/image.boot
 
 depend:
-	-rm arch/$(ARCH)/loader/image.boot
+	-rm arch/$(BARCH)/loader/image.boot
 
-arch/$(ARCH)/loader/image.boot:
-	make -C arch/$(ARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) IMAGE=$(IMAGE)
+arch/$(BARCH)/loader/image.boot:
+	make -C arch/$(BARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
 
 clean:
-	make -C arch/$(ARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) IMAGE=$(IMAGE)
+	make -C arch/$(BARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
 	-rm -f $(BASE)/image.boot
Index: boot/arch/arm32/loader/Makefile
===================================================================
--- boot/arch/arm32/loader/Makefile	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/arm32/loader/Makefile	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -28,5 +28,5 @@
 
 include ../../../../version
-include ../../../../Makefile.config
+-include ../../../../Makefile.config
 
 ## Toolchain configuration
@@ -58,17 +58,5 @@
 endif
 
-CFLAGS = -DRELEASE=\"$(RELEASE)\" -I. -I../../../generic -I../../.. -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -pipe
-
-ifdef REVISION
-	CFLAGS += "-DREVISION=\"$(REVISION)\""
-endif
-
-ifdef TIMESTAMP
-	CFLAGS += "-DTIMESTAMP=\"$(TIMESTAMP)\""
-endif
-
-ifdef MACHINE
-	CFLAGS += "-DMACHINE=$(MACHINE)"
-endif
+CFLAGS = -DRELEASE=$(RELEASE) -I. -I../../../generic -I../../.. -imacros ../../../../config.h -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -pipe
 
 SOURCES = \
Index: boot/arch/arm32/loader/main.c
===================================================================
--- boot/arch/arm32/loader/main.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/arm32/loader/main.c	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -36,8 +36,9 @@
 
 
-#include "main.h" 
+#include "main.h"
 #include "asm.h"
 #include "_components.h"
 #include <printf.h>
+#include <macros.h>
 
 #include "mm.h"
@@ -47,8 +48,8 @@
 
 
-char *release = RELEASE;
+char *release = STRING(RELEASE);
 
 #ifdef REVISION
-	char *revision = ", revision " REVISION;
+	char *revision = ", revision " STRING(REVISION);
 #else
 	char *revision = "";
@@ -56,5 +57,5 @@
 
 #ifdef TIMESTAMP
-	char *timestamp = "\nBuilt on " TIMESTAMP;
+	char *timestamp = "\nBuilt on " STRING(TIMESTAMP);
 #else
 	char *timestamp = "";
Index: boot/arch/ia32/Makefile.inc
===================================================================
--- boot/arch/ia32/Makefile.inc	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/ia32/Makefile.inc	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -57,16 +57,16 @@
 build: $(BASE)/image.iso
 
-$(BASE)/image.iso: arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/grub/menu.lst $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_SRVS) $(RD_APPS)
-	mkdir -p arch/$(ARCH)/iso/boot/grub
-	cp arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/iso/boot/grub/
+$(BASE)/image.iso: arch/$(BARCH)/grub/stage2_eltorito arch/$(BARCH)/grub/menu.lst $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_SRVS) $(RD_APPS)
+	mkdir -p arch/$(BARCH)/iso/boot/grub
+	cp arch/$(BARCH)/grub/stage2_eltorito arch/$(BARCH)/iso/boot/grub/
 ifneq ($(RDFMT),tmpfs)
-	cat arch/$(ARCH)/grub/menu.lst | grep -v "tmpfs" >arch/$(ARCH)/iso/boot/grub/menu.lst
+	cat arch/$(BARCH)/grub/menu.lst | grep -v "tmpfs" >arch/$(BARCH)/iso/boot/grub/menu.lst
 endif
 ifneq ($(RDFMT),fat)
-	cat arch/$(ARCH)/grub/menu.lst | grep -v "fat" >arch/$(ARCH)/iso/boot/grub/menu.lst
+	cat arch/$(BARCH)/grub/menu.lst | grep -v "fat" >arch/$(BARCH)/iso/boot/grub/menu.lst
 endif
-	cp $(KERNELDIR)/kernel.bin arch/$(ARCH)/iso/boot/
+	cp $(KERNELDIR)/kernel.bin arch/$(BARCH)/iso/boot/
 	for task in $(INIT_TASKS) ; do \
-		cp $$task arch/$(ARCH)/iso/boot/ ; \
+		cp $$task arch/$(BARCH)/iso/boot/ ; \
 	done
 	for file in $(RD_SRVS) ; do \
@@ -77,12 +77,12 @@
 	done
 ifeq ($(RDFMT),tmpfs)
-	$(BASE)/tools/mktmpfs.py $(USPACEDIR)/dist/ arch/$(ARCH)/iso/boot/initrd.fs
+	$(BASE)/tools/mktmpfs.py $(USPACEDIR)/dist/ arch/$(BARCH)/iso/boot/initrd.fs
 endif
 ifeq ($(RDFMT),fat)
-	$(BASE)/tools/mkfat.py $(USPACEDIR)/dist/ arch/$(ARCH)/iso/boot/initrd.fs
+	$(BASE)/tools/mkfat.py $(USPACEDIR)/dist/ arch/$(BARCH)/iso/boot/initrd.fs
 endif
-	$(BASE)/tools/mkhord.py 4096 arch/$(ARCH)/iso/boot/initrd.fs arch/$(ARCH)/iso/boot/initrd.img
-	rm arch/$(ARCH)/iso/boot/initrd.fs
-	mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o $(BASE)/image.iso arch/$(ARCH)/iso/
+	$(BASE)/tools/mkhord.py 4096 arch/$(BARCH)/iso/boot/initrd.fs arch/$(BARCH)/iso/boot/initrd.img
+	rm arch/$(BARCH)/iso/boot/initrd.fs
+	mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o $(BASE)/image.iso arch/$(BARCH)/iso/
 
 clean:
@@ -93,4 +93,4 @@
 		rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
 	done
-	-rm -fr arch/$(ARCH)/iso
+	-rm -fr arch/$(BARCH)/iso
 	-rm -f $(BASE)/image.iso
Index: boot/arch/ia64/Makefile.inc
===================================================================
--- boot/arch/ia64/Makefile.inc	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/ia64/Makefile.inc	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -27,21 +27,16 @@
 #
 
-#ifeq ($(MACHINE),ski)
-
 build: $(BASE)/image.boot
 
-$(BASE)/image.boot: depend arch/$(ARCH)/loader/image.boot
-	cp arch/$(ARCH)/loader/image.boot $(BASE)/image.boot
+$(BASE)/image.boot: depend arch/$(BARCH)/loader/image.boot
+	cp arch/$(BARCH)/loader/image.boot $(BASE)/image.boot
 
 depend:
-	-rm arch/$(ARCH)/loader/image.boot
+	-rm arch/$(BARCH)/loader/image.boot
 
-arch/$(ARCH)/loader/image.boot:
-	make -C arch/$(ARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) "DEFS=$(DEFS)"
+arch/$(BARCH)/loader/image.boot:
+	make -C arch/$(BARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
 
 clean: generic_clean
-	make -C arch/$(ARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) "DEFS=$(DEFS)"
+	make -C arch/$(BARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
 	-rm -f $(BASE)/image.boot
-
-#endif
-
Index: boot/arch/ia64/loader/Makefile
===================================================================
--- boot/arch/ia64/loader/Makefile	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/ia64/loader/Makefile	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -28,5 +28,5 @@
 
 include ../../../../version
-include ../../../../Makefile.config
+-include ../../../../Makefile.config
 
 ## Toolchain configuration
@@ -48,5 +48,5 @@
 	OBJCOPY = objcopy
 	OBJDUMP = objdump
-	GEFI_PREXIX = 
+	GEFI_PREFIX =
 endif
 
@@ -69,13 +69,5 @@
 
 #-mno-pic means do not use gp + imm22 to address data
-CFLAGS = -DRELEASE=\"$(RELEASE)\" -I. -I../../../generic -I../../../genarch -I../../../../kernel/generic/include -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -fno-unwind-tables -mfixed-range=f32-f127 -mno-pic -pipe
-
-ifdef REVISION
-	CFLAGS += "-DREVISION=\"$(REVISION)\""
-endif
-
-ifdef TIMESTAMP
-	CFLAGS += "-DTIMESTAMP=\"$(TIMESTAMP)\""
-endif
+CFLAGS = -DRELEASE=$(RELEASE) -I. -I../../../generic -I../../../genarch -I../../../../kernel/generic/include -imacros ../../../../config.h -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -fno-unwind-tables -mfixed-range=f32-f127 -mno-pic -pipe
 
 SOURCES = \
@@ -131,5 +123,4 @@
 	make -C gefi/HelenOS PREFIX=$(GEFI_PREFIX)
 	cp gefi/HelenOS/hello.efi ../../../../
-#	cp gefi/HelenOS/hello.efi /boot/efi/
 	cp gefi/HelenOS/image.bin ../../../../
 
Index: boot/arch/ia64/loader/gefi/Make.defaults
===================================================================
--- boot/arch/ia64/loader/gefi/Make.defaults	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/ia64/loader/gefi/Make.defaults	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -28,29 +28,18 @@
 INSTALLROOT=/usr/local
 
-TOPDIR    := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
+TOPDIR    := $(shell pwd)
 
-ARCH	   = $(shell uname -m | sed s,i[3456789]86,ia32,)
-INCDIR	   = -I. -I$(CDIR)/inc -I$(CDIR)/inc/$(ARCH) -I$(CDIR)/inc/protocol 
+ARCH       = ia64
+INCDIR     = -I. -I$(CDIR)/inc -I$(CDIR)/inc/$(ARCH) -I$(CDIR)/inc/protocol 
 CPPFLAGS   = -DCONFIG_$(ARCH)
-CFLAGS	   = -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants
-LDFLAGS	   = -nostdlib
-INSTALL	   = install
+CFLAGS     = -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -frename-registers -mfixed-range=f32-f127
+LDFLAGS    = -nostdlib
+INSTALL    = install
 
-GCC_VERSION=$(shell $(CROSS_COMPILE)$(CC) -v 2>&1 | fgrep 'gcc version' | cut -f3 -d' ' | cut -f1 -d'.')
-
-#  prefix	=
-CC		= $(prefix)gcc
-AS		= $(prefix)as
-LD		= $(prefix)ld
-AR		= $(prefix)ar
-RANLIB	= $(prefix)ranlib
-OBJCOPY	= $(prefix)objcopy
-OBJDUMP	= $(prefix)objdump
-
-
-ifneq ($(GCC_VERSION),2)
-        CFLAGS += -frename-registers
-endif
-
-CFLAGS += -mfixed-range=f32-f127
-
+CC         = $(prefix)gcc
+AS         = $(prefix)as
+LD         = $(prefix)ld
+AR         = $(prefix)ar
+RANLIB     = $(prefix)ranlib
+OBJCOPY    = $(prefix)objcopy
+OBJDUMP    = $(prefix)objdump
Index: boot/arch/ia64/loader/gefi/Makefile
===================================================================
--- boot/arch/ia64/loader/gefi/Makefile	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/ia64/loader/gefi/Makefile	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -26,5 +26,5 @@
 SUBDIRS = lib gnuefi inc
 
-all:	check_gcc $(SUBDIRS)
+all: $(SUBDIRS)
 
 $(SUBDIRS):
@@ -40,12 +40,3 @@
 .PHONY:	$(SUBDIRS) clean depend
 
-#
-# on both platforms you must use gcc 3.0 or higher 
-#
-check_gcc:
-ifeq ($(GCC_VERSION),2)
-	@echo "you need to use a version of gcc >= 3.0, you are using `$(CC) --version`"
-	@exit 1
-endif
-
 include Make.rules
Index: boot/arch/ia64/loader/main.c
===================================================================
--- boot/arch/ia64/loader/main.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/ia64/loader/main.c	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -1,5 +1,5 @@
 /*
  * Copyright (c) 2005 Martin Decky
- * Copyright (c) 2006 Jakub Jermar 
+ * Copyright (c) 2006 Jakub Jermar
  * All rights reserved.
  *
@@ -34,9 +34,10 @@
 #include <align.h>
 #include <balloc.h>
+#include <macros.h>
 
 extern bootinfo_t binfo;
 component_t components[COMPONENTS];
 
-char *release = RELEASE;
+char *release = STRING(RELEASE);
 
 void write(const char *str, const int len)
@@ -54,5 +55,5 @@
 
 #ifdef REVISION
-	char *revision = ", revision " REVISION;
+	char *revision = ", revision " STRING(REVISION);
 #else
 	char *revision = "";
@@ -60,5 +61,5 @@
 
 #ifdef TIMESTAMP
-	char *timestamp = "\nBuilt on " TIMESTAMP;
+	char *timestamp = "\nBuilt on " STRING(TIMESTAMP);
 #else
 	char *timestamp = "";
Index: boot/arch/mips32/Makefile.inc
===================================================================
--- boot/arch/mips32/Makefile.inc	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/mips32/Makefile.inc	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -29,14 +29,14 @@
 build: $(BASE)/image.boot
 
-$(BASE)/image.boot: depend arch/$(ARCH)/loader/image.boot
-	cp arch/$(ARCH)/loader/image.boot $(BASE)/image.boot
+$(BASE)/image.boot: depend arch/$(BARCH)/loader/image.boot
+	cp arch/$(BARCH)/loader/image.boot $(BASE)/image.boot
 
 depend:
-	-rm arch/$(ARCH)/loader/image.boot
+	-rm arch/$(BARCH)/loader/image.boot
 
-arch/$(ARCH)/loader/image.boot:
-	make -C arch/$(ARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) IMAGE=$(IMAGE)
+arch/$(BARCH)/loader/image.boot:
+	make -C arch/$(BARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
 
 clean:
-	make -C arch/$(ARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) IMAGE=$(IMAGE)
+	make -C arch/$(BARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
 	-rm -f $(BASE)/image.boot
Index: boot/arch/mips32/loader/Makefile
===================================================================
--- boot/arch/mips32/loader/Makefile	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/mips32/loader/Makefile	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -28,5 +28,5 @@
 
 include ../../../../version
-include ../../../../Makefile.config
+-include ../../../../Makefile.config
 
 ## Toolchain configuration
@@ -40,7 +40,9 @@
 	LD_IN = binary
 endif
+
 ifeq ($(IMAGE),ecoff)
 	LD_IN = ecoff
 endif
+
 BFD_NAME = elf32-tradlittlemips
 BFD_ARCH = mips
@@ -64,13 +66,5 @@
 endif
 
-CFLAGS = -DRELEASE=\"$(RELEASE)\" -I. -I../../../generic -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -mno-abicalls -G 0 -fno-zero-initialized-in-bss -mhard-float -mips3 -pipe
-
-ifdef REVISION
-	CFLAGS += "-DREVISION=\"$(REVISION)\""
-endif
-
-ifdef TIMESTAMP
-	CFLAGS += "-DTIMESTAMP=\"$(TIMESTAMP)\""
-endif
+CFLAGS = -DRELEASE=$(RELEASE) -I. -I../../../generic -imacros ../../../../config.h -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -mno-abicalls -G 0 -fno-zero-initialized-in-bss -mhard-float -mips3 -pipe
 
 SOURCES = \
Index: boot/arch/mips32/loader/main.c
===================================================================
--- boot/arch/mips32/loader/main.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/mips32/loader/main.c	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -29,4 +29,5 @@
 #include "main.h" 
 #include <printf.h>
+#include <macros.h>
 #include "msim.h"
 #include "asm.h"
@@ -35,8 +36,8 @@
 #define KERNEL_VIRTUAL_ADDRESS 0x80100000
 
-char *release = RELEASE;
+char *release = STRING(RELEASE);
 
 #ifdef REVISION
-	char *revision = ", revision " REVISION;
+	char *revision = ", revision " STRING(REVISION);
 #else
 	char *revision = "";
@@ -44,5 +45,5 @@
 
 #ifdef TIMESTAMP
-	char *timestamp = "\nBuilt on " TIMESTAMP;
+	char *timestamp = "\nBuilt on " STRING(TIMESTAMP);
 #else
 	char *timestamp = "";
Index: boot/arch/ppc32/Makefile.inc
===================================================================
--- boot/arch/ppc32/Makefile.inc	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/ppc32/Makefile.inc	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -29,14 +29,14 @@
 build: $(BASE)/image.boot
 
-$(BASE)/image.boot: depend arch/$(ARCH)/loader/image.boot
-	cp arch/$(ARCH)/loader/image.boot $(BASE)/image.boot
+$(BASE)/image.boot: depend arch/$(BARCH)/loader/image.boot
+	cp arch/$(BARCH)/loader/image.boot $(BASE)/image.boot
 
 depend:
-	-rm arch/$(ARCH)/loader/image.boot
+	-rm arch/$(BARCH)/loader/image.boot
 
-arch/$(ARCH)/loader/image.boot:
-	make -C arch/$(ARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) "DEFS=$(DEFS)"
+arch/$(BARCH)/loader/image.boot:
+	make -C arch/$(BARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
 
 clean: generic_clean
-	make -C arch/$(ARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) "DEFS=$(DEFS)"
+	make -C arch/$(BARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
 	-rm -f $(BASE)/image.boot
Index: boot/arch/ppc32/loader/Makefile
===================================================================
--- boot/arch/ppc32/loader/Makefile	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/ppc32/loader/Makefile	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -28,5 +28,5 @@
 
 include ../../../../version
-include ../../../../Makefile.config
+-include ../../../../Makefile.config
 
 ## Toolchain configuration
@@ -58,13 +58,5 @@
 endif
 
-CFLAGS = -DRELEASE=\"$(RELEASE)\" -I. -I../../../generic -I../../../genarch -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -mcpu=powerpc -msoft-float -m32 -pipe
-
-ifdef REVISION
-	CFLAGS += "-DREVISION=\"$(REVISION)\""
-endif
-
-ifdef TIMESTAMP
-	CFLAGS += "-DTIMESTAMP=\"$(TIMESTAMP)\""
-endif
+CFLAGS = -DRELEASE=$(RELEASE) -I. -I../../../generic -I../../../genarch -imacros ../../../../config.h -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -mcpu=powerpc -msoft-float -m32 -pipe
 
 SOURCES = \
Index: boot/arch/ppc32/loader/_link.ld.in
===================================================================
--- boot/arch/ppc32/loader/_link.ld.in	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/ppc32/loader/_link.ld.in	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -1,8 +1,8 @@
-OUTPUT_FORMAT("elf32-powerpc") 
-OUTPUT_ARCH(powerpc:common) 
-ENTRY(start) 
- 
+OUTPUT_FORMAT("elf32-powerpc")
+OUTPUT_ARCH(powerpc:common)
+ENTRY(start)
+
 SECTIONS {
-	.boot 0x01000000: AT (0) { 
+	.boot 0x01000000: AT (0) {
 		*(BOOTSTRAP);
 		*(REALMODE);
@@ -11,10 +11,10 @@
 		*(.rodata);
 		*(.rodata.*);
-		*(.data);		/* initialized data */
+		*(.data);       /* initialized data */
 		*(.sdata);
 		*(.sdata2);
 		*(.sbss);
-		*(.bss);		/* uninitialized static variables */	
-		*(COMMON); 		/* global variables */
+		*(.bss);        /* uninitialized static variables */
+		*(COMMON);      /* global variables */
 [[COMPONENTS]]
 	}
Index: boot/arch/ppc32/loader/main.c
===================================================================
--- boot/arch/ppc32/loader/main.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/ppc32/loader/main.c	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -33,4 +33,5 @@
 #include <ofw.h>
 #include <align.h>
+#include <macros.h>
 
 #define HEAP_GAP 1024000
@@ -73,8 +74,8 @@
 }
 
-char *release = RELEASE;
+char *release = STRING(RELEASE);
 
 #ifdef REVISION
-	char *revision = ", revision " REVISION;
+	char *revision = ", revision " STRING(REVISION);
 #else
 	char *revision = "";
@@ -82,5 +83,5 @@
 
 #ifdef TIMESTAMP
-	char *timestamp = "\nBuilt on " TIMESTAMP;
+	char *timestamp = "\nBuilt on " STRING(TIMESTAMP);
 #else
 	char *timestamp = "";
Index: boot/arch/sparc64/Makefile.inc
===================================================================
--- boot/arch/sparc64/Makefile.inc	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/sparc64/Makefile.inc	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -29,41 +29,37 @@
 TMP = distroot
 
-ifeq ($(CONFIG_AOUT_ISOFS_B),n)
-	SILO_PACKAGE=silo.patched.tar.gz
-endif
-
 ifeq ($(CONFIG_AOUT_ISOFS_B),y)
-	SILO_PACKAGE=silo.tar.gz
+	SILO_PACKAGE = silo.tar.gz
+else
+	SILO_PACKAGE = silo.patched.tar.gz
 endif
 
 build: $(BASE)/image.iso
 
-ifeq ($(CONFIG_RD_EXTERNAL),y)
-SILO_CONF_FILTER = cat
-else
-SILO_CONF_FILTER = grep -v initrd
-endif
-
-$(BASE)/image.iso: depend arch/$(ARCH)/loader/image.boot
+$(BASE)/image.iso: depend arch/$(BARCH)/loader/image.boot
 	mkdir -p $(TMP)/boot
 	mkdir -p $(TMP)/HelenOS
-	cat arch/$(ARCH)/silo/$(SILO_PACKAGE) | (cd $(TMP)/boot; tar xvfz -)
-	cp arch/$(ARCH)/silo/README arch/$(ARCH)/silo/COPYING $(TMP)/boot
-	cat arch/$(ARCH)/silo/silo.conf | $(SILO_CONF_FILTER) >$(TMP)/boot/silo.conf
-	cp arch/$(ARCH)/loader/image.boot $(TMP)/HelenOS/image.boot
+	cat arch/$(BARCH)/silo/$(SILO_PACKAGE) | (cd $(TMP)/boot; tar xvfz -)
+	cp arch/$(BARCH)/silo/README arch/$(BARCH)/silo/COPYING $(TMP)/boot
+ifeq ($(CONFIG_RD_EXTERNAL),y)
+	cp arch/$(BARCH)/silo/silo.conf $(TMP)/boot/silo.conf
+else
+	cat arch/$(BARCH)/silo/silo.conf | grep -v initrd > $(TMP)/boot/silo.conf
+endif
+	cp arch/$(BARCH)/loader/image.boot $(TMP)/HelenOS/image.boot
 	gzip -f $(TMP)/HelenOS/image.boot
 ifeq ($(CONFIG_RD_EXTERNAL),y)
-	cp arch/$(ARCH)/loader/initrd.img $(TMP)/HelenOS/initrd.img
+	cp arch/$(BARCH)/loader/initrd.img $(TMP)/HelenOS/initrd.img
 endif
 	mkisofs -f -G $(TMP)/boot/isofs.b -B ... -r -o $(BASE)/image.iso $(TMP)/
 
 depend:
-	-rm arch/$(ARCH)/loader/image.boot
+	-rm arch/$(BARCH)/loader/image.boot
 
-arch/$(ARCH)/loader/image.boot:
-	$(MAKE) -C arch/$(ARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) "DEFS=$(DEFS)"
+arch/$(BARCH)/loader/image.boot:
+	$(MAKE) -C arch/$(BARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
 
 clean: generic_clean
-	$(MAKE) -C arch/$(ARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
+	$(MAKE) -C arch/$(BARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
 	-rm -fr $(TMP)
 	-rm -f $(BASE)/image.iso
Index: boot/arch/sparc64/loader/Makefile
===================================================================
--- boot/arch/sparc64/loader/Makefile	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/sparc64/loader/Makefile	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -28,5 +28,5 @@
 
 include ../../../../version
-include ../../../../Makefile.config
+-include ../../../../Makefile.config
 
 ## Toolchain configuration
@@ -58,13 +58,5 @@
 endif
 
-CFLAGS = -DRELEASE=\"$(RELEASE)\" -I. -I../../../generic -I../../../genarch -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -mcpu=ultrasparc -m64 -mno-fpu -pipe
-
-ifdef REVISION
-	CFLAGS += "-DREVISION=\"$(REVISION)\""
-endif
-
-ifdef TIMESTAMP
-	CFLAGS += "-DTIMESTAMP=\"$(TIMESTAMP)\""
-endif
+CFLAGS = -DRELEASE=$(RELEASE) -I. -I../../../generic -I../../../genarch -imacros ../../../../config.h -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -mcpu=ultrasparc -m64 -mno-fpu -pipe
 
 SOURCES = \
Index: boot/arch/sparc64/loader/main.c
===================================================================
--- boot/arch/sparc64/loader/main.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/sparc64/loader/main.c	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -37,4 +37,5 @@
 #include "ofwarch.h"
 #include <align.h>
+#include <macros.h>
 #include <string.h>
 
@@ -43,8 +44,8 @@
 component_t components[COMPONENTS];
 
-char *release = RELEASE;
+char *release = STRING(RELEASE);
 
 #ifdef REVISION
-	char *revision = ", revision " REVISION;
+	char *revision = ", revision " STRING(REVISION);
 #else
 	char *revision = "";
@@ -52,5 +53,5 @@
 
 #ifdef TIMESTAMP
-	char *timestamp = "\nBuilt on " TIMESTAMP;
+	char *timestamp = "\nBuilt on " STRING(TIMESTAMP);
 #else
 	char *timestamp = "";
Index: boot/arch/sparc64/loader/ofwarch.c
===================================================================
--- boot/arch/sparc64/loader/ofwarch.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
+++ boot/arch/sparc64/loader/ofwarch.c	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -33,5 +33,5 @@
  */
 
-#include <ofwarch.h>  
+#include <ofwarch.h>
 #include <ofw.h>
 #include <printf.h>
Index: boot/generic/macros.h
===================================================================
--- boot/generic/macros.h	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
+++ boot/generic/macros.h	(revision fa024ce932aff7f238e5cabadb9fdd510c75fca9)
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2009 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.
+ */
+
+/** @addtogroup libc
+ * @{
+ */
+/** @file
+ */
+
+#ifndef BOOT_MACROS_H_
+#define BOOT_MACROS_H_
+
+#define SIZE2KB(size) ((size) >> 10)
+#define SIZE2MB(size) ((size) >> 20)
+
+#define KB2SIZE(kb) ((kb) << 10)
+#define MB2SIZE(mb) ((mb) << 20)
+
+#define STRING(arg) STRING_ARG(arg)
+#define STRING_ARG(arg) #arg
+
+#endif
+
+/** @}
+ */
