#include <asm/uaccess.h>
#include <asm/unwind.h>
#include <asm/user.h>
+#include <asm/diskdump.h>
#ifdef CONFIG_PERFMON
# include <asm/perfmon.h>
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)
show_stack(NULL, NULL);
}
+EXPORT_SYMBOL_GPL(show_regs);
+
void
do_notify_resume_user (sigset_t *oldset, struct sigscratch *scr, long in_syscall)
{
while (!need_resched())
if (pal_halt && !pmu_active)
safe_halt();
+ else
+ cpu_relax();
}
#ifdef CONFIG_HOTPLUG_CPU
}
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)
{
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);
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
}
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);