Index: linux-2.6.16/arch/um/kernel/skas/process_kern.c
===================================================================
--- linux-2.6.16.orig/arch/um/kernel/skas/process_kern.c	2006-03-23 20:32:40.000000000 -0500
+++ linux-2.6.16/arch/um/kernel/skas/process_kern.c	2006-03-23 20:32:51.000000000 -0500
@@ -80,9 +80,7 @@ void release_thread_skas(struct task_str
 {
 }
 
-//XXX: debug only I hope.
-#define O_FORCE 1
-extern int load_TLS(int flags, struct task_struct *to);
+void debug_arch_force_load_TLS(void);
 
 void fork_handler(int sig)
 {
@@ -100,12 +98,7 @@ void fork_handler(int sig)
 /* Handle any immediate reschedules or signals */
 	interrupt_end();
 
-	{
-		int err = load_TLS(O_FORCE, current);
-		if (err && (err != -EINVAL))
-			printk("load_TLS(O_FORCE) in fork_handler failed, "
-				"errno %d, not EINVAL\n", -err);
-	}
+	debug_arch_force_load_TLS();
 
 	userspace(&current->thread.regs.regs);
 }
Index: linux-2.6.16/arch/um/sys-i386/tls.c
===================================================================
--- linux-2.6.16.orig/arch/um/sys-i386/tls.c	2006-03-23 20:32:44.000000000 -0500
+++ linux-2.6.16/arch/um/sys-i386/tls.c	2006-03-23 20:32:51.000000000 -0500
@@ -70,8 +70,6 @@ static int get_free_idx(struct task_stru
 	return -ESRCH;
 }
 
-#define O_FORCE 1
-
 static inline void clear_user_desc(struct user_desc* info)
 {
 	/* Postcondition: LDT_empty(info) returns true. */
@@ -84,7 +82,9 @@ static inline void clear_user_desc(struc
 	info->seg_not_present = 1;
 }
 
-int load_TLS(int flags, struct task_struct *to)
+#define O_FORCE 1
+
+static int load_TLS(int flags, struct task_struct *to)
 {
 	int ret = 0;
 	int idx;
@@ -324,3 +324,11 @@ int ptrace_get_thread_area(struct task_s
 out:
 	return ret;
 }
+
+void debug_arch_force_load_TLS(void)
+{
+	int err = load_TLS(O_FORCE, current);
+	if (err && (err != -EINVAL))
+		printk("load_TLS(O_FORCE) in fork_handler failed, "
+			"errno %d, not EINVAL\n", -err);
+}
