Index: kernel/arch/sparc64/include/trap/trap_table.h
===================================================================
--- kernel/arch/sparc64/include/trap/trap_table.h	(revision 64c2ad54353df91f481dd1d3d75da41bb50d72ea)
+++ kernel/arch/sparc64/include/trap/trap_table.h	(revision 7ba7c6d0898977b10d41e9c2ac96eda606bd8e2f)
@@ -85,5 +85,5 @@
 #define SAVED_TPC	-(2*8)
 #define SAVED_TNPC	-(3*8)		/* <-- istate_t begins here */
-/* alignment gap */
+#define SAVED_Y		-(4*8)
 #define SAVED_I0	-(5*8)
 #define SAVED_I1	-(6*8)
Index: kernel/arch/sparc64/src/dummy.s
===================================================================
--- kernel/arch/sparc64/src/dummy.s	(revision 64c2ad54353df91f481dd1d3d75da41bb50d72ea)
+++ kernel/arch/sparc64/src/dummy.s	(revision 7ba7c6d0898977b10d41e9c2ac96eda606bd8e2f)
@@ -34,6 +34,6 @@
 .global dummy
 
-cpu_sleep:
-sys_tls_set:
+cpu_sleep:		! not supported by architecture
+sys_tls_set:		! not needed on architecture
 
 dummy:
Index: kernel/arch/sparc64/src/trap/trap_table.S
===================================================================
--- kernel/arch/sparc64/src/trap/trap_table.S	(revision 64c2ad54353df91f481dd1d3d75da41bb50d72ea)
+++ kernel/arch/sparc64/src/trap/trap_table.S	(revision 7ba7c6d0898977b10d41e9c2ac96eda606bd8e2f)
@@ -747,4 +747,14 @@
 	stx %g2, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TPC]
 	stx %g3, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TNPC]
+
+	/*
+	 * Save the Y register.
+	 * This register is deprecated according to SPARC V9 specification
+	 * and is only present for backward compatibility with previous
+	 * versions of the SPARC architecture.
+	 * Surprisingly, gcc makes use of this register without a notice.
+	 */
+	rd %y, %g4
+	stx %g4, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_Y]
 	
 	wrpr %g0, 0, %tl
@@ -776,4 +786,10 @@
 	ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TPC], %g2
 	ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TNPC], %g3
+
+	/*
+	 * Restore Y.
+	 */
+	ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_Y], %g4
+	wr %g4, %y
 
 	/*
Index: kernel/doc/arch/sparc64
===================================================================
--- kernel/doc/arch/sparc64	(revision 64c2ad54353df91f481dd1d3d75da41bb50d72ea)
+++ kernel/doc/arch/sparc64	(revision 7ba7c6d0898977b10d41e9c2ac96eda606bd8e2f)
@@ -17,5 +17,5 @@
 
 SIMULATORS
-	o simics 2.2.19, simics 3.0.17
+	o simics 2.2.19, simics 3.0.17, simics 3.0.21
 						
 TOOLCHAIN REQUIREMENTS
Index: kernel/generic/src/mm/as.c
===================================================================
--- kernel/generic/src/mm/as.c	(revision 64c2ad54353df91f481dd1d3d75da41bb50d72ea)
+++ kernel/generic/src/mm/as.c	(revision 7ba7c6d0898977b10d41e9c2ac96eda606bd8e2f)
@@ -1593,12 +1593,9 @@
 	link_t *cur;
 	for (cur = as->as_area_btree.leaf_head.next; cur != &as->as_area_btree.leaf_head; cur = cur->next) {
-		as_area_t *area;
-		btree_node_t *node;
-		
-		node = list_get_instance(cur, btree_node_t, leaf_link);
+		btree_node_t *node = list_get_instance(cur, btree_node_t, leaf_link);
 		
 		int i;
 		for (i = 0; i < node->keys; i++) {
-			area = node->value[i];
+			as_area_t *area = node->value[i];
 		
 			mutex_lock(&area->lock);
