aboutsummaryrefslogtreecommitdiffstats
path: root/extras/mini-os/arch
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-06-09 13:26:30 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-06-09 13:26:30 +0100
commitc68ffdc4fa75f9ed29ccdea16c9a910442e2fc20 (patch)
treeec2dc82b665f6046a46a4c90b5397fe51f17fac4 /extras/mini-os/arch
parent0ba222a6fd5c72bda66eb3678c44fe3e43bbc6c0 (diff)
downloadxen-c68ffdc4fa75f9ed29ccdea16c9a910442e2fc20.tar.gz
xen-c68ffdc4fa75f9ed29ccdea16c9a910442e2fc20.tar.bz2
xen-c68ffdc4fa75f9ed29ccdea16c9a910442e2fc20.zip
minios: add proper shutdown facilities
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
Diffstat (limited to 'extras/mini-os/arch')
-rw-r--r--extras/mini-os/arch/ia64/common.c6
-rw-r--r--extras/mini-os/arch/ia64/time.c6
-rw-r--r--extras/mini-os/arch/x86/setup.c10
-rw-r--r--extras/mini-os/arch/x86/time.c9
-rw-r--r--extras/mini-os/arch/x86/traps.c4
5 files changed, 34 insertions, 1 deletions
diff --git a/extras/mini-os/arch/ia64/common.c b/extras/mini-os/arch/ia64/common.c
index cd4cec1e20..c65f0a0d07 100644
--- a/extras/mini-os/arch/ia64/common.c
+++ b/extras/mini-os/arch/ia64/common.c
@@ -236,6 +236,12 @@ arch_init(start_info_t *si)
}
void
+arch_fini(void)
+{
+ /* TODO */
+}
+
+void
arch_print_info(void)
{
int major, minor;
diff --git a/extras/mini-os/arch/ia64/time.c b/extras/mini-os/arch/ia64/time.c
index bbaa6b1864..baf9096330 100644
--- a/extras/mini-os/arch/ia64/time.c
+++ b/extras/mini-os/arch/ia64/time.c
@@ -280,3 +280,9 @@ init_time(void)
ia64_set_itm(new);
ia64_srlz_d();
}
+
+void
+fini_time(void)
+{
+ /* TODO */
+}
diff --git a/extras/mini-os/arch/x86/setup.c b/extras/mini-os/arch/x86/setup.c
index ca97131315..3671fee332 100644
--- a/extras/mini-os/arch/x86/setup.c
+++ b/extras/mini-os/arch/x86/setup.c
@@ -100,6 +100,16 @@ arch_init(start_info_t *si)
}
void
+arch_fini(void)
+{
+#ifdef __i386__
+ HYPERVISOR_set_callbacks(0, 0, 0, 0);
+#else
+ HYPERVISOR_set_callbacks(0, 0, 0);
+#endif
+}
+
+void
arch_print_info(void)
{
printk(" stack: %p-%p\n", stack, stack + sizeof(stack));
diff --git a/extras/mini-os/arch/x86/time.c b/extras/mini-os/arch/x86/time.c
index d7b387f95f..4af0b89b94 100644
--- a/extras/mini-os/arch/x86/time.c
+++ b/extras/mini-os/arch/x86/time.c
@@ -222,10 +222,17 @@ static void timer_handler(evtchn_port_t ev, struct pt_regs *regs, void *ign)
+static evtchn_port_t port;
void init_time(void)
{
- evtchn_port_t port;
printk("Initialising timer interface\n");
port = bind_virq(VIRQ_TIMER, &timer_handler, NULL);
unmask_evtchn(port);
}
+
+void fini_time(void)
+{
+ /* Clear any pending timer */
+ HYPERVISOR_set_timer_op(0);
+ unbind_evtchn(port);
+}
diff --git a/extras/mini-os/arch/x86/traps.c b/extras/mini-os/arch/x86/traps.c
index 5719f741e1..003ffb52b3 100644
--- a/extras/mini-os/arch/x86/traps.c
+++ b/extras/mini-os/arch/x86/traps.c
@@ -268,3 +268,7 @@ void trap_init(void)
HYPERVISOR_set_trap_table(trap_table);
}
+void trap_fini(void)
+{
+ HYPERVISOR_set_trap_table(NULL);
+}