mach_wakecpu.h 983 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef ASM_X86__MACH_DEFAULT__MACH_WAKECPU_H
  2. #define ASM_X86__MACH_DEFAULT__MACH_WAKECPU_H
  3. /*
  4. * This file copes with machines that wakeup secondary CPUs by the
  5. * INIT, INIT, STARTUP sequence.
  6. */
  7. #define WAKE_SECONDARY_VIA_INIT
  8. #define TRAMPOLINE_LOW phys_to_virt(0x467)
  9. #define TRAMPOLINE_HIGH phys_to_virt(0x469)
  10. #define boot_cpu_apicid boot_cpu_physical_apicid
  11. static inline void wait_for_init_deassert(atomic_t *deassert)
  12. {
  13. while (!atomic_read(deassert))
  14. cpu_relax();
  15. return;
  16. }
  17. /* Nothing to do for most platforms, since cleared by the INIT cycle */
  18. static inline void smp_callin_clear_local_apic(void)
  19. {
  20. }
  21. static inline void store_NMI_vector(unsigned short *high, unsigned short *low)
  22. {
  23. }
  24. static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
  25. {
  26. }
  27. #if APIC_DEBUG
  28. #define inquire_remote_apic(apicid) __inquire_remote_apic(apicid)
  29. #else
  30. #define inquire_remote_apic(apicid) {}
  31. #endif
  32. #endif /* ASM_X86__MACH_DEFAULT__MACH_WAKECPU_H */