Index: kernel/arch/amd64/include/context.h
===================================================================
--- kernel/arch/amd64/include/context.h	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/amd64/include/context.h	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -38,5 +38,6 @@
 #include <typedefs.h>
 
-/* According to ABI the stack MUST be aligned on 
+/*
+ * According to ABI the stack MUST be aligned on
  * 16-byte boundary. If it is not, the va_arg calling will
  * panic sooner or later
Index: kernel/arch/arm32/include/context.h
===================================================================
--- kernel/arch/arm32/include/context.h	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/arm32/include/context.h	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -27,5 +27,5 @@
  */
 
-/** @addtogroup arm32	
+/** @addtogroup arm32
  * @{
  */
Index: kernel/arch/ia64/include/context.h
===================================================================
--- kernel/arch/ia64/include/context.h	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/ia64/include/context.h	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -27,5 +27,5 @@
  */
 
-/** @addtogroup ia64	
+/** @addtogroup ia64
  * @{
  */
@@ -47,14 +47,14 @@
  * One item is put onto the stack to support get_stack_base().
  */
-#define SP_DELTA	(0 + ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT))
+#define SP_DELTA  (0 + ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT))
 
 /* RSE stack starts at the bottom of memory stack, hence the division by 2. */
-#define context_set(c, _pc, stack, size)								\
-	do {												\
-		(c)->pc = (uintptr_t) _pc;								\
-		(c)->bsp = ((uintptr_t) stack) + ALIGN_UP((size / 2), REGISTER_STACK_ALIGNMENT);	\
-		(c)->ar_pfs &= PFM_MASK; 								\
-		(c)->sp = ((uintptr_t) stack) + ALIGN_UP((size / 2), STACK_ALIGNMENT) - SP_DELTA;	\
-	} while (0);
+#define context_set(c, _pc, stack, size) \
+	do { \
+		(c)->pc = (uintptr_t) _pc; \
+		(c)->bsp = ((uintptr_t) stack) + ALIGN_UP((size / 2), REGISTER_STACK_ALIGNMENT); \
+		(c)->ar_pfs &= PFM_MASK; \
+		(c)->sp = ((uintptr_t) stack) + ALIGN_UP((size / 2), STACK_ALIGNMENT) - SP_DELTA; \
+	} while (0)
 
 /*
Index: kernel/arch/mips32/include/context.h
===================================================================
--- kernel/arch/mips32/include/context.h	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/mips32/include/context.h	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -42,5 +42,5 @@
  * Put one item onto the stack to support get_stack_base() and align it up.
  */
-#define SP_DELTA  (0 + ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT))
+#define SP_DELTA  (ABI_STACK_FRAME + ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT))
 
 #ifndef __ASM__
Index: kernel/arch/mips32/include/stack.h
===================================================================
--- kernel/arch/mips32/include/stack.h	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/mips32/include/stack.h	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -27,5 +27,5 @@
  */
 
-/** @addtogroup mips32	
+/** @addtogroup mips32
  * @{
  */
@@ -36,6 +36,7 @@
 #define KERN_mips32_STACK_H_
 
-#define STACK_ITEM_SIZE		4
-#define STACK_ALIGNMENT		8
+#define STACK_ITEM_SIZE  4
+#define STACK_ALIGNMENT  8
+#define ABI_STACK_FRAME  32
 
 #endif
Index: kernel/arch/mips32/src/start.S
===================================================================
--- kernel/arch/mips32/src/start.S	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/mips32/src/start.S	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -241,5 +241,5 @@
 	/* $a1 contains physical address of bootinfo_t */
 	jal arch_pre_main
-	nop
+	addiu $sp, -ABI_STACK_FRAME
 	
 	j main_bsp
@@ -281,6 +281,8 @@
 	
 	move $a1, $sp
+	move $a0, $k0
 	jal exc_dispatch     /* exc_dispatch(excno, register_space) */
-	move $a0, $k0
+	addiu $sp, -ABI_STACK_FRAME
+	addiu $sp, ABI_STACK_FRAME
 	
 	REGISTERS_LOAD $sp
@@ -323,4 +325,5 @@
 	sw $t0, ISTATE_OFFSET_T0($sp)  /* save the 5th argument on the stack */
 	sw $t1, ISTATE_OFFSET_T1($sp)  /* save the 6th argument on the stack */
+	
 	jal syscall_handler
 	sw $v0, ISTATE_OFFSET_V0($sp)  /* save the syscall number on the stack */
@@ -357,6 +360,8 @@
 	move $sp, $k0
 	
+	move $a0, $sp
 	jal tlb_refill
-	move $a0, $sp 
+	addiu $sp, -ABI_STACK_FRAME
+	addiu $sp, ABI_STACK_FRAME
 	
 	REGISTERS_LOAD $sp
@@ -366,11 +371,13 @@
 cache_error_handler:
 	KERNEL_STACK_TO_K0
-	sub $k0, ISTATE_SOFT_SIZE 
+	sub $k0, ISTATE_SOFT_SIZE
 	REGISTERS_STORE_AND_EXC_RESET $k0
 	sw $sp, ISTATE_OFFSET_SP($k0)
 	move $sp, $k0
 	
+	move $a0, $sp
 	jal cache_error
-	move $a0, $sp
+	addiu $sp, -ABI_STACK_FRAME
+	addiu $sp, ABI_STACK_FRAME
 	
 	REGISTERS_LOAD $sp
Index: kernel/arch/mips64/include/context.h
===================================================================
--- kernel/arch/mips64/include/context.h	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/mips64/include/context.h	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -42,5 +42,5 @@
  * Put one item onto the stack to support get_stack_base() and align it up.
  */
-#define SP_DELTA  (0 + ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT))
+#define SP_DELTA  (ABI_STACK_FRAME + ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT))
 
 #ifndef __ASM__
Index: kernel/arch/mips64/include/stack.h
===================================================================
--- kernel/arch/mips64/include/stack.h	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/mips64/include/stack.h	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -38,4 +38,5 @@
 #define STACK_ITEM_SIZE  8
 #define STACK_ALIGNMENT  8
+#define ABI_STACK_FRAME  64
 
 #endif
Index: kernel/arch/mips64/src/start.S
===================================================================
--- kernel/arch/mips64/src/start.S	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/mips64/src/start.S	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -241,5 +241,5 @@
 	/* $a1 contains physical address of bootinfo_t */
 	jal arch_pre_main
-	nop
+	addiu $sp, -ABI_STACK_FRAME
 	
 	j main_bsp
@@ -281,6 +281,8 @@
 	
 	move $a1, $sp
+	move $a0, $k0
 	jal exc_dispatch     /* exc_dispatch(excno, register_space) */
-	move $a0, $k0
+	addiu $sp, -ABI_STACK_FRAME
+	addiu $sp, ABI_STACK_FRAME
 	
 	REGISTERS_LOAD $sp
@@ -323,4 +325,5 @@
 	sw $t0, ISTATE_OFFSET_T0($sp)  /* save the 5th argument on the stack */
 	sw $t1, ISTATE_OFFSET_T1($sp)  /* save the 6th argument on the stack */
+	
 	jal syscall_handler
 	sw $v0, ISTATE_OFFSET_V0($sp)  /* save the syscall number on the stack */
@@ -357,6 +360,8 @@
 	move $sp, $k0
 	
+	move $a0, $sp
 	jal tlb_refill
-	move $a0, $sp 
+	addiu $sp, -ABI_STACK_FRAME
+	addiu $sp, ABI_STACK_FRAME
 	
 	REGISTERS_LOAD $sp
@@ -366,11 +371,13 @@
 cache_error_handler:
 	KERNEL_STACK_TO_K0
-	sub $k0, ISTATE_SOFT_SIZE 
+	sub $k0, ISTATE_SOFT_SIZE
 	REGISTERS_STORE_AND_EXC_RESET $k0
 	sw $sp, ISTATE_OFFSET_SP($k0)
 	move $sp, $k0
 	
+	move $a0, $sp
 	jal cache_error
-	move $a0, $sp
+	addiu $sp, -ABI_STACK_FRAME
+	addiu $sp, ABI_STACK_FRAME
 	
 	REGISTERS_LOAD $sp
Index: kernel/arch/ppc32/src/ppc32.c
===================================================================
--- kernel/arch/ppc32/src/ppc32.c	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/ppc32/src/ppc32.c	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -173,4 +173,6 @@
 		ofw_tree_walk_by_device_type("display", display_register, NULL);
 #endif
+		/* Map OFW information into sysinfo */
+		ofw_sysinfo_map();
 		
 		/* Initialize IRQ routing */
Index: kernel/arch/sparc64/include/context.h
===================================================================
--- kernel/arch/sparc64/include/context.h	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/sparc64/include/context.h	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -27,5 +27,5 @@
  */
 
-/** @addtogroup sparc64	
+/** @addtogroup sparc64
  * @{
  */
@@ -40,12 +40,13 @@
 #include <align.h>
 
-#define SP_DELTA	(STACK_WINDOW_SAVE_AREA_SIZE + STACK_ARG_SAVE_AREA_SIZE)
+#define SP_DELTA  (STACK_WINDOW_SAVE_AREA_SIZE + STACK_ARG_SAVE_AREA_SIZE)
 
-#define context_set(c, _pc, stack, size)			\
-	(c)->pc = ((uintptr_t) _pc) - 8;			\
-	(c)->sp = ((uintptr_t) stack) + ALIGN_UP((size), 	\
-		STACK_ALIGNMENT) - (STACK_BIAS + SP_DELTA);	\
-	(c)->fp = -STACK_BIAS
-	
+#define context_set(c, _pc, stack, size) \
+	do { \
+		(c)->pc = ((uintptr_t) _pc) - 8; \
+		(c)->sp = ((uintptr_t) stack) + ALIGN_UP((size), \
+		    STACK_ALIGNMENT) - (STACK_BIAS + SP_DELTA); \
+		(c)->fp = -STACK_BIAS; \
+	} while (0)
 
 /*
Index: kernel/arch/sparc64/src/sun4u/sparc64.c
===================================================================
--- kernel/arch/sparc64/src/sun4u/sparc64.c	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/sparc64/src/sun4u/sparc64.c	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -94,4 +94,7 @@
 {
 	if (config.cpu_active == 1) {
+		/* Map OFW information into sysinfo */
+		ofw_sysinfo_map();
+		
 		/*
 		 * We have 2^11 different interrupt vectors.
Index: kernel/arch/sparc64/src/sun4v/sparc64.c
===================================================================
--- kernel/arch/sparc64/src/sun4v/sparc64.c	(revision 43cd4995323e5ad59552104e19f2a501c05c51d4)
+++ kernel/arch/sparc64/src/sun4v/sparc64.c	(revision d69c69850567694d2eb915c0e3fa9aa823366e18)
@@ -92,4 +92,7 @@
 {
 	if (config.cpu_active == 1) {
+		/* Map OFW information into sysinfo */
+		ofw_sysinfo_map();
+		
 		/*
 		 * We have 2^11 different interrupt vectors.
