Index: arch/ia32/_link.ld
===================================================================
--- arch/ia32/_link.ld	(revision dcbc8be75e5824d4f8c94163799daa1370fbaae0)
+++ arch/ia32/_link.ld	(revision ac5d02b7ec81adf50a7070d07dc35f5f6df54639)
@@ -13,30 +13,30 @@
 
 SECTIONS {
-    .unmapped 0x8000: AT (0x8000) {
-	unmapped_ktext_start = .;
-	*(K_TEXT_START);
-	unmapped_ktext_end = .;
-	unmapped_kdata_start = .;
-	*(K_DATA_START);
-	unmapped_kdata_end = .;
-    }
-    
-    .mapped (0x80000000+SIZEOF(.unmapped)+0x8000) : AT (0x8000+SIZEOF(.unmapped)) { 
-	ktext_start = .;
-	*(.text);
-	ktext_end = .;
+	.unmapped 0x8000: AT (0x8000) {
+		unmapped_ktext_start = .;
+		*(K_TEXT_START);
+		unmapped_ktext_end = .;
+		unmapped_kdata_start = .;
+		*(K_DATA_START);
+		unmapped_kdata_end = .;
+	}
 
-	kdata_start = .;
-	*(.data);		/* initialized data */
-	*(.rodata*);		/* string literals */
-	*(COMMON);		/* global variables */
-	*(.bss);		/* uninitialized static variables */
-	*(K_DATA_END);
-	kdata_end = .;
-    }
+	.mapped (0x80000000+SIZEOF(.unmapped)+0x8000) : AT (0x8000+SIZEOF(.unmapped)) { 
+		ktext_start = .;
+		*(.text);
+		ktext_end = .;
 
-    _hardcoded_ktext_size = ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start);
-    _hardcoded_kdata_size = kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start);
-    _hardcoded_load_address = 0x80008000;
+		kdata_start = .;
+		*(.data);		/* initialized data */
+		*(.rodata*);		/* string literals */
+		*(COMMON);		/* global variables */
+		*(.bss);		/* uninitialized static variables */
+		*(K_DATA_END);
+		kdata_end = .;
+	}
+
+	_hardcoded_ktext_size = ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start);
+	_hardcoded_kdata_size = kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start);
+	_hardcoded_load_address = 0x80008000;
 
 }
Index: arch/ia32/include/mm/vm.h
===================================================================
--- arch/ia32/include/mm/vm.h	(revision dcbc8be75e5824d4f8c94163799daa1370fbaae0)
+++ arch/ia32/include/mm/vm.h	(revision ac5d02b7ec81adf50a7070d07dc35f5f6df54639)
@@ -38,5 +38,5 @@
 
 #define UTEXT_ADDRESS_ARCH	0x00001000
-#define USTACK_ADDRESS_ARCH	(0x7fffffffUL-(PAGE_SIZE-1))
+#define USTACK_ADDRESS_ARCH	(0x7fffffff-(PAGE_SIZE-1))
 #define UDATA_ADDRESS_ARCH	0x21000000
 
Index: arch/ia32/src/asm.s
===================================================================
--- arch/ia32/src/asm.s	(revision dcbc8be75e5824d4f8c94163799daa1370fbaae0)
+++ arch/ia32/src/asm.s	(revision ac5d02b7ec81adf50a7070d07dc35f5f6df54639)
@@ -445,5 +445,5 @@
 
 
-.section K_DATA_START
+#.section K_DATA_START
 .global interrupt_handler_size
 
Index: arch/ia32/src/drivers/ega.c
===================================================================
--- arch/ia32/src/drivers/ega.c	(revision dcbc8be75e5824d4f8c94163799daa1370fbaae0)
+++ arch/ia32/src/drivers/ega.c	(revision ac5d02b7ec81adf50a7070d07dc35f5f6df54639)
@@ -48,5 +48,5 @@
 	__u8 hi, lo;
 
-	map_page_to_frame(VIDEORAM, VIDEORAM, PAGE_NOT_CACHEABLE, 0);
+	map_page_to_frame(PA2KA(VIDEORAM), VIDEORAM, PAGE_NOT_CACHEABLE, 0);
 	outb(0x3d4,0xe);
 	hi = inb(0x3d5);
@@ -59,5 +59,5 @@
 void ega_display_char(char ch)
 {
-	__u8 *vram = (__u8 *) VIDEORAM;
+	__u8 *vram = (__u8 *) PA2KA(VIDEORAM);
 	
 	vram[ega_cursor*2] = ch;
@@ -72,6 +72,6 @@
 	    return;
 
-	memcopy(VIDEORAM + ROW*2, VIDEORAM, (SCREEN - ROW)*2);
-	memsetw(VIDEORAM + (SCREEN - ROW)*2, ROW, 0x0720);
+	memcopy(PA2KA(VIDEORAM) + ROW*2, PA2KA(VIDEORAM), (SCREEN - ROW)*2);
+	memsetw(PA2KA(VIDEORAM) + (SCREEN - ROW)*2, ROW, 0x0720);
 	ega_cursor = ega_cursor - ROW;
 }
Index: arch/ia32/src/mm/page.c
===================================================================
--- arch/ia32/src/mm/page.c	(revision dcbc8be75e5824d4f8c94163799daa1370fbaae0)
+++ arch/ia32/src/mm/page.c	(revision ac5d02b7ec81adf50a7070d07dc35f5f6df54639)
@@ -36,4 +36,5 @@
 #include <arch/asm.h>
 #include <synch/spinlock.h>
+#include <debug.h>
 
 /*
@@ -54,5 +55,5 @@
 
 	if (config.cpu_active == 1) {
-		dba = KA2PA(frame_alloc(FRAME_KA | FRAME_PANIC));
+		dba = frame_alloc(FRAME_KA | FRAME_PANIC);
 		memsetb(dba, PAGE_SIZE, 0);
 	    
@@ -69,5 +70,5 @@
 
 		trap_register(14, page_fault);
-		cpu_write_dba(dba);		
+		cpu_write_dba(KA2PA(dba));
 	}
 	else {
@@ -82,5 +83,5 @@
 		dba = frame_alloc(FRAME_KA | FRAME_PANIC);
 		memcopy(bootstrap_dba, dba, PAGE_SIZE);
-		cpu_write_dba(dba);
+		cpu_write_dba(KA2PA(dba));
 	}
 
@@ -122,6 +123,6 @@
 		 * frame for the page table and clean it.
 		 */
-		newpt = KA2PA(frame_alloc(FRAME_KA));
-		pd[pde].frame_address = newpt >> 12;
+		newpt = frame_alloc(FRAME_KA);
+		pd[pde].frame_address = KA2PA(newpt) >> 12;
 		memsetb(newpt, PAGE_SIZE, 0);
 		pd[pde].present = 1;
@@ -129,7 +130,7 @@
 	}
 	if (copy) {
-		newpt = KA2PA(frame_alloc(FRAME_KA));
+		newpt = frame_alloc(FRAME_KA);
 		memcopy(pd[pde].frame_address << 12, newpt, PAGE_SIZE);
-		pd[pde].frame_address = newpt >> 12;
+		pd[pde].frame_address = KA2PA(newpt) >> 12;
 	}
 	
Index: arch/ia32/src/userspace.c
===================================================================
--- arch/ia32/src/userspace.c	(revision dcbc8be75e5824d4f8c94163799daa1370fbaae0)
+++ arch/ia32/src/userspace.c	(revision ac5d02b7ec81adf50a7070d07dc35f5f6df54639)
@@ -53,5 +53,5 @@
 	    "pushl %4\n"
 	    "iret"
-	    : : "i" (selector(UDATA_DES) | PL_USER), "i" (USTACK_ADDRESS+THREAD_STACK_SIZE-1000), "r" (pri), "i" (selector(UTEXT_DES) | PL_USER), "i" (UTEXT_ADDRESS));
+	    : : "i" (selector(UDATA_DES) | PL_USER), "i" (USTACK_ADDRESS+(THREAD_STACK_SIZE-1)), "r" (pri), "i" (selector(UTEXT_DES) | PL_USER), "i" (UTEXT_ADDRESS));
 	
 	/* Unreachable */
Index: arch/ia64/_link.ld
===================================================================
--- arch/ia64/_link.ld	(revision dcbc8be75e5824d4f8c94163799daa1370fbaae0)
+++ arch/ia64/_link.ld	(revision ac5d02b7ec81adf50a7070d07dc35f5f6df54639)
@@ -12,76 +12,81 @@
 
 SECTIONS {
-    .image 0x0000000000001000: AT (0x0000000000001000) { 
-	    *(K_TEXT_START)
-	    *(.text .stub .text.* .gnu.linkonce.t.*)
-	    *(.interp)
-	    *(.hash)
-	    *(.dynsym)
-	    *(.dynstr)
-	    *(.rel.init)
-	    *(.rela.init)
-	    *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
-	    *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
-	    *(.rel.fini)
-	    *(.rela.fini)
-	    *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-	    *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
-	    *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
-	    *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
-	    *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
-	    *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
-	    *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
-	    *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
-	    *(.rel.got)
-	    *(.rela.got)
-	    *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)
-	    *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
-	    *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)
-	    *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
-	    *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)
-	    *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
-	    *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)
-	    *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
-	    *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
-	    *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-	    *(.rel.plt)
-	    *(.rela.plt)
-	    *(.rela.IA_64.pltoff)
-	    *(.init)
-	    *(.plt)
-	    *(.fini)
-	    *(K_TEXT_END)
-	    *(K_DATA_START)
-	    *(.rodata .rodata.* .gnu.linkonce.r.*)
-	    *(.rodata1)
-	    *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
-	    *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
-	    *(.opd)
-	    *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*)
-	    *(.IA_64.unwind* .gnu.linkonce.ia64unw.*)
-	    *(.eh_frame_hdr)
-	    *(.preinit_array)
-	    *(.init_array)
-	    *(.fini_array)
-	    *(.data .data.* .gnu.linkonce.d.*)
-	    *(.data1)
-	    *(.tdata .tdata.* .gnu.linkonce.td.*)
-	    *(.tcommon)
-	    *(.eh_frame)
-	    *(.gcc_except_table)
-	    *(.dynamic)
-	    *(.jcr)
-	    *(.got)
-	    *(.IA_64.pltoff)
-	    *(.sdata .sdata.* .gnu.linkonce.s.*)
-	    *(.dynsbss)
-	    *(.sbss .sbss.* .gnu.linkonce.sb.*)
-	    *(.scommon)
-	    *(.dynbss)
-	    *(.bss .bss.* .gnu.linkonce.b.*)
-	    *(COMMON);
-	    *(K_DATA_END)
-    }
+	.image 0x0000000000001000: AT (0x0000000000001000) { 
+		ktext_start = .;
+		*(K_TEXT_START);
+		*(.text .stub .text.* .gnu.linkonce.t.*)
+		*(.interp)
+		*(.hash)
+		*(.dynsym)
+		*(.dynstr)
+		*(.rel.init)
+		*(.rela.init)
+		*(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
+		*(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
+		*(.rel.fini)
+		*(.rela.fini)
+		*(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
+		*(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
+		*(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
+		*(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
+		*(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
+		*(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
+		*(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
+		*(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
+		*(.rel.got)
+		*(.rela.got)
+		*(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)
+		*(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
+		*(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)
+		*(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
+		*(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)
+		*(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
+		*(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)
+		*(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
+		*(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
+		*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
+		*(.rel.plt)
+		*(.rela.plt)
+		*(.rela.IA_64.pltoff)
+		*(.init)
+		*(.plt)
+		*(.fini)
+		ktext_end = .;
+		kdata_start = .;
+		*(K_DATA_START)
+		*(.rodata .rodata.* .gnu.linkonce.r.*)
+		*(.rodata1)
+		*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
+		*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
+		*(.opd)
+		*(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*)
+		*(.IA_64.unwind* .gnu.linkonce.ia64unw.*)
+		*(.eh_frame_hdr)
+		*(.preinit_array)
+		*(.init_array)
+		*(.fini_array)
+		*(.data .data.* .gnu.linkonce.d.*)
+		*(.data1)
+		*(.tdata .tdata.* .gnu.linkonce.td.*)
+		*(.tcommon)
+		*(.eh_frame)
+		*(.gcc_except_table)
+		*(.dynamic)
+		*(.jcr)
+		*(.got)
+		*(.IA_64.pltoff)
+		*(.sdata .sdata.* .gnu.linkonce.s.*)
+		*(.dynsbss)
+		*(.sbss .sbss.* .gnu.linkonce.sb.*)
+		*(.scommon)
+		*(.dynbss)
+		*(.bss .bss.* .gnu.linkonce.b.*)
+		*(COMMON);
+		kdata_end = .;
+	}
 
+	_hardcoded_ktext_size = ktext_end - ktext_start;
+	_hardcoded_kdata_size = kdata_end - kdata_start;
+	_hardcoded_load_address = 0x0000000000001000;
     
 }
Index: arch/ia64/src/start.S
===================================================================
--- arch/ia64/src/start.S	(revision dcbc8be75e5824d4f8c94163799daa1370fbaae0)
+++ arch/ia64/src/start.S	(revision ac5d02b7ec81adf50a7070d07dc35f5f6df54639)
@@ -28,6 +28,4 @@
 
 .section K_TEXT_START
-.global k_text_start
-k_text_start:
 
 .global kernel_image_start
@@ -50,24 +48,21 @@
 
 	# initialize gp (Global Pointer) register
-	movl r1=k_text_start
+	movl r1 = _hardcoded_load_address
+	
+	;;
 
 	#
 	# Initialize hardcoded_* variables.
-	# (IA-64 port doesn't get these values from linker.)
 	#
-	movl r8 = k_text_start	;;
-	movl r9 = k_text_end	;;
-	sub r8 = r9, r8		
-	addl r10 = @gprel(hardcoded_ktext_size), gp;;
-	st4 [r10] = r8		;;
-
-	movl r8 = k_data_start	;;
-	movl r9 = k_data_end	;;
-	sub r8 = r9, r8		
-	addl r10 = @gprel(hardcoded_kdata_size), gp;;
-	st4 [r10] = r8		;;
-	
-	addl r10 = @gprel(hardcoded_load_address), gp;;
-	st8 [r10] = r1
+	movl r14 = _hardcoded_ktext_size
+	movl r15 = _hardcoded_kdata_size
+	movl r16 = _hardcoded_load_address
+	addl r17 = @gprel(hardcoded_ktext_size), gp
+	addl r18 = @gprel(hardcoded_kdata_size), gp
+	addl r19 = @gprel(hardcoded_load_address), gp
+	;;
+	st4 [r17] = r14
+	st4 [r18] = r15
+	st8 [r19] = r16
 	
 	br.call.sptk.many b0=main_bsp
@@ -75,14 +70,2 @@
 0:
 	br 0b
-
-.section K_TEXT_END
-.global k_text_end
-k_text_end:
-
-.section K_DATA_START
-.global k_data_start
-k_data_start:
-
-.section K_DATA_END
-.global k_data_end
-k_data_end:
Index: arch/mips/_link.ld
===================================================================
--- arch/mips/_link.ld	(revision dcbc8be75e5824d4f8c94163799daa1370fbaae0)
+++ arch/mips/_link.ld	(revision ac5d02b7ec81adf50a7070d07dc35f5f6df54639)
@@ -11,37 +11,37 @@
 
 SECTIONS {
-    .image 0x80000000: AT (0x80000000) { 
-	ktext_start = .;
-	*(.text);
-	ktext_end = .;
+	.image 0x80000000: AT (0x80000000) { 
+		ktext_start = .;
+		*(.text);
+		ktext_end = .;
 
-	kdata_start = .;
-	*(.rdata);
-	*(.data);		/* initialized data */
-	*(.lit8);
-	*(.lit4);
-	*(.sdata);
-	*(.sbss);
-	*(.bss);		/* uninitialized static variables */	
-	*(.scommon);
-	*(COMMON); 		/* global variables */
-	kdata_end = .;
+		kdata_start = .;
+		*(.rdata);
+		*(.data);		/* initialized data */
+		*(.lit8);
+		*(.lit4);
+		*(.sdata);
+		*(.sbss);
+		*(.bss);		/* uninitialized static variables */	
+		*(.scommon);
+		*(COMMON); 		/* global variables */
+		kdata_end = .;
 
-    } = 0x00000000
+	} = 0x00000000
 
-    . = ABSOLUTE(hardcoded_ktext_size);
-    .patch_1 : {
-        LONG(ktext_end - ktext_start);
-    }
+	. = ABSOLUTE(hardcoded_ktext_size);
+	.patch_1 : {
+        	LONG(ktext_end - ktext_start);
+	}
 
-    . = ABSOLUTE(hardcoded_kdata_size);
-    .patch_2 : {
-        LONG(kdata_end - kdata_start);
-    }
+	. = ABSOLUTE(hardcoded_kdata_size);
+	.patch_2 : {
+        	LONG(kdata_end - kdata_start);
+	}
 
-    . = ABSOLUTE(hardcoded_load_address);
-    .patch_3 : {
-        LONG(0x80000000);
-    }
+	. = ABSOLUTE(hardcoded_load_address);
+	.patch_3 : {
+        	LONG(0x80000000);
+	}
 
 }
Index: src/main/main.c
===================================================================
--- src/main/main.c	(revision dcbc8be75e5824d4f8c94163799daa1370fbaae0)
+++ src/main/main.c	(revision ac5d02b7ec81adf50a7070d07dc35f5f6df54639)
@@ -56,4 +56,6 @@
 #include <arch/faddr.h>
 
+#include <typedefs.h>
+
 char *project = "SPARTAN kernel";
 char *copyright = "Copyright (C) 2001-2005 Jakub Jermar\nCopyright (C) 2005 HelenOS project";
@@ -68,6 +70,6 @@
  */
 __address hardcoded_load_address = 0;
-__u32 hardcoded_ktext_size = 0;
-__u32 hardcoded_kdata_size = 0;
+size_t hardcoded_ktext_size = 0;
+size_t hardcoded_kdata_size = 0;
 
 void main_bsp(void);
