Index: kernel/arch/amd64/src/amd64.c
===================================================================
--- kernel/arch/amd64/src/amd64.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/amd64/src/amd64.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -227,4 +227,18 @@
 }
 
+/** Construct function pointer
+ *
+ * @param fptr   function pointer structure
+ * @param addr   function address
+ * @param caller calling function address
+ *
+ * @return address of the function pointer
+ *
+ */
+void *arch_construct_function(fncptr_t *fptr, void *addr, void *caller)
+{
+	return addr;
+}
+
 /** @}
  */
Index: kernel/arch/amd64/src/debugger.c
===================================================================
--- kernel/arch/amd64/src/debugger.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/amd64/src/debugger.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -205,5 +205,5 @@
 	/* Send IPI */
 #ifdef CONFIG_SMP
-//	ipi_broadcast(VECTOR_DEBUG_IPI);	
+//	ipi_broadcast(VECTOR_DEBUG_IPI);
 #endif	
 
@@ -211,8 +211,8 @@
 }
 
-#ifdef amd64
-#	define getip(x)	((x)->rip)
+#ifdef __64_BITS__
+	#define getip(x)  ((x)->rip)
 #else
-#	define getip(x)	((x)->eip)
+	#define getip(x)  ((x)->eip)
 #endif
 
@@ -277,5 +277,5 @@
 	
 	/* Set RF to restart the instruction  */
-#ifdef amd64       
+#ifdef __64_BITS__
 	istate->rflags |= RFLAGS_RF;
 #else
@@ -349,5 +349,5 @@
 	char *symbol;
 
-#ifdef __32_BITS__	
+#ifdef __32_BITS__
 	printf("#  Count Address    In symbol\n");
 	printf("-- ----- ---------- ---------\n");
Index: kernel/arch/amd64/src/interrupt.c
===================================================================
--- kernel/arch/amd64/src/interrupt.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/amd64/src/interrupt.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -143,5 +143,5 @@
 static void nm_fault(int n, istate_t *istate)
 {
-#ifdef CONFIG_FPU_LAZY     
+#ifdef CONFIG_FPU_LAZY
 	scheduler_fpu_lazy_request();
 #else
Index: kernel/arch/arm32/include/asm.h
===================================================================
--- kernel/arch/arm32/include/asm.h	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/arm32/include/asm.h	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -47,4 +47,15 @@
 }
 
+/** No I/O port address space on ARM. */
+static inline void outb(ioport_t port, uint8_t v)
+{
+}
+
+/** No I/O port address space on ARM. */
+static inline uint8_t inb(ioport_t port)
+{
+	return 0;
+}
+
 /** Return base address of current stack.
  * 
Index: kernel/arch/arm32/src/arm32.c
===================================================================
--- kernel/arch/arm32/src/arm32.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/arm32/src/arm32.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -93,5 +93,5 @@
 		.y = 480,
 		.scan = 1920,
-		.visual = VISUAL_RGB_8_8_8,
+		.visual = VISUAL_BGR_8_8_8,
 	};
 	fb_init(&prop);
@@ -165,6 +165,19 @@
 {
 	/* not implemented */
-	for (;;)
-		;
+	while (1);
+}
+
+/** Construct function pointer
+ *
+ * @param fptr   function pointer structure
+ * @param addr   function address
+ * @param caller calling function address
+ *
+ * @return address of the function pointer
+ *
+ */
+void *arch_construct_function(fncptr_t *fptr, void *addr, void *caller)
+{
+	return addr;
 }
 
Index: kernel/arch/ia32/_link.ld.in
===================================================================
--- kernel/arch/ia32/_link.ld.in	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/ia32/_link.ld.in	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -1,10 +1,10 @@
 /** IA-32 linker script
- *  
+ *
  * umapped section:
- * 	kernel text
- * 	kernel data
+ *  kernel text
+ *  kernel data
  * mapped section:
- *	kernel text
- *	kernel data 
+ *  kernel text
+ *  kernel data
  */
 
@@ -29,7 +29,7 @@
 		
 		kdata_start = .;
-		*(.data);			/* initialized data */
-		*(.rodata*);			/* string literals */
-		*(COMMON);			/* global variables */
+		*(.data);               /* initialized data */
+		*(.rodata*);            /* string literals */
+		*(COMMON);              /* global variables */
 		hardcoded_load_address = .;
 		LONG(PA2KA(BOOT_OFFSET));
@@ -43,15 +43,15 @@
 		LONG(unmapped_kdata_end - unmapped_kdata_start);
 		symbol_table = .;
-		*(symtab.*);            	/* Symbol table, must be LAST symbol! */
-		*(.bss);			/* uninitialized static variables */
+		*(symtab.*);            /* Symbol table, must be LAST symbol! */
+		*(.bss);                /* uninitialized static variables */
 		kdata_end = .;
 	}
-
+	
 	/DISCARD/ : {
-		*(.note.GNU-stack);		
+		*(.note.GNU-stack);
 		*(.comment);
 	}
 	
-#ifdef CONFIG_SMP	
+#ifdef CONFIG_SMP
 	
 	_hardcoded_unmapped_size = (unmapped_ktext_end - unmapped_ktext_start) + (unmapped_kdata_end - unmapped_kdata_start);
@@ -59,6 +59,6 @@
 	ap_gdtr = unmapped_ap_gdtr - BOOT_OFFSET + AP_BOOT_OFFSET;
 	protected_ap_gdtr = PA2KA(ap_gdtr);
-
+	
 #endif /* CONFIG_SMP */
-
+	
 }
Index: kernel/arch/ia32/include/fpu_context.h
===================================================================
--- kernel/arch/ia32/include/fpu_context.h	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/ia32/include/fpu_context.h	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -38,5 +38,4 @@
 #include <arch/types.h>
 
-#define ARCH_HAS_FPU
 #define FPU_CONTEXT_ALIGN 16
 
Index: kernel/arch/ia32/src/ia32.c
===================================================================
--- kernel/arch/ia32/src/ia32.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/ia32/src/ia32.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -178,4 +178,18 @@
 }
 
+/** Construct function pointer
+ *
+ * @param fptr   function pointer structure
+ * @param addr   function address
+ * @param caller calling function address
+ *
+ * @return address of the function pointer
+ *
+ */
+void *arch_construct_function(fncptr_t *fptr, void *addr, void *caller)
+{
+	return addr;
+}
+
 /** @}
  */
Index: kernel/arch/ia64/include/asm.h
===================================================================
--- kernel/arch/ia64/include/asm.h	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/ia64/include/asm.h	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -42,5 +42,5 @@
 #define IA64_IOSPACE_ADDRESS 0xE001000000000000ULL
 
-static inline void  outb(ioport_t port, uint8_t v)
+static inline void outb(ioport_t port, uint8_t v)
 {
 	*((uint8_t *)(IA64_IOSPACE_ADDRESS +
@@ -50,5 +50,5 @@
 }
 
-static inline void  outw(ioport_t port, uint16_t v)
+static inline void outw(ioport_t port, uint16_t v)
 {
 	*((uint16_t *)(IA64_IOSPACE_ADDRESS +
@@ -58,5 +58,5 @@
 }
 
-static inline void  outl(ioport_t port, uint32_t v)
+static inline void outl(ioport_t port, uint32_t v)
 {
 	*((uint32_t *)(IA64_IOSPACE_ADDRESS +
Index: kernel/arch/ia64/include/drivers/kbd.h
===================================================================
--- kernel/arch/ia64/include/drivers/kbd.h	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/ia64/include/drivers/kbd.h	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -36,10 +36,8 @@
 #define KERN_ia64_KBD_H_
 
-
-#define KBD_UNKNOWN 0
-#define	KBD_SKI 1
-#define	KBD_LEGACY 2
-#define	KBD_NS16550 3
-
+#define KBD_UNKNOWN  0
+#define KBD_SKI      1
+#define KBD_LEGACY   2
+#define KBD_NS16550  3
 
 #endif
Index: kernel/arch/ia64/include/fpu_context.h
===================================================================
--- kernel/arch/ia64/include/fpu_context.h	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/ia64/include/fpu_context.h	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -36,5 +36,4 @@
 #define KERN_ia64_FPU_CONTEXT_H_
 
-#define ARCH_HAS_FPU 1
 #define FPU_CONTEXT_ALIGN 16
 
Index: kernel/arch/ia64/include/interrupt.h
===================================================================
--- kernel/arch/ia64/include/interrupt.h	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/ia64/include/interrupt.h	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -154,4 +154,6 @@
 extern void disabled_fp_register(uint64_t vector, istate_t *istate);
 
+extern void trap_virtual_enable_irqs(uint16_t irqmask);
+
 #endif
 
Index: kernel/arch/ia64/src/ia64.c
===================================================================
--- kernel/arch/ia64/src/ia64.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/ia64/src/ia64.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -133,7 +133,7 @@
 #ifdef SKI
 		ski_init_console();
-#else	
+#else
 		ega_init(EGA_BASE, EGA_VIDEORAM);
-#endif	
+#endif
 	}
 	it_init();
@@ -266,10 +266,10 @@
 #ifdef SKI
 	ski_kbd_release();
-#else	
+#else
 #ifdef CONFIG_NS16550
 	ns16550_release();
-#else	
+#else
 	i8042_release();
-#endif	
+#endif
 #endif
 }
@@ -282,4 +282,21 @@
 }
 
+/** Construct function pointer
+ *
+ * @param fptr   function pointer structure
+ * @param addr   function address
+ * @param caller calling function address
+ *
+ * @return address of the function pointer
+ *
+ */
+void *arch_construct_function(fncptr_t *fptr, void *addr, void *caller)
+{
+	fptr->fnc = (unative_t) addr;
+	fptr->gp = ((unative_t *) caller)[1];
+	
+	return (void *) fptr;
+}
+
 /** @}
  */
Index: kernel/arch/ia64/src/interrupt.c
===================================================================
--- kernel/arch/ia64/src/interrupt.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/ia64/src/interrupt.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -195,6 +195,6 @@
 void disabled_fp_register(uint64_t vector, istate_t *istate)
 {
-#ifdef CONFIG_FPU_LAZY 
-	scheduler_fpu_lazy_request();	
+#ifdef CONFIG_FPU_LAZY
+	scheduler_fpu_lazy_request();
 #else
 	fault_if_from_uspace(istate, "Interruption: %#hx (%s).",
@@ -302,4 +302,8 @@
 }
 
+void trap_virtual_enable_irqs(uint16_t irqmask)
+{
+}
+
 /** @}
  */
Index: kernel/arch/ia64/src/ski/ski.c
===================================================================
--- kernel/arch/ia64/src/ski/ski.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/ia64/src/ski/ski.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -47,5 +47,5 @@
 #include <arch/drivers/kbd.h>
 
-#define SKI_KBD_INR	0
+#define SKI_KBD_INR  0
 
 static irq_t ski_kbd_irq;
@@ -115,7 +115,7 @@
 {
 	int ch;
-
-	while(!(ch = ski_getchar()))
-		;
+	
+	while(!(ch = ski_getchar()));
+	
 	if (ch == '\r')
 		ch = '\n'; 
@@ -129,14 +129,14 @@
 	static char last; 
 	ipl_t ipl;
-
+	
 	ipl = interrupts_disable();
-
+	
 	if (kbd_disabled) {
 		interrupts_restore(ipl);
 		return;
 	}
-		
+	
 	spinlock_lock(&ski_kbd_irq.lock);
-
+	
 	ch = ski_getchar();
 	if(ch == '\r')
@@ -178,5 +178,5 @@
 static void ski_kbd_disable(chardev_t *d)
 {
-	kbd_disabled = true;	
+	kbd_disabled = true;
 }
 
Index: kernel/arch/mips32/include/asm.h
===================================================================
--- kernel/arch/mips32/include/asm.h	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/mips32/include/asm.h	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -71,4 +71,15 @@
 extern ipl_t interrupts_read(void);
 
+/** No I/O port address space on MIPS. */
+static inline void outb(ioport_t port, uint8_t v)
+{
+}
+
+/** No I/O port address space on MIPS. */
+static inline uint8_t inb(ioport_t port)
+{
+	return 0;
+}
+
 #endif
 
Index: kernel/arch/mips32/include/context_offset.h
===================================================================
--- kernel/arch/mips32/include/context_offset.h	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/mips32/include/context_offset.h	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -115,8 +115,8 @@
 	sw $gp,OFFSET_GP(\ctx)
 
-#ifndef KERNEL		
+#ifndef KERNEL
 	sw $k1,OFFSET_TLS(\ctx)
 
-# ifdef CONFIG_MIPS_FPU	
+#ifdef CONFIG_FPU
 	mfc1 $t0,$20
 	sw $t0, OFFSET_F20(\ctx)
@@ -151,5 +151,5 @@
 	mfc1 $t0,$30
 	sw $t0, OFFSET_F30(\ctx)
-# endif /* CONFIG_MIPS_FPU */	
+#endif /* CONFIG_FPU */
 #endif /* KERNEL */
 
@@ -173,5 +173,5 @@
 	lw $k1,OFFSET_TLS(\ctx)
 
-# ifdef CONFIG_MIPS_FPU	
+#ifdef CONFIG_FPU
 	lw $t0, OFFSET_F20(\ctx)
 	mtc1 $t0,$20
@@ -206,7 +206,7 @@
 	lw $t0, OFFSET_F30(\ctx)
 	mtc1 $t0,$30
-# endif	/* CONFIG_MIPS_FPU */
-	
+#endif /* CONFIG_FPU */
 #endif /* KERNEL */
+
 	lw $ra,OFFSET_PC(\ctx)
 	lw $sp,OFFSET_SP(\ctx)
Index: kernel/arch/mips32/src/asm.S
===================================================================
--- kernel/arch/mips32/src/asm.S	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/mips32/src/asm.S	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -160,5 +160,5 @@
 .global fpu_context_save
 fpu_context_save:
-#ifdef ARCH_HAS_FPU
+#ifdef CONFIG_FPU
 	fpu_gp_save 0,$a0
 	fpu_gp_save 1,$a0
@@ -231,5 +231,5 @@
 .global fpu_context_restore
 fpu_context_restore:
-#ifdef ARCH_HAS_FPU
+#ifdef CONFIG_FPU
 	fpu_gp_restore 0,$a0
 	fpu_gp_restore 1,$a0
Index: kernel/arch/mips32/src/drivers/msim.c
===================================================================
--- kernel/arch/mips32/src/drivers/msim.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/mips32/src/drivers/msim.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -77,5 +77,4 @@
 }
 
-#include <print.h>
 /** Read character using polling, assume interrupts disabled */
 static char msim_do_read(chardev_t *dev)
Index: kernel/arch/mips32/src/fpu_context.c
===================================================================
--- kernel/arch/mips32/src/fpu_context.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/mips32/src/fpu_context.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -41,5 +41,5 @@
 void fpu_disable(void)
 {	
-#ifdef ARCH_HAS_FPU
+#ifdef CONFIG_FPU
 	cp0_status_write(cp0_status_read() & ~cp0_status_fpu_bit);
 #endif
@@ -48,5 +48,5 @@
 void fpu_enable(void)
 {
-#ifdef ARCH_HAS_FPU
+#ifdef CONFIG_FPU
 	cp0_status_write(cp0_status_read() | cp0_status_fpu_bit);
 #endif
Index: kernel/arch/mips32/src/mips32.c
===================================================================
--- kernel/arch/mips32/src/mips32.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/mips32/src/mips32.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -112,10 +112,10 @@
 	cp0_status_write(cp0_status_read() &
 	    ~(cp0_status_bev_bootstrap_bit | cp0_status_erl_error_bit));
-
-	/* 
-	 * Mask all interrupts 
+	
+	/*
+	 * Mask all interrupts
 	 */
 	cp0_mask_all_int();
-		
+	
 	debugger_init();
 }
@@ -133,9 +133,24 @@
 		.y = 480,
 		.scan = 1920,
-		.visual = VISUAL_RGB_8_8_8,
+		.visual = VISUAL_BGR_8_8_8,
 	};
 	fb_init(&gxemul_prop);
 #endif
-	sysinfo_set_item_val("machine." STRING(MACHINE), NULL, 1);
+
+#ifdef msim
+	sysinfo_set_item_val("machine.msim", NULL, 1);
+#endif
+
+#ifdef simics
+	sysinfo_set_item_val("machine.simics", NULL, 1);
+#endif
+
+#ifdef bgxemul
+	sysinfo_set_item_val("machine.bgxemul", NULL, 1);
+#endif
+
+#ifdef lgxemul
+	sysinfo_set_item_val("machine.lgxemul", NULL, 1);
+#endif
 }
 
@@ -162,6 +177,5 @@
 	    (uintptr_t) kernel_uarg->uspace_entry);
 	
-	while (1)
-		;
+	while (1);
 }
 
@@ -196,6 +210,19 @@
 	___halt();
 	
-	while (1)
-		;
+	while (1);
+}
+
+/** Construct function pointer
+ *
+ * @param fptr   function pointer structure
+ * @param addr   function address
+ * @param caller calling function address
+ *
+ * @return address of the function pointer
+ *
+ */
+void *arch_construct_function(fncptr_t *fptr, void *addr, void *caller)
+{
+	return addr;
 }
 
Index: kernel/arch/mips32/src/mm/frame.c
===================================================================
--- kernel/arch/mips32/src/mm/frame.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/mips32/src/mm/frame.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -76,5 +76,5 @@
 static bool frame_available(pfn_t frame)
 {
-#if MACHINE == msim
+#ifdef msim
 	/* MSIM device (dprinter) */
 	if (frame == (KA2PA(MSIM_VIDEORAM) >> ZERO_PAGE_WIDTH))
@@ -86,5 +86,5 @@
 #endif
 
-#if MACHINE == simics
+#ifdef simics
 	/* Simics device (serial line) */
 	if (frame == (KA2PA(SERIAL_ADDRESS) >> ZERO_PAGE_WIDTH))
@@ -92,5 +92,5 @@
 #endif
 
-#if (MACHINE == lgxemul) || (MACHINE == bgxemul)
+#if defined(lgxemul) || defined(bgxemul)
 	/* gxemul devices */
 	if (overlaps(frame << ZERO_PAGE_WIDTH, ZERO_PAGE_SIZE,
@@ -219,5 +219,5 @@
 					if (ZERO_PAGE_VALUE != 0xdeadbeef)
 						avail = false;
-#if (MACHINE == lgxemul) || (MACHINE == bgxemul)
+#if defined(lgxemul) || defined(bgxemul)
 					else {
 						ZERO_PAGE_VALUE_KSEG1(frame) = 0xaabbccdd;
Index: kernel/arch/ppc32/include/asm.h
===================================================================
--- kernel/arch/ppc32/include/asm.h	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/ppc32/include/asm.h	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -150,4 +150,15 @@
 extern void userspace_asm(uintptr_t uspace_uarg, uintptr_t stack, uintptr_t entry);
 
+/** No I/O port address space on PowerPC. */
+static inline void outb(ioport_t port, uint8_t v)
+{
+}
+
+/** No I/O port address space on PowerPC. */
+static inline uint8_t inb(ioport_t port)
+{
+	return 0;
+}
+
 #endif
 
Index: kernel/arch/ppc32/src/ppc32.c
===================================================================
--- kernel/arch/ppc32/src/ppc32.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/ppc32/src/ppc32.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -168,4 +168,18 @@
 }
 
+/** Construct function pointer
+ *
+ * @param fptr   function pointer structure
+ * @param addr   function address
+ * @param caller calling function address
+ *
+ * @return address of the function pointer
+ *
+ */
+void *arch_construct_function(fncptr_t *fptr, void *addr, void *caller)
+{
+	return addr;
+}
+
 /** @}
  */
Index: kernel/arch/sparc64/_link.ld.in
===================================================================
--- kernel/arch/sparc64/_link.ld.in	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/sparc64/_link.ld.in	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -2,6 +2,6 @@
  *
  *  It is ELF format, but its only section looks like this:
- *  kernel text
- *  kernel data
+ *   kernel text
+ *   kernel data
  *
  */
@@ -12,5 +12,5 @@
 
 SECTIONS {
-	.image VMA: AT (LMA) { 
+	.image VMA: AT (LMA) {
 		ktext_start = .;
 		*(K_TEXT_START)
@@ -22,5 +22,5 @@
 		*(.rodata);
 		*(.rodata.*);
-		*(.data);		/* initialized data */
+		*(.data);                   /* initialized data */
 		*(.sdata);
 		*(.sdata2);
@@ -28,15 +28,15 @@
 		. = ALIGN(8);
 		hardcoded_ktext_size = .;
-		QUAD(ktext_end - ktext_start);	
+		QUAD(ktext_end - ktext_start);
 		hardcoded_kdata_size = .;
 		QUAD(kdata_end - kdata_start);
 		hardcoded_load_address = .;
 		QUAD(VMA);
-		*(.bss);		/* uninitialized static variables */	
-		*(COMMON); 		/* global variables */
-
+		*(.bss);                    /* uninitialized static variables */
+		*(COMMON);                  /* global variables */
+		
 		symbol_table = .;
-                *(symtab.*);            /* Symbol table, must be LAST symbol!*/
-
+		*(symtab.*);                /* Symbol table, must be LAST symbol!*/
+		
 		kdata_end = .;
 	}
@@ -45,4 +45,4 @@
 		*(*);
 	}
-
+	
 }
Index: kernel/arch/sparc64/include/drivers/ns16550.h
===================================================================
--- kernel/arch/sparc64/include/drivers/ns16550.h	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ 	(revision )
@@ -1,42 +1,0 @@
-/*
- * 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.
- */
-
-/** @addtogroup sparc64	
- * @{
- */
-/** @file
- */
-
-#ifndef KERN_sparc64_NS16550_H_
-#define KERN_sparc64_NS16550_H_
-
-
-#endif
-
-/** @}
- */
Index: kernel/arch/sparc64/include/fpu_context.h
===================================================================
--- kernel/arch/sparc64/include/fpu_context.h	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/sparc64/include/fpu_context.h	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -38,5 +38,4 @@
 #include <arch/types.h>
 
-#define ARCH_HAS_FPU
 #define FPU_CONTEXT_ALIGN	8
 
Index: kernel/arch/sparc64/src/sparc64.c
===================================================================
--- kernel/arch/sparc64/src/sparc64.c	(revision 70047478224039b394ba6d1a4ba25ae4fb58ab81)
+++ kernel/arch/sparc64/src/sparc64.c	(revision fcd7053c1b7bca76e2258a6b2b5ce5b3b416f00f)
@@ -162,4 +162,18 @@
 }
 
+/** Construct function pointer
+ *
+ * @param fptr   function pointer structure
+ * @param addr   function address
+ * @param caller calling function address
+ *
+ * @return address of the function pointer
+ *
+ */
+void *arch_construct_function(fncptr_t *fptr, void *addr, void *caller)
+{
+	return addr;
+}
+
 /** @}
  */
