kernel/eka/include/nkern/nk_cpu.h
branchRCL_3
changeset 43 c1f20ce4abcf
parent 8 538db54a451d
child 44 3e88ff8f41d5
equal deleted inserted replaced
42:a179b74831c9 43:c1f20ce4abcf
   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