Index: uspace/lib/c/arch/sparc32/include/libarch/stack.h
===================================================================
--- uspace/lib/c/arch/sparc32/include/libarch/stack.h	(revision a7372ccfb3f35719937a70cfc0945a30d9a889a4)
+++ uspace/lib/c/arch/sparc32/include/libarch/stack.h	(revision 3bc42bd79fc957f086f650e483c4d13b38e39adf)
@@ -33,8 +33,8 @@
  */
 
-#ifndef LIBC_sparc64_STACK_H_
-#define LIBC_sparc64_STACK_H_
+#ifndef LIBC_sparc32_STACK_H_
+#define LIBC_sparc32_STACK_H_
 
-#define STACK_ITEM_SIZE			8
+#define STACK_ITEM_SIZE			4
 
 /** According to SPARC Compliance Definition, every stack frame is 16-byte aligned. */
Index: uspace/lib/c/arch/sparc32/include/libarch/stackarg.h
===================================================================
--- uspace/lib/c/arch/sparc32/include/libarch/stackarg.h	(revision a7372ccfb3f35719937a70cfc0945a30d9a889a4)
+++ uspace/lib/c/arch/sparc32/include/libarch/stackarg.h	(revision 3bc42bd79fc957f086f650e483c4d13b38e39adf)
@@ -27,5 +27,5 @@
  */
 
-/** @addtogroup libcsparc64	
+/** @addtogroup libcsparc32
  * @{
  */
@@ -33,6 +33,6 @@
  */
 
-#ifndef LIBC_sparc64_STACKARG_H_
-#define LIBC_sparc64_STACKARG_H_
+#ifndef LIBC_sparc32_STACKARG_H_
+#define LIBC_sparc32_STACKARG_H_
 
 #endif
Index: uspace/lib/c/arch/sparc32/include/libarch/thread.h
===================================================================
--- uspace/lib/c/arch/sparc32/include/libarch/thread.h	(revision a7372ccfb3f35719937a70cfc0945a30d9a889a4)
+++ uspace/lib/c/arch/sparc32/include/libarch/thread.h	(revision 3bc42bd79fc957f086f650e483c4d13b38e39adf)
@@ -28,10 +28,10 @@
  */
 
-/** @addtogroup libcsparc64
+/** @addtogroup libcsparc32
  * @{
  */
 
-#ifndef LIBC_sparc64_THREAD_H_
-#define LIBC_sparc64_THREAD_H_
+#ifndef LIBC_sparc32_THREAD_H_
+#define LIBC_sparc32_THREAD_H_
 
 #endif
Index: uspace/lib/c/arch/sparc32/src/entry.s
===================================================================
--- uspace/lib/c/arch/sparc32/src/entry.s	(revision a7372ccfb3f35719937a70cfc0945a30d9a889a4)
+++ uspace/lib/c/arch/sparc32/src/entry.s	(revision 3bc42bd79fc957f086f650e483c4d13b38e39adf)
@@ -44,4 +44,14 @@
 	save %sp, -176, %sp
 # XXX	flushw
+        mov 7, %g1
+1:	subcc %g1, 1, %g1
+ 	bg 1b
+        save %sp, -64, %sp
+
+	mov 7, %g1
+1:	subcc %g1, 1, %g1
+ 	bg 1b
+
+# XXX end flush
 #	add %g0, -0x7ff, %fp
 	set 0x80000000, %fp
Index: uspace/lib/c/arch/sparc32/src/fibril.S
===================================================================
--- uspace/lib/c/arch/sparc32/src/fibril.S	(revision a7372ccfb3f35719937a70cfc0945a30d9a889a4)
+++ uspace/lib/c/arch/sparc32/src/fibril.S	(revision 3bc42bd79fc957f086f650e483c4d13b38e39adf)
@@ -31,4 +31,5 @@
 .text
 
+.global flush_windows
 .global context_save
 .global context_restore
@@ -39,4 +40,14 @@
 	# should a thread switch occur.
 	#
+        mov 7, %g1
+1:	subcc %g1, 1, %g1
+ 	bg 1b
+        save %sp, -64, %sp
+
+	mov 7, %g1
+1:	subcc %g1, 1, %g1
+ 	bg 1b
+        restore
+
 	CONTEXT_SAVE_ARCH_CORE %o0
 	retl
@@ -52,4 +63,15 @@
 # XXX
 #	flushw
+#        ta 0x4f
+#        nop
+        mov 7, %g1
+1:	subcc %g1, 1, %g1
+ 	bg 1b
+        save %sp, -64, %sp
+
+	mov 7, %g1
+1:	subcc %g1, 1, %g1
+ 	bg 1b
+        restore
 	
 	CONTEXT_RESTORE_ARCH_CORE %o0
Index: uspace/lib/c/arch/sparc32/src/stacktrace.c
===================================================================
--- uspace/lib/c/arch/sparc32/src/stacktrace.c	(revision a7372ccfb3f35719937a70cfc0945a30d9a889a4)
+++ uspace/lib/c/arch/sparc32/src/stacktrace.c	(revision 3bc42bd79fc957f086f650e483c4d13b38e39adf)
@@ -2,4 +2,5 @@
  * Copyright (c) 2010 Jakub Jermar
  * Copyright (c) 2010 Jiri Svoboda
+ * Copyright (c) 2013 Jakub Klama
  * All rights reserved.
  *
@@ -28,5 +29,5 @@
  */
 
-/** @addtogroup sparc64
+/** @addtogroup sparc32
  * @{
  */
@@ -41,6 +42,6 @@
 #include <stacktrace.h>
 
-#define FRAME_OFFSET_FP_PREV	(14 * 8)
-#define FRAME_OFFSET_RA		(15 * 8)
+#define FRAME_OFFSET_FP_PREV	(14 * 4)
+#define FRAME_OFFSET_RA		(15 * 4)
 
 bool stacktrace_fp_valid(stacktrace_t *st, uintptr_t fp)
Index: uspace/lib/c/arch/sparc32/src/stacktrace_asm.S
===================================================================
--- uspace/lib/c/arch/sparc32/src/stacktrace_asm.S	(revision a7372ccfb3f35719937a70cfc0945a30d9a889a4)
+++ uspace/lib/c/arch/sparc32/src/stacktrace_asm.S	(revision 3bc42bd79fc957f086f650e483c4d13b38e39adf)
@@ -38,5 +38,13 @@
 	save %sp, -(STACK_WINDOW_SAVE_AREA_SIZE+STACK_ARG_SAVE_AREA_SIZE), %sp
 	# Flush all other windows to memory so that we can read their contents.
-# XXX	flushw
+        mov 7, %g1
+1:	subcc %g1, 1, %g1
+ 	bg 1b
+        save %sp, -64, %sp
+
+	mov 7, %g1
+1:	subcc %g1, 1, %g1
+ 	bg 1b
+
 	ret
 	restore
Index: uspace/lib/c/arch/sparc32/src/thread_entry.s
===================================================================
--- uspace/lib/c/arch/sparc32/src/thread_entry.s	(revision a7372ccfb3f35719937a70cfc0945a30d9a889a4)
+++ uspace/lib/c/arch/sparc32/src/thread_entry.s	(revision 3bc42bd79fc957f086f650e483c4d13b38e39adf)
@@ -40,5 +40,14 @@
 	save %sp, -176, %sp
 # XXX	flushw
-	add %g0, -0x7ff, %fp
+        mov 7, %g1
+1:	subcc %g1, 1, %g1
+ 	bg 1b
+        save %sp, -64, %sp
+
+	mov 7, %g1
+1:	subcc %g1, 1, %g1
+ 	bg 1b
+# XXX end flushw
+	set 0x80000000, %fp
 
 	#
