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 */
|