wakecpu.h 761 B

12345678910111213141516171819202122232425262728
  1. #ifndef __ASM_NUMAQ_WAKECPU_H
  2. #define __ASM_NUMAQ_WAKECPU_H
  3. /* This file copes with machines that wakeup secondary CPUs by NMIs */
  4. #define NUMAQ_TRAMPOLINE_PHYS_LOW (0x8)
  5. #define NUMAQ_TRAMPOLINE_PHYS_HIGH (0xa)
  6. /*
  7. * Because we use NMIs rather than the INIT-STARTUP sequence to
  8. * bootstrap the CPUs, the APIC may be in a weird state. Kick it:
  9. */
  10. static inline void numaq_smp_callin_clear_local_apic(void)
  11. {
  12. clear_local_APIC();
  13. }
  14. static inline void
  15. numaq_store_NMI_vector(unsigned short *high, unsigned short *low)
  16. {
  17. printk("Storing NMI vector\n");
  18. *high =
  19. *((volatile unsigned short *)phys_to_virt(NUMAQ_TRAMPOLINE_PHYS_HIGH));
  20. *low =
  21. *((volatile unsigned short *)phys_to_virt(NUMAQ_TRAMPOLINE_PHYS_LOW));
  22. }
  23. #endif /* __ASM_NUMAQ_WAKECPU_H */