diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-01-28 19:34:09 +0100 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-01-29 14:16:51 +0100 | 
| commit | 1164dd0099c0d79146a55319670f57ab7ad1d352 (patch) | |
| tree | b6605a9f5cc12518f65551ccf31a5b6ea3377585 /arch/x86/include/asm/smpboot_hooks.h | |
| parent | 7b38725318f4517af6168ccbff99060d67aba1c8 (diff) | |
x86: move mach-default/*.h files to asm/
We are getting rid of subarchitecture support - move the hook files
to asm/. (These are now stale and should be replaced with more explicit
runtime mechanisms - but the transition is simpler this way.)
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/include/asm/smpboot_hooks.h')
| -rw-r--r-- | arch/x86/include/asm/smpboot_hooks.h | 61 | 
1 files changed, 61 insertions, 0 deletions
| diff --git a/arch/x86/include/asm/smpboot_hooks.h b/arch/x86/include/asm/smpboot_hooks.h new file mode 100644 index 000000000000..1def60114906 --- /dev/null +++ b/arch/x86/include/asm/smpboot_hooks.h @@ -0,0 +1,61 @@ +/* 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) +{ +#ifdef CONFIG_X86_IO_APIC +	io_apic_irqs = 0; +#endif +} + +static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip) +{ +	CMOS_WRITE(0xa, 0xf); +	local_flush_tlb(); +	pr_debug("1.\n"); +	*((volatile unsigned short *)phys_to_virt(apic->trampoline_phys_high)) = +								 start_eip >> 4; +	pr_debug("2.\n"); +	*((volatile unsigned short *)phys_to_virt(apic->trampoline_phys_low)) = +							 start_eip & 0xf; +	pr_debug("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 *)phys_to_virt(apic->trampoline_phys_low)) = 0; +} + +static inline void __init smpboot_setup_io_apic(void) +{ +#ifdef CONFIG_X86_IO_APIC +	/* +	 * 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(); +	else { +		nr_ioapics = 0; +		localise_nmi_watchdog(); +	} +#endif +} + +static inline void smpboot_clear_io_apic(void) +{ +#ifdef CONFIG_X86_IO_APIC +	nr_ioapics = 0; +#endif +} | 
