arch/x86/include/asm/mach-default/smpboot_hooks.h
changeset 0 aa628870c1d3
child 2 d1f6d8b6f81c
equal deleted inserted replaced
-1:000000000000 0:aa628870c1d3
       
     1 /* two abstractions specific to kernel/smpboot.c, mainly to cater to visws
       
     2  * which needs to alter them. */
       
     3 
       
     4 static inline void smpboot_clear_io_apic_irqs(void)
       
     5 {
       
     6 #ifdef CONFIG_X86_IO_APIC
       
     7 	io_apic_irqs = 0;
       
     8 #endif
       
     9 }
       
    10 
       
    11 static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip)
       
    12 {
       
    13 	CMOS_WRITE(0xa, 0xf);
       
    14 	local_flush_tlb();
       
    15 	pr_debug("1.\n");
       
    16 	*((volatile unsigned short *) TRAMPOLINE_HIGH) = start_eip >> 4;
       
    17 	pr_debug("2.\n");
       
    18 	*((volatile unsigned short *) TRAMPOLINE_LOW) = start_eip & 0xf;
       
    19 	pr_debug("3.\n");
       
    20 }
       
    21 
       
    22 static inline void smpboot_restore_warm_reset_vector(void)
       
    23 {
       
    24 	/*
       
    25 	 * Install writable page 0 entry to set BIOS data area.
       
    26 	 */
       
    27 	local_flush_tlb();
       
    28 
       
    29 	/*
       
    30 	 * Paranoid:  Set warm reset code and vector here back
       
    31 	 * to default values.
       
    32 	 */
       
    33 	CMOS_WRITE(0, 0xf);
       
    34 
       
    35 	*((volatile long *) phys_to_virt(0x467)) = 0;
       
    36 }
       
    37 
       
    38 static inline void __init smpboot_setup_io_apic(void)
       
    39 {
       
    40 #ifdef CONFIG_X86_IO_APIC
       
    41 	/*
       
    42 	 * Here we can be sure that there is an IO-APIC in the system. Let's
       
    43 	 * go and set it up:
       
    44 	 */
       
    45 	if (!skip_ioapic_setup && nr_ioapics)
       
    46 		setup_IO_APIC();
       
    47 	else {
       
    48 		nr_ioapics = 0;
       
    49 		localise_nmi_watchdog();
       
    50 	}
       
    51 #endif
       
    52 }
       
    53 
       
    54 static inline void smpboot_clear_io_apic(void)
       
    55 {
       
    56 #ifdef CONFIG_X86_IO_APIC
       
    57 	nr_ioapics = 0;
       
    58 #endif
       
    59 }