Index: kernel/arch/sparc32/src/context.S
===================================================================
--- kernel/arch/sparc32/src/context.S	(revision b66cc977e145eaa74a7e9fe52a4a2e995c81ad02)
+++ kernel/arch/sparc32/src/context.S	(revision 8a36bc1e508c3a617d71ab53048d228b31d763c9)
@@ -28,4 +28,5 @@
 #
 
+#include <abi/asmtool.h>
 #include <arch/context_offset.h>
 #include <arch/arch.h>
@@ -33,12 +34,9 @@
 .text
 
-.global context_save_arch
-.global context_restore_arch
-
 /*
  * context_save_arch() is required not to create its own stack frame. See the
  * generic context.h for explanation.
  */
-context_save_arch:
+FUNCTION_BEGIN(context_save_arch)
 	#
 	# Force all our active register windows to memory so that we can find
@@ -62,6 +60,7 @@
 	retl
 	mov 1, %o0		! context_save_arch returns 1
+FUNCTION_END(context_save_arch)
 
-context_restore_arch:
+FUNCTION_BEGIN(context_restore_arch)
 	#
 	# Forget all previous windows, they are not going to be needed again.
@@ -97,2 +96,3 @@
 	retl
 	xor %o0, %o0, %o0	! context_restore_arch returns 0
+FUNCTION_END(context_restore_arch)
Index: kernel/arch/sparc32/src/start.S
===================================================================
--- kernel/arch/sparc32/src/start.S	(revision b66cc977e145eaa74a7e9fe52a4a2e995c81ad02)
+++ kernel/arch/sparc32/src/start.S	(revision 8a36bc1e508c3a617d71ab53048d228b31d763c9)
@@ -27,12 +27,9 @@
 #
 
+#include <abi/asmtool.h>
+
 .text
 
-.global kernel_image_start
-.global early_putchar
-.global kernel_sp
-.global uspace_wbuf
-
-kernel_image_start:
+SYMBOL(kernel_image_start)
 	# Install trap handlers
 	set trap_table, %g1
@@ -68,5 +65,5 @@
 	nop
 
-early_putchar:
+FUNCTION_BEGIN(early_putchar)
 	set 0x80000100, %l0
 	cmp %o0, '\n'
@@ -80,9 +77,10 @@
 		retl
 		nop
+FUNCTION_END(early_putchar)
 
-kernel_sp:
+SYMBOL(kernel_sp)
 .space 4
 
-uspace_wbuf:
+SYMBOL(uspace_wbuf)
 .space 4
 
Index: kernel/arch/sparc32/src/trap_table.S
===================================================================
--- kernel/arch/sparc32/src/trap_table.S	(revision b66cc977e145eaa74a7e9fe52a4a2e995c81ad02)
+++ kernel/arch/sparc32/src/trap_table.S	(revision 8a36bc1e508c3a617d71ab53048d228b31d763c9)
@@ -27,19 +27,9 @@
 #
 
+#include <abi/asmtool.h>
 #include <arch/trap.h>
 #include <arch/regwin.h>
 
 .text
-
-.global trap_table
-.global reset_trap
-.global preemptible_trap
-.global interrupt_trap
-.global syscall_trap
-.global window_overflow_trap
-.global window_underflow_trap
-.global write_to_invalid
-.global read_from_invalid
-.global flush_windows
 
 .macro get_wim_number reg
@@ -218,5 +208,5 @@
 .endm
 
-write_to_invalid:
+FUNCTION_BEGIN(write_to_invalid)
 	! Write value 1
 	mov %o0, %g7
@@ -236,6 +226,7 @@
 	retl
 	nop
-
-read_from_invalid:
+FUNCTION_END(write_to_invalid)
+
+FUNCTION_BEGIN(read_from_invalid)
 	! Read value 1
 	mov %o0, %g7
@@ -255,6 +246,7 @@
 	retl
 	nop
-
-reset_trap:
+FUNCTION_END(read_from_invalid)
+
+SYMBOL(reset_trap)
 	set 0x80000100, %l0
 	set 'r', %l1
@@ -262,5 +254,5 @@
 	rett
 
-window_overflow_trap:
+SYMBOL(window_overflow_trap)
 	mov %g7, %l0
 	
@@ -393,5 +385,5 @@
 		rett %l2
 
-window_underflow_trap:
+SYMBOL(window_underflow_trap)
 	mov %g7, %l0
 	
@@ -479,5 +471,5 @@
 		rett %l2
 
-flush_windows:
+FUNCTION_BEGIN(flush_windows)
 	mov 7, %g1
 	1:
@@ -494,6 +486,7 @@
 	retl
 	nop
-
-preemptible_trap:
+FUNCTION_END(flush_windows)
+
+SYMBOL(preemptible_trap)
 	/* Save %g7 */
 	mov %g7, %l0
@@ -670,5 +663,5 @@
 		rett %l2
 
-interrupt_trap:
+SYMBOL(interrupt_trap)
 	/* Save %g7 */
 	mov %g7, %l0
@@ -844,5 +837,5 @@
 		rett %l2
 
-syscall_trap:
+SYMBOL(syscall_trap)
 	/* Save %g7 */
 	mov %g7, %l0
@@ -1051,5 +1044,5 @@
 
 .align TRAP_TABLE_SIZE
-trap_table:
+SYMBOL(trap_table)
 	STRAP(0x0, reset_trap)
 	TRAP(0x1, instruction_access_exception)
