Index: arch/sparc64/Makefile.inc
===================================================================
--- arch/sparc64/Makefile.inc	(revision 10c071e7eba787c7e29f0c9d920979d81ea32e19)
+++ arch/sparc64/Makefile.inc	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
@@ -57,4 +57,4 @@
 	arch/$(ARCH)/src/sparc64.c \
 	arch/$(ARCH)/src/start.S \
-	arch/$(ARCH)/src/trap_table.S \
-	arch/$(ARCH)/src/trap.c
+	arch/$(ARCH)/src/trap/trap_table.S \
+	arch/$(ARCH)/src/trap/trap.c
Index: arch/sparc64/include/trap.h
===================================================================
--- arch/sparc64/include/trap.h	(revision 10c071e7eba787c7e29f0c9d920979d81ea32e19)
+++ 	(revision )
@@ -1,44 +1,0 @@
-/*
- * Copyright (C) 2005 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.
- */
-
-#ifndef __sparc64_TRAP_H__
-#define __sparc64_TRAP_H__
-
-#include <arch/trap_table.h>
-#include <arch/asm.h>
-
-/** Switch to in-kernel trap table. */
-static inline void trap_switch_trap_table(void)
-{
-	/* Point TBA to kernel copy of OFW's trap table. */
-	tba_write((__u64) trap_table);
-}
-
-extern void trap_init(void);
-
-#endif
Index: arch/sparc64/include/trap/regwin.h
===================================================================
--- arch/sparc64/include/trap/regwin.h	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
+++ arch/sparc64/include/trap/regwin.h	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2005 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.
+ */
+
+/**
+ * This file contains register window trap handlers.
+ */
+
+#ifndef __sparc64_REGWIN_H__
+#define __sparc64_REGWIN_H__
+
+#include <arch/stack.h>
+
+#define TT_CLEAN_WINDOW			0x24
+#define TT_SPILL_0_NORMAL		0x80
+#define TT_FILL_0_NORMAL		0xc0
+
+#define REGWIN_HANDLER_SIZE		128
+
+#define CLEAN_WINDOW_HANDLER_SIZE	REGWIN_HANDLER_SIZE
+#define SPILL_HANDLER_SIZE		REGWIN_HANDLER_SIZE
+#define FILL_HANDLER_SIZE		REGWIN_HANDLER_SIZE
+
+/** Window Save Area offsets. */
+#define L0_OFFSET	0
+#define L1_OFFSET	8
+#define L2_OFFSET	16
+#define L3_OFFSET	24
+#define L4_OFFSET	32
+#define L5_OFFSET	40
+#define L6_OFFSET	48
+#define L7_OFFSET	56
+#define I0_OFFSET	64
+#define I1_OFFSET	72
+#define I2_OFFSET	80
+#define I3_OFFSET	88
+#define I4_OFFSET	96
+#define I5_OFFSET	104
+#define I6_OFFSET	112
+#define I7_OFFSET	120
+
+.macro SPILL_NORMAL_HANDLER
+	stx %l0, [%sp + STACK_BIAS + L0_OFFSET]	
+	stx %l1, [%sp + STACK_BIAS + L1_OFFSET]
+	stx %l2, [%sp + STACK_BIAS + L2_OFFSET]
+	stx %l3, [%sp + STACK_BIAS + L3_OFFSET]
+	stx %l4, [%sp + STACK_BIAS + L4_OFFSET]
+	stx %l5, [%sp + STACK_BIAS + L5_OFFSET]
+	stx %l6, [%sp + STACK_BIAS + L6_OFFSET]
+	stx %l7, [%sp + STACK_BIAS + L7_OFFSET]
+	stx %i0, [%sp + STACK_BIAS + I0_OFFSET]
+	stx %i1, [%sp + STACK_BIAS + I1_OFFSET]
+	stx %i2, [%sp + STACK_BIAS + I2_OFFSET]
+	stx %i3, [%sp + STACK_BIAS + I3_OFFSET]
+	stx %i4, [%sp + STACK_BIAS + I4_OFFSET]
+	stx %i5, [%sp + STACK_BIAS + I5_OFFSET]
+	stx %i6, [%sp + STACK_BIAS + I6_OFFSET]
+	stx %i7, [%sp + STACK_BIAS + I7_OFFSET]
+	saved
+	retry
+.endm
+
+.macro FILL_NORMAL_HANDLER
+	ldx [%sp + STACK_BIAS + L0_OFFSET], %l0
+	ldx [%sp + STACK_BIAS + L1_OFFSET], %l1
+	ldx [%sp + STACK_BIAS + L2_OFFSET], %l2
+	ldx [%sp + STACK_BIAS + L3_OFFSET], %l3
+	ldx [%sp + STACK_BIAS + L4_OFFSET], %l4
+	ldx [%sp + STACK_BIAS + L5_OFFSET], %l5
+	ldx [%sp + STACK_BIAS + L6_OFFSET], %l6
+	ldx [%sp + STACK_BIAS + L7_OFFSET], %l7
+	ldx [%sp + STACK_BIAS + I0_OFFSET], %i0
+	ldx [%sp + STACK_BIAS + I1_OFFSET], %i1
+	ldx [%sp + STACK_BIAS + I2_OFFSET], %i2
+	ldx [%sp + STACK_BIAS + I3_OFFSET], %i3
+	ldx [%sp + STACK_BIAS + I4_OFFSET], %i4
+	ldx [%sp + STACK_BIAS + I5_OFFSET], %i5
+	ldx [%sp + STACK_BIAS + I6_OFFSET], %i6
+	ldx [%sp + STACK_BIAS + I7_OFFSET], %i7
+	restored
+	retry
+.endm
+
+.macro CLEAN_WINDOW_HANDLER
+	rdpr %cleanwin, %l0
+	add %l0, 1, %l0
+	wrpr %l0, 0, %cleanwin
+	mov %r0, %l0
+	mov %r0, %l1
+	mov %r0, %l2
+	mov %r0, %l3
+	mov %r0, %l4
+	mov %r0, %l5
+	mov %r0, %l6
+	mov %r0, %l7
+	mov %r0, %i0
+	mov %r0, %i1
+	mov %r0, %i2
+	mov %r0, %i3
+	mov %r0, %i4
+	mov %r0, %i5
+	retry
+.endm
+
+#endif
Index: arch/sparc64/include/trap/trap.h
===================================================================
--- arch/sparc64/include/trap/trap.h	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
+++ arch/sparc64/include/trap/trap.h	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2005 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.
+ */
+
+#ifndef __sparc64_TRAP_H__
+#define __sparc64_TRAP_H__
+
+#include <arch/trap/trap_table.h>
+#include <arch/asm.h>
+
+/** Switch to in-kernel trap table. */
+static inline void trap_switch_trap_table(void)
+{
+	/* Point TBA to kernel copy of OFW's trap table. */
+	tba_write((__u64) trap_table);
+}
+
+extern void trap_init(void);
+
+#endif
Index: arch/sparc64/include/trap/trap_table.h
===================================================================
--- arch/sparc64/include/trap/trap_table.h	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
+++ arch/sparc64/include/trap/trap_table.h	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2005 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.
+ */
+
+#ifndef __sparc64_TRAP_TABLE_H__
+#define __sparc64_TRAP_TABLE_H__
+
+#ifndef __ASM__
+#include <arch/types.h>
+#endif /* __ASM__ */
+
+#define TRAP_TABLE_ENTRY_COUNT	1024
+#define TRAP_TABLE_ENTRY_SIZE	32
+#define TRAP_TABLE_SIZE		(TRAP_TABLE_ENTRY_COUNT*TRAP_TABLE_ENTRY_SIZE)
+
+#ifndef __ASM__
+struct trap_table_entry {
+	__u8 octets[TRAP_TABLE_ENTRY_SIZE];
+} __attribute__ ((packed));
+
+typedef struct trap_table_entry trap_table_entry_t;
+
+extern trap_table_entry_t trap_table[TRAP_TABLE_ENTRY_COUNT];
+extern trap_table_entry_t trap_table_kernel[TRAP_TABLE_ENTRY_COUNT];
+#endif /* __ASM__ */
+
+#endif
Index: arch/sparc64/include/trap_table.h
===================================================================
--- arch/sparc64/include/trap_table.h	(revision 10c071e7eba787c7e29f0c9d920979d81ea32e19)
+++ 	(revision )
@@ -1,51 +1,0 @@
-/*
- * Copyright (C) 2005 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.
- */
-
-#ifndef __sparc64_TRAP_TABLE_H__
-#define __sparc64_TRAP_TABLE_H__
-
-#ifndef __ASM__
-#include <arch/types.h>
-#endif /* __ASM__ */
-
-#define TRAP_TABLE_ENTRY_COUNT	1024
-#define TRAP_TABLE_ENTRY_SIZE	32
-#define TRAP_TABLE_SIZE		(TRAP_TABLE_ENTRY_COUNT*TRAP_TABLE_ENTRY_SIZE)
-
-#ifndef __ASM__
-struct trap_table_entry {
-	__u8 octets[TRAP_TABLE_ENTRY_SIZE];
-} __attribute__ ((packed));
-
-typedef struct trap_table_entry trap_table_entry_t;
-
-extern trap_table_entry_t trap_table[TRAP_TABLE_ENTRY_COUNT];
-extern trap_table_entry_t trap_table_kernel[TRAP_TABLE_ENTRY_COUNT];
-#endif /* __ASM__ */
-
-#endif
Index: arch/sparc64/src/mm/tlb.c
===================================================================
--- arch/sparc64/src/mm/tlb.c	(revision 10c071e7eba787c7e29f0c9d920979d81ea32e19)
+++ arch/sparc64/src/mm/tlb.c	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
@@ -36,5 +36,5 @@
 #include <typedefs.h>
 #include <config.h>
-#include <arch/trap.h>
+#include <arch/trap/trap.h>
 
 /** Initialize ITLB and DTLB.
Index: arch/sparc64/src/sparc64.c
===================================================================
--- arch/sparc64/src/sparc64.c	(revision 10c071e7eba787c7e29f0c9d920979d81ea32e19)
+++ arch/sparc64/src/sparc64.c	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
@@ -29,6 +29,5 @@
 #include <arch.h>
 #include <print.h>
-#include <arch/trap.h>
-#include <arch/trap_table.h>
+#include <arch/trap/trap.h>
 #include <arch/console.h>
 
Index: arch/sparc64/src/trap.c
===================================================================
--- arch/sparc64/src/trap.c	(revision 10c071e7eba787c7e29f0c9d920979d81ea32e19)
+++ 	(revision )
@@ -1,41 +1,0 @@
-/*
- * Copyright (C) 2005 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.
- */
-
-#include <arch/trap.h>
-#include <arch/trap_table.h>
-#include <arch/asm.h>
-#include <memstr.h>
-
-/** Initialize trap table. */
-void trap_init(void)
-{
-	/*
-	 * Copy OFW's trap table into kernel.
-	 */
-	memcpy((void *) trap_table, (void *) tba_read(), TRAP_TABLE_SIZE);
-}
Index: arch/sparc64/src/trap/trap.c
===================================================================
--- arch/sparc64/src/trap/trap.c	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
+++ arch/sparc64/src/trap/trap.c	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2005 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.
+ */
+
+#include <arch/trap/trap.h>
+#include <arch/trap/trap_table.h>
+#include <arch/asm.h>
+#include <memstr.h>
+
+/** Initialize trap table. */
+void trap_init(void)
+{
+	/*
+	 * Copy OFW's trap table into kernel.
+	 */
+	memcpy((void *) trap_table, (void *) tba_read(), TRAP_TABLE_SIZE);
+}
Index: arch/sparc64/src/trap/trap_table.S
===================================================================
--- arch/sparc64/src/trap/trap_table.S	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
+++ arch/sparc64/src/trap/trap_table.S	(revision 49b6d32c4bf731f668a2569fb78160da0299283f)
@@ -0,0 +1,106 @@
+#
+# Copyright (C) 2005 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.
+#
+
+/**
+ * This file contains two trap tables. First, trap_table, is the one
+ * to wich kernel copies OFW's own trap table and patches it with
+ * kernel-provided handlers from the second trap table, trap_table_kernel.
+ */
+ 
+.text
+
+#include <arch/trap/trap_table.h>
+#include <arch/trap/regwin.h>
+
+#define TABLE_SIZE	TRAP_TABLE_SIZE
+#define ENTRY_SIZE	TRAP_TABLE_ENTRY_SIZE
+
+
+/*
+ * Trap table for copy of OFW's own trap table.
+ */
+.align TABLE_SIZE
+.global trap_table
+trap_table:
+	.space TABLE_SIZE, 0
+
+
+/*
+ * Kernel-provided trap handlers.
+ */
+.global trap_table_kernel
+trap_table_kernel:
+
+/* TT = 0x24, TL = 0 *, clean_window handler */
+.org trap_table_kernel + TT_CLEAN_WINDOW*ENTRY_SIZE
+.global clean_window_handler
+clean_window_handler:
+	CLEAN_WINDOW_HANDLER
+
+/* TT = 0x80, TL = 0 *, spill_0_normal handler */
+.org trap_table_kernel + TT_SPILL_0_NORMAL*ENTRY_SIZE
+.global spill_0_normal
+spill_0_normal:
+	SPILL_NORMAL_HANDLER
+
+/* TT = 0xc0, TL = 0 *, fill_0_normal handler */
+.org trap_table_kernel + TT_FILL_0_NORMAL*ENTRY_SIZE
+fill_0_normal:
+	FILL_NORMAL_HANDLER
+
+/*
+ * Software traps for TL=0.
+ */
+.org trap_table_kernel + 256*ENTRY_SIZE
+tl_0_software_traps:
+
+/* Reserved area. */
+.org trap_table_kernel + 384*ENTRY_SIZE
+.space 128*ENTRY_SIZE, 0
+
+/*
+ * Hardware interrupts for TL>0.
+ */
+.org trap_table_kernel + 512*ENTRY_SIZE
+tl_non_0_hardware_traps:
+
+/*
+ * Register window spill/fill traps for TL>0.
+ */
+.org trap_table_kernel + 640*ENTRY_SIZE
+tl_non_0_regwin_traps:
+
+/*
+ * Software traps for TL>0.
+ */
+.org trap_table_kernel + 768*ENTRY_SIZE
+tl_non_0_software_traps:
+
+/* Reserved area. */
+.org trap_table_kernel + 896*ENTRY_SIZE
+.space 128*ENTRY_SIZE, 0
Index: arch/sparc64/src/trap_table.S
===================================================================
--- arch/sparc64/src/trap_table.S	(revision 10c071e7eba787c7e29f0c9d920979d81ea32e19)
+++ 	(revision )
@@ -1,100 +1,0 @@
-#
-# Copyright (C) 2005 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.
-#
-
-/**
- * This file contains two trap tables. First, trap_table, is the one
- * to wich kernel copies OFW's own trap table and patches it with
- * kernel-provided handlers from the second trap table, trap_table_kernel.
- */
- 
-.text
-
-#include <arch/trap_table.h>
-
-#define TABLE_SIZE	TRAP_TABLE_SIZE
-#define ENTRY_SIZE	TRAP_TABLE_ENTRY_SIZE
-
-
-/*
- * Trap table for copy of OFW's own trap table.
- */
-.align TABLE_SIZE
-.global trap_table
-trap_table:
-	.space TABLE_SIZE, 0
-
-
-/*
- * Kernel-provided trap handlers.
- */
-.global trap_table_kernel
-trap_table_kernel:
-
-/*
- * Hardware interrupts for TL=0.
- */
-.org trap_table_kernel + 0*ENTRY_SIZE
-tl_0_hardware_traps:
-
-/*
- * Register window spill/fill/clean traps for TL=0.
- */
-.org trap_table_kernel + 128*ENTRY_SIZE
-tl_0_regwin_traps:
-
-/*
- * Software traps for TL=0.
- */
-.org trap_table_kernel + 256*ENTRY_SIZE
-tl_0_software_traps:
-
-/* Reserved area. */
-.org trap_table_kernel + 384*ENTRY_SIZE
-.space 128*ENTRY_SIZE, 0
-
-/*
- * Hardware interrupts for TL>0.
- */
-.org trap_table_kernel + 512*ENTRY_SIZE
-tl_non_0_hardware_traps:
-
-/*
- * Register window spill/fill/clean traps for TL>0.
- */
-.org trap_table_kernel + 640*ENTRY_SIZE
-tl_non_0_regwin_traps:
-
-/*
- * Software traps for TL>0.
- */
-.org trap_table_kernel + 768*ENTRY_SIZE
-tl_non_0_software_traps:
-
-/* Reserved area. */
-.org trap_table_kernel + 896*ENTRY_SIZE
-.space 128*ENTRY_SIZE, 0
