arch/x86/include/asm/numaq/wakecpu.h
changeset 2 d1f6d8b6f81c
parent 0 aa628870c1d3
equal deleted inserted replaced
1:0056487c491e 2:d1f6d8b6f81c
     1 #ifndef __ASM_NUMAQ_WAKECPU_H
     1 #ifndef __ASM_NUMAQ_WAKECPU_H
     2 #define __ASM_NUMAQ_WAKECPU_H
     2 #define __ASM_NUMAQ_WAKECPU_H
     3 
     3 
     4 /* This file copes with machines that wakeup secondary CPUs by NMIs */
     4 /* This file copes with machines that wakeup secondary CPUs by NMIs */
     5 
     5 
     6 #define WAKE_SECONDARY_VIA_NMI
     6 #define TRAMPOLINE_PHYS_LOW (0x8)
     7 
     7 #define TRAMPOLINE_PHYS_HIGH (0xa)
     8 #define TRAMPOLINE_LOW phys_to_virt(0x8)
       
     9 #define TRAMPOLINE_HIGH phys_to_virt(0xa)
       
    10 
       
    11 #define boot_cpu_apicid boot_cpu_logical_apicid
       
    12 
     8 
    13 /* We don't do anything here because we use NMI's to boot instead */
     9 /* We don't do anything here because we use NMI's to boot instead */
    14 static inline void wait_for_init_deassert(atomic_t *deassert)
    10 static inline void wait_for_init_deassert(atomic_t *deassert)
    15 {
    11 {
    16 }
    12 }
    25 }
    21 }
    26 
    22 
    27 static inline void store_NMI_vector(unsigned short *high, unsigned short *low)
    23 static inline void store_NMI_vector(unsigned short *high, unsigned short *low)
    28 {
    24 {
    29 	printk("Storing NMI vector\n");
    25 	printk("Storing NMI vector\n");
    30 	*high = *((volatile unsigned short *) TRAMPOLINE_HIGH);
    26 	*high =
    31 	*low = *((volatile unsigned short *) TRAMPOLINE_LOW);
    27 	  *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH));
       
    28 	*low =
       
    29 	  *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW));
    32 }
    30 }
    33 
    31 
    34 static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
    32 static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
    35 {
    33 {
    36 	printk("Restoring NMI vector\n");
    34 	printk("Restoring NMI vector\n");
    37 	*((volatile unsigned short *) TRAMPOLINE_HIGH) = *high;
    35 	*((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH)) =
    38 	*((volatile unsigned short *) TRAMPOLINE_LOW) = *low;
    36 								 *high;
       
    37 	*((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) =
       
    38 								 *low;
    39 }
    39 }
    40 
    40 
    41 #define inquire_remote_apic(apicid) {}
    41 static inline void inquire_remote_apic(int apicid)
       
    42 {
       
    43 }
    42 
    44 
    43 #endif /* __ASM_NUMAQ_WAKECPU_H */
    45 #endif /* __ASM_NUMAQ_WAKECPU_H */