Line data Source code
1 1 : /* 2 : * Copyright (c) 2013-2014 Wind River Systems, Inc. 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : /** 8 : * @file 9 : * @brief ARM AArch32 public kernel miscellaneous 10 : * 11 : * ARM AArch32-specific kernel miscellaneous interface. Included by arm/arch.h. 12 : */ 13 : 14 : #ifndef ZEPHYR_INCLUDE_ARCH_ARM_MISC_H_ 15 : #define ZEPHYR_INCLUDE_ARCH_ARM_MISC_H_ 16 : 17 : #ifdef __cplusplus 18 : extern "C" { 19 : #endif 20 : 21 : #ifndef _ASMLANGUAGE 22 0 : extern uint32_t sys_clock_cycle_get_32(void); 23 : 24 0 : static inline uint32_t arch_k_cycle_get_32(void) 25 : { 26 : return sys_clock_cycle_get_32(); 27 : } 28 : 29 0 : extern uint64_t sys_clock_cycle_get_64(void); 30 : 31 0 : static inline uint64_t arch_k_cycle_get_64(void) 32 : { 33 : return sys_clock_cycle_get_64(); 34 : } 35 : 36 0 : static ALWAYS_INLINE void arch_nop(void) 37 : { 38 : __asm__ volatile("nop"); 39 : } 40 : 41 : #if defined(CONFIG_USERSPACE) 42 : extern bool z_arm_thread_is_in_user_mode(void); 43 : #endif 44 : 45 : #if defined(CONFIG_ARM_ON_ENTER_CPU_IDLE_HOOK) 46 : /* Prototype of a hook that can be enabled to be called every time the CPU is 47 : * made idle (the calls will be done from k_cpu_idle() and k_cpu_atomic_idle()). 48 : * If this hook returns false, the CPU is prevented from entering the actual 49 : * sleep (the WFE/WFI instruction is skipped). 50 : */ 51 : bool z_arm_on_enter_cpu_idle(void); 52 : #endif 53 : 54 : #if defined(CONFIG_ARM_ON_ENTER_CPU_IDLE_PREPARE_HOOK) 55 : /* Prototype of a hook that can be enabled to be called every time the CPU is 56 : * made idle (the calls will be done from k_cpu_idle() and k_cpu_atomic_idle()). 57 : * The function is called before interrupts are disabled and can prepare to 58 : * upcoming call to z_arm_on_enter_cpu_idle. 59 : */ 60 : void z_arm_on_enter_cpu_idle_prepare(void); 61 : #endif 62 : 63 : #endif 64 : 65 : #ifdef __cplusplus 66 : } 67 : #endif 68 : 69 : #endif /* ZEPHYR_INCLUDE_ARCH_ARM_MISC_H_ */