667 #define INTS_ON(rd, rCpsr, newInts) INTS_ON_1(rd, rCpsr, newInts); INTS_ON_2(rd, rCpsr, newInts) |
667 #define INTS_ON(rd, rCpsr, newInts) INTS_ON_1(rd, rCpsr, newInts); INTS_ON_2(rd, rCpsr, newInts) |
668 #define INTS_OFF(rd, rCpsr, newInts) INTS_OFF_1(rd, rCpsr, newInts); INTS_OFF_2(rd, rCpsr, newInts) |
668 #define INTS_OFF(rd, rCpsr, newInts) INTS_OFF_1(rd, rCpsr, newInts); INTS_OFF_2(rd, rCpsr, newInts) |
669 |
669 |
670 #define __chill() |
670 #define __chill() |
671 |
671 |
|
672 #ifdef __CPU_ARM_HAS_WFE_SEV |
|
673 |
|
674 extern "C" void __arm_wfe(); |
|
675 extern "C" void __arm_sev(); |
|
676 |
|
677 #define __snooze() __arm_wfe() |
|
678 #define __holler() __arm_sev() |
|
679 #else |
|
680 #define __snooze() |
|
681 #define __holler() |
|
682 #endif |
|
683 |
672 #if defined(__SMP__) && !defined(__CPU_ARM_HAS_LDREX_STREX_V6K) |
684 #if defined(__SMP__) && !defined(__CPU_ARM_HAS_LDREX_STREX_V6K) |
673 #error SMP not allowed without v6K |
685 #error SMP not allowed without v6K |
674 #endif |
686 #endif |
675 #if defined(__SMP__) && !defined(__CPU_HAS_CP15_THREAD_ID_REG) |
687 #if defined(__SMP__) && !defined(__CPU_HAS_CP15_THREAD_ID_REG) |
676 #error SMP not allowed without thread ID registers |
688 #error SMP not allowed without thread ID registers |
693 #define X86_PAUSE __asm__ __volatile__("pause "); |
705 #define X86_PAUSE __asm__ __volatile__("pause "); |
694 #define __chill() __asm__ __volatile__("pause ") |
706 #define __chill() __asm__ __volatile__("pause ") |
695 #else |
707 #else |
696 #error Unknown x86 compiler |
708 #error Unknown x86 compiler |
697 #endif |
709 #endif |
|
710 |
|
711 #define __snooze() __chill() |
|
712 #define __holler() |
698 |
713 |
699 #if defined(__cplusplus) |
714 #if defined(__cplusplus) |
700 extern "C" { |
715 extern "C" { |
701 #endif |
716 #endif |
702 #if defined(__VC32__) |
717 #if defined(__VC32__) |