diff options
Diffstat (limited to 'extras/mini-os/arch')
-rw-r--r-- | extras/mini-os/arch/ia64/common.c | 6 | ||||
-rw-r--r-- | extras/mini-os/arch/ia64/time.c | 6 | ||||
-rw-r--r-- | extras/mini-os/arch/x86/setup.c | 10 | ||||
-rw-r--r-- | extras/mini-os/arch/x86/time.c | 9 | ||||
-rw-r--r-- | extras/mini-os/arch/x86/traps.c | 4 |
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); +} |