diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-02-16 16:31:22 +0100 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-02-16 16:31:22 +0100 |
commit | 0510339782be95981d02c8bd52bafd6ebf90b394 (patch) | |
tree | fca074cadd992fb11df036a22d8ff8626c463d0d /xen/include/asm-x86/mach-default | |
parent | 5f3c901acc28bf701a37cbc9b0d014a82129fbab (diff) | |
download | xen-0510339782be95981d02c8bd52bafd6ebf90b394.tar.gz xen-0510339782be95981d02c8bd52bafd6ebf90b394.tar.bz2 xen-0510339782be95981d02c8bd52bafd6ebf90b394.zip |
Upgrade smpboot.c to linux-2.6.16-rc2 codebase.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/include/asm-x86/mach-default')
-rw-r--r-- | xen/include/asm-x86/mach-default/smpboot_hooks.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/xen/include/asm-x86/mach-default/smpboot_hooks.h b/xen/include/asm-x86/mach-default/smpboot_hooks.h new file mode 100644 index 0000000000..104de09d4d --- /dev/null +++ b/xen/include/asm-x86/mach-default/smpboot_hooks.h @@ -0,0 +1,44 @@ +/* two abstractions specific to kernel/smpboot.c, mainly to cater to visws + * which needs to alter them. */ + +static inline void smpboot_clear_io_apic_irqs(void) +{ + io_apic_irqs = 0; +} + +static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip) +{ + CMOS_WRITE(0xa, 0xf); + local_flush_tlb(); + Dprintk("1.\n"); + *((volatile unsigned short *) TRAMPOLINE_HIGH) = start_eip >> 4; + Dprintk("2.\n"); + *((volatile unsigned short *) TRAMPOLINE_LOW) = start_eip & 0xf; + Dprintk("3.\n"); +} + +static inline void smpboot_restore_warm_reset_vector(void) +{ + /* + * Install writable page 0 entry to set BIOS data area. + */ + local_flush_tlb(); + + /* + * Paranoid: Set warm reset code and vector here back + * to default values. + */ + CMOS_WRITE(0, 0xf); + + *((volatile long *) maddr_to_virt(0x467)) = 0; +} + +static inline void smpboot_setup_io_apic(void) +{ + /* + * Here we can be sure that there is an IO-APIC in the system. Let's + * go and set it up: + */ + if (!skip_ioapic_setup && nr_ioapics) + setup_IO_APIC(); +} |