Index: kernel/arch/sparc64/include/trap/regwin.h
===================================================================
--- kernel/arch/sparc64/include/trap/regwin.h	(revision 3b8fe85c2724c9334d223f7746537735cb1b95e0)
+++ kernel/arch/sparc64/include/trap/regwin.h	(revision c61d34be34099f5ca3cf83937a9935c4e09a9773)
@@ -40,4 +40,5 @@
 #include <arch/stack.h>
 #include <arch/arch.h>
+#include <align.h>
 
 #define TT_CLEAN_WINDOW			0x24
@@ -72,4 +73,9 @@
 #define I6_OFFSET	112
 #define I7_OFFSET	120
+
+/* Uspace Window Buffer constants. */
+#define UWB_SIZE	((NWINDOWS - 1) * STACK_WINDOW_SAVE_AREA_SIZE)
+#define UWB_ALIGNMENT	1024
+#define UWB_ASIZE	ALIGN_UP(UWB_SIZE, UWB_ALIGNMENT)
 
 #ifdef __ASM__
Index: kernel/arch/sparc64/src/proc/thread.c
===================================================================
--- kernel/arch/sparc64/src/proc/thread.c	(revision 3b8fe85c2724c9334d223f7746537735cb1b95e0)
+++ kernel/arch/sparc64/src/proc/thread.c	(revision c61d34be34099f5ca3cf83937a9935c4e09a9773)
@@ -35,7 +35,6 @@
 #include <proc/thread.h>
 #include <arch/proc/thread.h>
-#include <mm/frame.h>
-#include <mm/page.h>
-#include <arch/mm/page.h>
+#include <mm/slab.h>
+#include <arch/trap/regwin.h>
 #include <align.h>
 
@@ -51,10 +50,10 @@
 {
 	if (t->arch.uspace_window_buffer) {
+		uintptr_t uw_buf = (uintptr_t) t->arch.uspace_window_buffer;
 		/*
 		 * Mind the possible alignment of the userspace window buffer
 		 * belonging to a killed thread.
 		 */
-		frame_free(KA2PA(ALIGN_DOWN((uintptr_t)
-		    t->arch.uspace_window_buffer, PAGE_SIZE)));
+		free((uint8_t *) ALIGN_DOWN(uw_buf, UWB_ALIGNMENT));
 	}
 }
@@ -68,5 +67,5 @@
 		 * returned from the slab allocator doesn't have any.
 		 */
-		t->arch.uspace_window_buffer = frame_alloc(ONE_FRAME, FRAME_KA);
+		t->arch.uspace_window_buffer = malloc(UWB_ASIZE, 0);
 	} else {
 		uintptr_t uw_buf = (uintptr_t) t->arch.uspace_window_buffer;
@@ -77,5 +76,5 @@
 		 */
 		t->arch.uspace_window_buffer = (uint8_t *) ALIGN_DOWN(uw_buf,
-		    PAGE_SIZE);
+		    UWB_ASIZE);
 	}
 }
Index: kernel/arch/sparc64/src/trap/trap_table.S
===================================================================
--- kernel/arch/sparc64/src/trap/trap_table.S	(revision 3b8fe85c2724c9334d223f7746537735cb1b95e0)
+++ kernel/arch/sparc64/src/trap/trap_table.S	(revision c61d34be34099f5ca3cf83937a9935c4e09a9773)
@@ -749,7 +749,6 @@
 	 */
 	clr %g4
-	set PAGE_SIZE - 1, %g5
-0:	andcc %g7, %g5, %g0			! PAGE_SIZE alignment check
-	bz 0f					! %g7 is page-aligned, no more windows to refill
+0:	andcc %g7, UWB_ALIGNMENT - 1, %g0	! alignment check
+	bz 0f					! %g7 is UWB_ALIGNMENT-aligned, no more windows to refill
 	nop
 
