Index: boot/arch/ia64/Makefile.inc
===================================================================
--- boot/arch/ia64/Makefile.inc	(revision 556fc532f3c6e9105f7ccbabcd6867fe9432d379)
+++ boot/arch/ia64/Makefile.inc	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
@@ -27,15 +27,38 @@
 #
 
+ifeq ($(MACHINE),ski)
+
+
+
 VMAXLMA_SRC = tools/ia64/vmaxlma.c
+build: $(BASE)/kernel.bin
+echo Building SKI
+#$(BASE)/kernel.bin: $(KERNELDIR)/kernel.bin vmaxlma
+#	cp $(KERNELDIR)/kernel.bin $(BASE)/kernel.bin
+#	./vmaxlma $(BASE)/kernel.bin
+#vmaxlma: $(VMAXLMA_SRC)
+#	$(CC) $(VMAXLMA_SRC) -o $@
+#clean:
+#	-rm -f $(BASE)/kernel.bin vmaxlma
 
-build: $(BASE)/kernel.bin
 
-$(BASE)/kernel.bin: $(KERNELDIR)/kernel.bin vmaxlma
-	cp $(KERNELDIR)/kernel.bin $(BASE)/kernel.bin
-	./vmaxlma $(BASE)/kernel.bin
+else
 
-vmaxlma: $(VMAXLMA_SRC)
-	$(CC) $(VMAXLMA_SRC) -o $@
 
-clean:
-	-rm -f $(BASE)/kernel.bin vmaxlma
+build: $(BASE)/image.boot
+
+$(BASE)/image.boot: depend arch/$(ARCH)/loader/image.boot
+	cp arch/$(ARCH)/loader/image.boot $(BASE)/image.boot
+
+depend:
+	-rm arch/$(ARCH)/loader/image.boot
+
+arch/$(ARCH)/loader/image.boot:
+	make -C arch/$(ARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) "DEFS=$(DEFS)"
+
+clean: generic_clean
+	make -C arch/$(ARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) "DEFS=$(DEFS)"
+	-rm -f $(BASE)/image.boot
+
+
+endif
Index: boot/arch/ia64/loader/Makefile
===================================================================
--- boot/arch/ia64/loader/Makefile	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
+++ boot/arch/ia64/loader/Makefile	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
@@ -0,0 +1,120 @@
+#
+# 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.
+#
+
+include ../../../../version
+include ../../../Makefile.config
+
+## Toolchain configuration
+#
+
+TARGET = ia64-pc-linux-gnu
+TOOLCHAIN_DIR = /usr/local/ia64/bin
+
+ifeq ($(COMPILER),gcc_native)
+	CC = gcc
+	AS = as
+	LD = ld
+	OBJCOPY = objcopy
+	OBJDUMP = objdump
+endif
+
+ifeq ($(COMPILER),icc_native)
+	CC = icc
+	AS = as
+	LD = ld
+	OBJCOPY = objcopy
+	OBJDUMP = objdump
+endif
+
+ifeq ($(COMPILER),gcc_cross)
+	CC = $(TOOLCHAIN_DIR)/$(TARGET)-gcc
+	AS = $(TOOLCHAIN_DIR)/$(TARGET)-as
+	LD = $(TOOLCHAIN_DIR)/$(TARGET)-ld
+	OBJCOPY = $(TOOLCHAIN_DIR)/$(TARGET)-objcopy
+	OBJDUMP = $(TOOLCHAIN_DIR)/$(TARGET)-objdump
+endif
+
+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
+
+ifdef REVISION
+	CFLAGS += "-DREVISION=\"$(REVISION)\""
+endif
+
+ifdef TIMESTAMP
+	CFLAGS += "-DTIMESTAMP=\"$(TIMESTAMP)\""
+endif
+
+SOURCES = \
+	main.c \
+	../../../generic/printf.c \
+	../../../generic/string.c \
+	../../../genarch/balloc.c \
+	asm.S \
+	boot.S
+
+COMPONENTS = \
+	$(KERNELDIR)/kernel.bin \
+	
+#	$(USPACEDIR)/srv/ns/ns \
+#	$(USPACEDIR)/srv/fb/fb \
+#	$(USPACEDIR)/srv/kbd/kbd \
+#	$(USPACEDIR)/srv/console/console \
+#	$(USPACEDIR)/app/init/init \
+#	$(USPACEDIR)/app/tetris/tetris \
+#	$(USPACEDIR)/app/tester/tester \
+#	$(USPACEDIR)/app/klog/klog
+
+OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
+COMPONENT_OBJECTS := $(addsuffix .o,$(basename $(notdir $(COMPONENTS))))
+
+.PHONY: all clean depend
+
+all: image.boot disasm
+
+-include Makefile.depend
+
+image.boot: depend _components.h _link.ld $(COMPONENT_OBJECTS) $(OBJECTS)
+	$(LD) -Map boot.map -no-check-sections -N -T _link.ld $(COMPONENT_OBJECTS) $(OBJECTS) -o $@
+
+depend:
+	-makedepend $(DEFS) $(CFLAGS) -f - $(SOURCES) > Makefile.depend 2> /dev/null
+
+clean:
+	-rm -f _components.h _link.ld $(COMPONENT_OBJECTS) $(OBJECTS) image.boot boot.disasm Makefile.depend
+
+_components.h _link.ld $(COMPONENT_OBJECTS): $(COMPONENTS)
+	./pack $(IMAGE) $(OBJCOPY) $(COMPONENTS)
+
+%.o: %.S
+	$(CC) $(DEFS) $(CFLAGS) -D__ASM__ -c $< -o $@
+
+%.o: %.c
+	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+
+disasm: image.boot
+	$(OBJDUMP) -d image.boot > boot.disasm
Index: boot/arch/ia64/loader/asm.S
===================================================================
--- boot/arch/ia64/loader/asm.S	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
+++ boot/arch/ia64/loader/asm.S	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
@@ -0,0 +1,49 @@
+#
+# Copyright (c) 2006 Martin Decky
+# Copyright (c) 2006 Jakub Jermar 
+# 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.
+#
+
+#include <stack.h>
+
+.text
+
+.global halt
+.global memcpy
+.global jump_to_kernel
+
+halt:
+	
+memcpy:
+
+jump_to_kernel:
+    alloc loc0 = ar.pfs, 1, 1, 0, 0
+    movl r8 = 0x4404000;;
+    mov b1 = r8 ;;
+    mov r1 = in0;
+    br.call.sptk.many b0 = b1;;
+.global ofw
+ofw:
Index: boot/arch/ia64/loader/asm.h
===================================================================
--- boot/arch/ia64/loader/asm.h	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
+++ boot/arch/ia64/loader/asm.h	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2006 Martin Decky
+ * Copyright (c) 2006 Jakub Jermar 
+ * 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.
+ */
+
+#ifndef BOOT_ia64_ASM_H_
+#define BOOT_ia64_ASM_H_
+
+#include "types.h"
+#include "main.h"
+
+#define PAGE_WIDTH	14
+#define PAGE_SIZE	(1 << PAGE_WIDTH)
+
+#define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
+
+extern void halt(void);
+/*extern void jump_to_kernel(void *entry, uint64_t cfg, bootinfo_t *bootinfo,
+	unsigned int bootinfo_size) __attribute__((noreturn));*/
+
+extern void jump_to_kernel(void *) __attribute__((noreturn));
+
+
+#endif
Index: boot/arch/ia64/loader/boot.S
===================================================================
--- boot/arch/ia64/loader/boot.S	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
+++ boot/arch/ia64/loader/boot.S	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
@@ -0,0 +1,69 @@
+#
+# Copyright (c) 2006 Martin Decky
+# Copyright (c) 2006 Jakub Jermar
+# 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.
+#
+
+#include <stack.h>
+
+.section BOOTSTRAP, "ax"
+
+.global start
+start:
+
+	mov ar.rsc = r0
+#	movl r8 = (VRN_KERNEL << VRN_SHIFT) ;;
+	movl r1 = 0x100000
+	movl r8 = initial_stack ;;
+	mov ar.bspstore = r8
+	loadrs
+
+	# initialize memory stack to some sane value
+	movl r12 = initial_stack_top ;;
+	
+	add r12 = -16, r12	/* allocate a scratch area on the stack */
+
+	# initialize gp (Global Pointer) register
+	#movl r1 = _hardcoded_load_address
+
+	ssm (1 << 19) ;; /* Disable f32 - f127 */
+	srlz.i
+	srlz.d ;;
+
+	movl r18 = bootstrap ;;
+	mov b1 = r18 ;;
+	br.call.sptk.many b0 = b1
+
+
+.section bss, "ax"
+
+.align 8192
+
+initial_stack:
+	nop.m 0
+
+.align 8192
+initial_stack_top:
Index: boot/arch/ia64/loader/main.c
===================================================================
--- boot/arch/ia64/loader/main.c	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
+++ boot/arch/ia64/loader/main.c	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2005 Martin Decky
+ * Copyright (c) 2006 Jakub Jermar 
+ * 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.
+ */
+
+#include "main.h" 
+#include <printf.h>
+#include "asm.h"
+#include "_components.h"
+#include <align.h>
+#include <balloc.h>
+
+bootinfo_t bootinfo;
+component_t components[COMPONENTS];
+
+char *release = RELEASE;
+
+void write(const char *str, const int len)
+{
+    return;
+}
+
+
+#ifdef REVISION
+	char *revision = ", revision " REVISION;
+#else
+	char *revision = "";
+#endif
+
+#ifdef TIMESTAMP
+	char *timestamp = "\nBuilt on " TIMESTAMP;
+#else
+	char *timestamp = "";
+#endif
+
+/** Print version information. */
+static void version_print(void)
+{
+	printf("HelenOS IA64 Bootloader\nRelease %s%s%s\nCopyright (c) 2006 HelenOS project\n", release, revision, timestamp);
+}
+
+void bootstrap(void)
+{
+
+	int ii;
+	
+	
+	//for(ii=0;ii<KERNEL_SIZE;ii++) ((char *)(0x100000))[ii] = ((char *)KERNEL_START)[ii+1];
+	
+	
+	//((int *)(0x100000))[0]++;
+	
+
+
+
+	version_print();
+
+	
+	init_components(components);
+
+	printf("\nSystem info\n");
+	printf("\nMemory statistics\n");
+	printf(" %P: boot info structure\n", &bootinfo);
+	
+	unsigned int i;
+	for (i = 0; i < COMPONENTS; i++)
+		printf(" %P: %s image (size %d bytes)\n", components[i].start,
+		    components[i].name, components[i].size);
+
+
+	bootinfo.taskmap.count = 0;
+	for (i = 0; i < COMPONENTS; i++) {
+
+		if (i > 0) {
+			bootinfo.taskmap.tasks[bootinfo.taskmap.count].addr = components[i].start;
+			bootinfo.taskmap.tasks[bootinfo.taskmap.count].size = components[i].size;
+			bootinfo.taskmap.count++;
+		}
+	}
+
+
+	jump_to_kernel(&bootinfo);
+
+
+}
+
Index: boot/arch/ia64/loader/main.h
===================================================================
--- boot/arch/ia64/loader/main.h	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
+++ boot/arch/ia64/loader/main.h	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2005 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.
+ */
+
+#ifndef BOOT_ia64_MAIN_H_
+#define BOOT_ia64_MAIN_H_
+
+#include <ofw.h>
+#include <ofw_tree.h>
+#include <types.h>
+
+
+#define CONFIG_INIT_TASKS	32
+
+typedef struct {
+	void *addr; 
+	size_t size;
+} init_task_t;
+	
+typedef struct {
+	count_t count;
+	init_task_t tasks[CONFIG_INIT_TASKS];
+} init_t;
+
+typedef struct {
+	init_t taskmap;
+} bootinfo_t;
+
+extern bootinfo_t bootinfo;
+
+extern void start(void);
+extern void bootstrap(void);
+
+#endif
Index: boot/arch/ia64/loader/pack
===================================================================
--- boot/arch/ia64/loader/pack	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
+++ boot/arch/ia64/loader/pack	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
@@ -0,0 +1,121 @@
+#! /bin/sh
+
+#
+# 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.
+#
+
+[ "$#" -lt 1 ] && exit 1
+
+OBJCOPY="$1"
+LINK="_link.ld"
+HEADER="_components.h"
+
+shift
+echo 'OUTPUT_FORMAT("elf64-ia64-little")
+ENTRY(start)
+
+SECTIONS {
+	.boot 0x4400000: AT (0x4400000) {
+		*(BOOTSTRAP);
+		
+		. = ALIGN (0x4000);
+		
+' > "$LINK"
+
+echo '#ifndef ___COMPONENTS_H__
+#define ___COMPONENTS_H__
+
+typedef struct {
+	char *name;
+	
+	void *start;
+	void *end;
+	unsigned int size;
+} component_t;' > "$HEADER"
+
+
+COUNT="0"
+DATA=""
+
+for TASK in "$@" ; do
+	BASENAME="`basename "$TASK" | sed 's/^\(.*\)\.[^.]*$/\1/'`"
+	OBJECT="${BASENAME}.o"
+	SYMBOL="`echo "_binary_$TASK" | tr "./" "__"`"
+	MACRO="`echo "$BASENAME" | tr [:lower:] [:upper:]`"
+	echo "$TASK -> $OBJECT"
+	
+	echo "
+		*(.${BASENAME}_image);
+		. = ALIGN (0x4000);" >> "$LINK"	
+	echo "
+extern int ${SYMBOL}_start;
+extern int ${SYMBOL}_end;
+
+#define ${MACRO}_START ((void *) &${SYMBOL}_start)
+#define ${MACRO}_END ((void *) &${SYMBOL}_end)
+#define ${MACRO}_SIZE ((unsigned int) ${MACRO}_END - (unsigned int) ${MACRO}_START)" >> "$HEADER"
+	
+	"$OBJCOPY" -I binary -O elf64-ia64-little -B ia64 --rename-section ".data=.${BASENAME}_image" "$TASK" "$OBJECT"
+		
+	DATA="${DATA}
+	components[$COUNT].name = \"${BASENAME}\";
+	components[$COUNT].start = ${MACRO}_START;
+	components[$COUNT].end = ${MACRO}_END;
+	components[$COUNT].size = ${MACRO}_SIZE;";
+	COUNT="`expr "$COUNT" + 1`"
+done
+
+echo '		
+		*(.text);
+		*(.rodata);
+		*(.rodata.*);
+		*(.data);               /* initialized data */
+		_got = . ;
+		*(.got .got.*);               
+		*(.sdata);
+		*(.sdata2);
+		*(.sbss);
+		*(.bss);                /* uninitialized static variables */
+		*(COMMON);' >> "$LINK"
+
+echo '	}
+	/DISCARD/ : {
+		*(.comment);
+		*(.note*);
+	}
+}' >> "$LINK"
+
+echo "
+#define COMPONENTS $COUNT
+
+static void init_components(component_t components[])
+{
+$DATA
+}
+
+#endif
+" >> "$HEADER"
Index: boot/arch/ia64/loader/stack.h
===================================================================
--- boot/arch/ia64/loader/stack.h	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
+++ boot/arch/ia64/loader/stack.h	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2006 Jakub Jermar
+ * 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.
+ */
+
+#ifndef BOOT_ia64_STACK_H_
+#define BOOT_ia64_STACK_H_
+
+#define STACK_ALIGNMENT			16
+#define STACK_BIAS			2047
+#define STACK_WINDOW_SAVE_AREA_SIZE	(16*8)
+
+#endif
Index: boot/arch/ia64/loader/types.h
===================================================================
--- boot/arch/ia64/loader/types.h	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
+++ boot/arch/ia64/loader/types.h	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+
+#ifndef BOOT_ia64_TYPES_H_
+#define BOOT_ia64_TYPES_H_
+
+#include <gentypes.h>
+
+typedef signed char int8_t;
+
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;
+typedef unsigned long uint64_t;
+
+typedef uint64_t uintptr_t;
+typedef uint64_t unative_t;
+
+typedef unsigned long count_t;
+
+
+#endif
Index: boot/arch/sparc64/loader/Makefile
===================================================================
--- boot/arch/sparc64/loader/Makefile	(revision 556fc532f3c6e9105f7ccbabcd6867fe9432d379)
+++ boot/arch/sparc64/loader/Makefile	(revision 2a06e2f051977fa82b2af03186f4f4a82830d63f)
@@ -102,5 +102,5 @@
 
 image.boot: depend _components.h _link.ld $(COMPONENT_OBJECTS) $(OBJECTS)
-	$(LD) -no-check-sections -N -T _link.ld $(COMPONENT_OBJECTS) $(OBJECTS) -o $@
+	$(LD) -Map image.map -no-check-sections -N -T _link.ld $(COMPONENT_OBJECTS) $(OBJECTS) -o $@
 
 depend:
