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 |
677 #endif |
689 #endif |
|
690 |
|
691 #define __SRATIO_MACHINE_CODED__ |
678 |
692 |
679 #endif // end of __CPU_ARM |
693 #endif // end of __CPU_ARM |
680 |
694 |
681 #if defined(__CPU_X86) && defined(__EPOC32__) |
695 #if defined(__CPU_X86) && defined(__EPOC32__) |
682 #define __CPU_HAS_MMU |
696 #define __CPU_HAS_MMU |
693 #define X86_PAUSE __asm__ __volatile__("pause "); |
707 #define X86_PAUSE __asm__ __volatile__("pause "); |
694 #define __chill() __asm__ __volatile__("pause ") |
708 #define __chill() __asm__ __volatile__("pause ") |
695 #else |
709 #else |
696 #error Unknown x86 compiler |
710 #error Unknown x86 compiler |
697 #endif |
711 #endif |
|
712 |
|
713 #define __snooze() __chill() |
|
714 #define __holler() |
698 |
715 |
699 #if defined(__cplusplus) |
716 #if defined(__cplusplus) |
700 extern "C" { |
717 extern "C" { |
701 #endif |
718 #endif |
702 #if defined(__VC32__) |
719 #if defined(__VC32__) |
795 |
812 |
796 #else // __USER_MEMORY_GUARDS_ENABLED__ |
813 #else // __USER_MEMORY_GUARDS_ENABLED__ |
797 |
814 |
798 #define USER_MEMORY_GUARD_SAVE_WORDS 2 |
815 #define USER_MEMORY_GUARD_SAVE_WORDS 2 |
799 #define USER_MEMORY_DOMAIN 15 |
816 #define USER_MEMORY_DOMAIN 15 |
800 #define USER_MEMORY_DOMAIN_MASK (3 << (2*USER_MEMORY_DOMAIN)) |
817 #define USER_MEMORY_DOMAIN_MASK (3U << (2*USER_MEMORY_DOMAIN)) |
801 #define USER_MEMORY_DOMAIN_CLIENT (1 << (2*USER_MEMORY_DOMAIN)) |
818 #define USER_MEMORY_DOMAIN_CLIENT (1U << (2*USER_MEMORY_DOMAIN)) |
802 |
819 |
803 // Save the DACR in the named register |
820 // Save the DACR in the named register |
804 #define USER_MEMORY_GUARD_SAVE(save) \ |
821 #define USER_MEMORY_GUARD_SAVE(save) \ |
805 asm("mrc p15, 0, "#save", c3, c0, 0"); /* save<-DACR */ |
822 asm("mrc p15, 0, "#save", c3, c0, 0"); /* save<-DACR */ |
806 |
823 |