1 /*
2  * Copyright (c) 2013-2016 Wind River Systems, Inc.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 /**
8  * @file
9  * @brief Private kernel definitions (ARM)
10  *
11  * This file contains private kernel structures definitions and various
12  * other definitions for the ARM Cortex-A/R/M processor architecture family.
13  *
14  * This file is also included by assembly language files which must #define
15  * _ASMLANGUAGE before including this header file.  Note that kernel
16  * assembly source files obtains structure offset values via "absolute symbols"
17  * in the offsets.o module.
18  */
19 
20 #ifndef ZEPHYR_ARCH_ARM_INCLUDE_KERNEL_ARCH_DATA_H_
21 #define ZEPHYR_ARCH_ARM_INCLUDE_KERNEL_ARCH_DATA_H_
22 
23 #include <zephyr/toolchain.h>
24 #include <zephyr/linker/sections.h>
25 #include <zephyr/arch/cpu.h>
26 
27 #if defined(CONFIG_CPU_CORTEX_M)
28 #include <cortex_m/stack.h>
29 #include <cortex_m/exception.h>
30 #elif defined(CONFIG_CPU_AARCH32_CORTEX_R) || defined(CONFIG_CPU_AARCH32_CORTEX_A)
31 #include <cortex_a_r/stack.h>
32 #include <cortex_a_r/exception.h>
33 #endif
34 
35 #ifndef _ASMLANGUAGE
36 #include <zephyr/kernel.h>
37 #include <zephyr/types.h>
38 #include <zephyr/sys/dlist.h>
39 #include <zephyr/sys/atomic.h>
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 typedef struct __esf _esf_t;
46 typedef struct __basic_sf _basic_sf_t;
47 #if defined(CONFIG_FPU) && defined(CONFIG_FPU_SHARING)
48 typedef struct __fpu_sf _fpu_sf_t;
49 #endif
50 
51 #ifdef CONFIG_ARM_MPU
52 struct z_arm_mpu_partition {
53 	uintptr_t start;
54 	size_t size;
55 	k_mem_partition_attr_t attr;
56 };
57 #endif
58 
59 #ifdef __cplusplus
60 }
61 #endif
62 
63 #endif /* _ASMLANGUAGE */
64 
65 #endif /* ZEPHYR_ARCH_ARM_INCLUDE_KERNEL_ARCH_DATA_H_ */
66