From: Kevin Pedretti Date: Tue, 21 Oct 2008 22:12:16 +0000 (-0500) Subject: Merge branch 'kitten' of ssh://sharedev@newskysaw.cs.northwestern.edu/home/sharedev... X-Git-Tag: 1.0^2~30^2 X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=commitdiff_plain;h=d9c9ebf22b8d633909c7583b64c779b5dc57a80e;hp=ed150072069816c4f34cd7b9e129752a6e9e71b3;p=palacios-OLD.git Merge branch 'kitten' of ssh://sharedev@newskysaw.cs.northwestern.edu/home/sharedev/palacios into kitten --- diff --git a/kitten/arch/x86_64/kernel/interrupts.c b/kitten/arch/x86_64/kernel/interrupts.c index a62c106..7441829 100644 --- a/kitten/arch/x86_64/kernel/interrupts.c +++ b/kitten/arch/x86_64/kernel/interrupts.c @@ -10,9 +10,8 @@ #include #include -typedef void (*idtvec_handler_t)(struct pt_regs *regs, unsigned int vector); - idtvec_handler_t idtvec_table[NUM_IDT_ENTRIES]; +static DEFINE_SPINLOCK(idtvec_table_lock); extern void asm_idtvec_table(void); @@ -220,11 +219,12 @@ do_apic_spurious(struct pt_regs *regs, unsigned int vector) while (1) {} } -void __init +void set_idtvec_handler(unsigned int vector, idtvec_handler_t handler) { char namebuf[KSYM_NAME_LEN+1]; unsigned long symsize, offset; + unsigned long irqstate; ASSERT(vector < NUM_IDT_ENTRIES); @@ -235,7 +235,9 @@ set_idtvec_handler(unsigned int vector, idtvec_handler_t handler) ); } + spin_lock_irqsave(&idtvec_table_lock, irqstate); idtvec_table[vector] = handler; + spin_unlock_irqrestore(&idtvec_table_lock, irqstate); } void diff --git a/kitten/include/arch-x86_64/ptrace.h b/kitten/include/arch-x86_64/ptrace.h index e57c4f4..19f91d9 100644 --- a/kitten/include/arch-x86_64/ptrace.h +++ b/kitten/include/arch-x86_64/ptrace.h @@ -116,6 +116,10 @@ enum { EF_ID = 0x00200000, /* id */ }; +/* TODO: remove this */ +typedef void (*idtvec_handler_t)(struct pt_regs *regs, unsigned int vector); +void set_idtvec_handler(unsigned int vector, idtvec_handler_t handler); + #endif #endif diff --git a/kitten/init/main.c b/kitten/init/main.c index ea9c09b..34ab6f9 100644 --- a/kitten/init/main.c +++ b/kitten/init/main.c @@ -130,12 +130,12 @@ start_kernel() printk( KERN_INFO "Calling Init_V3\n" ); Init_V3(&os_hooks, &v3_ops); - printk( KERN_INFO "Rombios: %p @ %d\n", + printk( KERN_INFO "Rombios: %p @ %lu\n", &rombios_start, &rombios_end - &rombios_start ); - printk( KERN_INFO "VGA Bios: %p @ %d\n", + printk( KERN_INFO "VGA Bios: %p @ %lu\n", &vgabios_start, &vgabios_end - &vgabios_start );