Line data Source code
1 0 : /*
2 : * Copyright (c) BayLibre SAS
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : /*
8 : * The purpose of this file is to provide essential/minimal architecture-
9 : * specific structure definitions to be included in generic kernel
10 : * structures.
11 : *
12 : * The following rules must be observed:
13 : * 1. arch/structs.h shall not depend on kernel.h both directly and
14 : * indirectly (i.e. it shall not include any header files that include
15 : * kernel.h in their dependency chain).
16 : * 2. kernel.h shall imply arch/structs.h via kernel_structs.h , such that
17 : * it shall not be necessary to include arch/structs.h explicitly when
18 : * kernel.h is included.
19 : */
20 :
21 : #ifndef ZEPHYR_INCLUDE_ARCH_STRUCTS_H_
22 : #define ZEPHYR_INCLUDE_ARCH_STRUCTS_H_
23 :
24 : #if !defined(_ASMLANGUAGE)
25 :
26 : #if defined(CONFIG_ARM64)
27 : #include <zephyr/arch/arm64/structs.h>
28 : #elif defined(CONFIG_RISCV)
29 : #include <zephyr/arch/riscv/structs.h>
30 : #elif defined(CONFIG_ARM)
31 : #include <zephyr/arch/arm/structs.h>
32 : #elif defined(CONFIG_X86) && !defined(CONFIG_X86_64)
33 : #include <zephyr/arch/x86/ia32/structs.h>
34 : #elif defined(CONFIG_XTENSA)
35 : #include <zephyr/arch/xtensa/structs.h>
36 : #else
37 :
38 : /* Default definitions when no architecture specific definitions exist. */
39 :
40 : /* Per CPU architecture specifics (empty) */
41 : struct _cpu_arch {
42 : #ifdef __cplusplus
43 : /* This struct will have a size 0 in C which is not allowed in C++ (it'll have a size 1). To
44 : * prevent this, we add a 1 byte dummy variable.
45 : */
46 : uint8_t dummy;
47 : #endif
48 : };
49 :
50 : #endif
51 :
52 : /* typedefs to be used with GEN_OFFSET_SYM(), etc. */
53 : typedef struct _cpu_arch _cpu_arch_t;
54 :
55 : #endif /* _ASMLANGUAGE */
56 :
57 : #endif /* ZEPHYR_INCLUDE_ARCH_STRUCTS_H_ */
|