upgrade to linux 2.6.10-1.12_FC2
[linux-2.6.git] / arch / ia64 / kernel / process.c
index 56ffa1a..488c79d 100644 (file)
@@ -38,6 +38,7 @@
 #include <asm/uaccess.h>
 #include <asm/unwind.h>
 #include <asm/user.h>
+#include <asm/diskdump.h>
 
 #ifdef CONFIG_PERFMON
 # include <asm/perfmon.h>
@@ -47,6 +48,8 @@
 
 void (*ia64_mark_idle)(int);
 
+unsigned long boot_option_idle_override = 0;
+EXPORT_SYMBOL(boot_option_idle_override);
 
 void
 ia64_do_show_stack (struct unw_frame_info *info, void *arg)
@@ -146,6 +149,8 @@ show_regs (struct pt_regs *regs)
                show_stack(NULL, NULL);
 }
 
+EXPORT_SYMBOL_GPL(show_regs);
+
 void
 do_notify_resume_user (sigset_t *oldset, struct sigscratch *scr, long in_syscall)
 {
@@ -185,6 +190,8 @@ default_idle (void)
        while (!need_resched())
                if (pal_halt && !pmu_active)
                        safe_halt();
+               else
+                       cpu_relax();
 }
 
 #ifdef CONFIG_HOTPLUG_CPU
@@ -555,11 +562,13 @@ do_dump_task_fpu (struct task_struct *task, struct unw_frame_info *info, void *a
 }
 
 void
-do_copy_regs (struct unw_frame_info *info, void *arg)
+ia64_do_copy_regs (struct unw_frame_info *info, void *arg)
 {
        do_copy_task_regs(current, info, arg);
 }
 
+EXPORT_SYMBOL_GPL(ia64_do_copy_regs);
+
 void
 do_dump_fpu (struct unw_frame_info *info, void *arg)
 {
@@ -572,7 +581,7 @@ dump_task_regs(struct task_struct *task, elf_gregset_t *regs)
        struct unw_frame_info tcore_info;
 
        if (current == task) {
-               unw_init_running(do_copy_regs, regs);
+               unw_init_running(ia64_do_copy_regs, regs);
        } else {
                memset(&tcore_info, 0, sizeof(tcore_info));
                unw_init_from_blocked_task(&tcore_info, task);
@@ -584,7 +593,7 @@ dump_task_regs(struct task_struct *task, elf_gregset_t *regs)
 void
 ia64_elf_core_copy_regs (struct pt_regs *pt, elf_gregset_t dst)
 {
-       unw_init_running(do_copy_regs, dst);
+       unw_init_running(ia64_do_copy_regs, dst);
 }
 
 int
@@ -775,3 +784,22 @@ machine_power_off (void)
 }
 
 EXPORT_SYMBOL(machine_power_off);
+
+void
+ia64_freeze_cpu (struct unw_frame_info *info, void *arg)
+{
+       current->thread.ksp = (__u64)(info->sw) - 16;
+       for (;;) local_irq_disable();
+}
+
+EXPORT_SYMBOL_GPL(ia64_freeze_cpu);
+
+void
+ia64_start_dump (struct unw_frame_info *info, void *arg)
+{
+       struct dump_call_param *param = arg;
+
+       param->func(param->regs, info);
+}
+
+EXPORT_SYMBOL_GPL(ia64_start_dump);