* The following aren't currently used.
*/
void (*pm_idle)(void);
+EXPORT_SYMBOL(pm_idle);
+
void (*pm_power_off)(void);
+EXPORT_SYMBOL(pm_power_off);
/*
* This is our default idle handler. We need to disable
}
void (*fp_init)(union fp_state *) = default_fp_init;
+EXPORT_SYMBOL(fp_init);
void flush_thread(void)
{
return used_math != 0;
}
+EXPORT_SYMBOL(dump_fpu);
/*
* fill in the user structure for a core dump..
dump->regs = *regs;
dump->u_fpvalid = dump_fpu (regs, &dump->u_fp);
}
+EXPORT_SYMBOL(dump_thread);
/*
* Shuffle the argument into the correct register before calling the
* the thread function, and r3 points to the exit function.
*/
extern void kernel_thread_helper(void);
-asm( ".align\n"
+asm( ".section .text\n"
+" .align\n"
" .type kernel_thread_helper, #function\n"
"kernel_thread_helper:\n"
" mov r0, r1\n"
" mov lr, r3\n"
" mov pc, r2\n"
-" .size kernel_thread_helper, . - kernel_thread_helper");
+" .size kernel_thread_helper, . - kernel_thread_helper\n"
+" .previous");
/*
* Create a kernel thread.
return do_fork(flags|CLONE_VM|CLONE_UNTRACED, 0, ®s, 0, NULL, NULL);
}
-
-/*
- * These bracket the sleeping functions..
- */
-#define first_sched ((unsigned long) scheduling_functions_start_here)
-#define last_sched ((unsigned long) scheduling_functions_end_here)
+EXPORT_SYMBOL(kernel_thread);
unsigned long get_wchan(struct task_struct *p)
{
if (fp < stack_page || fp > 4092+stack_page)
return 0;
lr = pc_pointer (((unsigned long *)fp)[-1]);
- if (lr < first_sched || lr > last_sched)
+ if (!in_sched_functions(lr))
return lr;
fp = *(unsigned long *) (fp - 12);
} while (count ++ < 16);
return 0;
}
+EXPORT_SYMBOL(get_wchan);