Line data Source code
1 0 : /* 2 : * Copyright 2022 IoT.bzh 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : #ifndef ZEPHYR_INCLUDE_ARCH_ARM_ARCH_INLINES_H 8 : #define ZEPHYR_INCLUDE_ARCH_ARM_ARCH_INLINES_H 9 : 10 : #include <zephyr/kernel_structs.h> 11 : #if defined(CONFIG_CPU_AARCH32_CORTEX_R) || defined(CONFIG_CPU_AARCH32_CORTEX_A) 12 : #include <zephyr/arch/arm/cortex_a_r/lib_helpers.h> 13 : #include <zephyr/arch/arm/cortex_a_r/tpidruro.h> 14 : 15 : static ALWAYS_INLINE _cpu_t *arch_curr_cpu(void) 16 : { 17 : return (_cpu_t *)(read_tpidruro() & TPIDRURO_CURR_CPU); 18 : } 19 : #else 20 : 21 : #ifndef CONFIG_SMP 22 : static ALWAYS_INLINE _cpu_t *arch_curr_cpu(void) 23 : { 24 : /* Dummy implementation always return the first cpu */ 25 : return &_kernel.cpus[0]; 26 : } 27 : #endif 28 : #endif 29 : 30 0 : static ALWAYS_INLINE uint32_t arch_proc_id(void) 31 : { 32 : /* 33 : * Placeholder implementation to be replaced with an architecture 34 : * specific call to get processor ID 35 : */ 36 : return arch_curr_cpu()->id; 37 : } 38 : 39 0 : static ALWAYS_INLINE unsigned int arch_num_cpus(void) 40 : { 41 : return CONFIG_MP_MAX_NUM_CPUS; 42 : } 43 : 44 : #endif /* ZEPHYR_INCLUDE_ARCH_ARM_ARCH_INLINES_H */