Cleanup: EFI_RESET_SYSTEM now always calls domain_shutdown.
machine_restart and machine_halt calls efi reset_system to do their job.
Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
br.ret.sptk.many rp
END(ia64_delay_loop)
+#ifndef XEN
/*
* Return a CPU-local timestamp in nano-seconds. This timestamp is
* NOT synchronized across CPUs its return value must never be
br.call.sptk.many rp = sys_exit;;
1: br.sptk.few 1b // not reached
END(start_kernel_thread)
+#endif /* XEN */
#ifdef CONFIG_IA64_BRL_EMU
#ifdef XEN
#include <xen/domain.h>
#include <asm/hw_irq.h>
-int ht_per_core = 1;
#ifndef CONFIG_SMP
cpumask_t cpu_online_map = CPU_MASK_CPU0;
EXPORT_SYMBOL(cpu_online_map);
void machine_restart(char * __unused)
{
- if (running_on_sim) dummy();
- printf("machine_restart called: spinning....\n");
+ if (running_on_sim)
+ printf ("machine_restart called. spinning...\n");
+ else
+ (*efi.reset_system)(EFI_RESET_WARM,0,0,NULL);
while(1);
}
void machine_halt(void)
{
- if (running_on_sim) dummy();
- printf("machine_halt called: spinning....\n");
- while(1);
-}
-
-void dummy_called(char *function)
-{
- if (running_on_sim) asm("break 0;;");
- printf("dummy called in %s: spinning....\n", function);
+ if (running_on_sim)
+ printf ("machine_halt called. spinning...\n");
+ else
+ (*efi.reset_system)(EFI_RESET_SHUTDOWN,0,0,NULL);
while(1);
}
switch (regs->r2) {
case FW_HYPERCALL_EFI_RESET_SYSTEM:
- printf("efi.reset_system called ");
- if (current->domain == dom0) {
- printf("(by dom0)\n ");
- (*efi.reset_system)(EFI_RESET_WARM,0,0,NULL);
- } else {
- printf("\n");
- domain_shutdown (current->domain, SHUTDOWN_reboot);
+ {
+ u8 reason;
+ unsigned long val = vcpu_get_gr(v,32);
+ switch (val)
+ {
+ case EFI_RESET_SHUTDOWN:
+ reason = SHUTDOWN_poweroff;
+ break;
+ case EFI_RESET_COLD:
+ case EFI_RESET_WARM:
+ default:
+ reason = SHUTDOWN_reboot;
+ break;
+ }
+ domain_shutdown (current->domain, reason);
}
status = EFI_UNSUPPORTED;
break;
//rrv.rrval = v->domain->arch.metaphysical_rr0;
rrv.ps = PAGE_SHIFT;
rrv.ve = 1;
-if (!v->vcpu_info) { printf("Stopping in init_all_rr\n"); dummy(); }
+if (!v->vcpu_info) { panic("Stopping in init_all_rr\n"); }
VCPU(v,rrs[0]) = -1;
VCPU(v,rrs[1]) = rrv.rrval;
VCPU(v,rrs[2]) = rrv.rrval;
printk("console_print called, how did start_kernel return???\n");
}
-void kernel_thread_helper(void)
-{
- printk("kernel_thread_helper not implemented\n");
- dummy();
-}
-
-void sys_exit(void)
-{
- printk("sys_exit not implemented\n");
- dummy();
-}
-
////////////////////////////////////
// called from unaligned.c
////////////////////////////////////
#define seq_printf(a,b...) printf(b)
//#define CONFIG_BLK_DEV_INITRD // needed to reserve memory for domain0
-void dummy_called(char *function);
-#define dummy() dummy_called((char *) __FUNCTION__)
-
-// these declarations got moved at some point, find a better place for them
-extern int ht_per_core;
-
#ifdef CONFIG_XEN_IA64_DOM0_VP
#define CONFIG_SHADOW 1
#endif