#ifndef __ASSEMBLY__
+struct thread_info;
+
+#include "linux/config.h"
#include "asm/page.h"
-#include "linux/thread_info.h"
-#define current (current_thread_info()->task)
+#define CURRENT_THREAD(dummy) (((unsigned long) &dummy) & \
+ (PAGE_MASK << CONFIG_KERNEL_STACK_ORDER))
+
+#define current_thread \
+ ({ int dummy; ((struct thread_info *) CURRENT_THREAD(dummy)); })
-/*Backward compatibility - it's used inside arch/um.*/
-#define current_thread current_thread_info()
+#define current (current_thread->task)
#endif /* __ASSEMBLY__ */