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 : #else 33 : 34 : /* Default definitions when no architecture specific definitions exist. */ 35 : 36 : /* Per CPU architecture specifics (empty) */ 37 : struct _cpu_arch { 38 : #ifdef __cplusplus 39 : /* This struct will have a size 0 in C which is not allowed in C++ (it'll have a size 1). To 40 : * prevent this, we add a 1 byte dummy variable. 41 : */ 42 : uint8_t dummy; 43 : #endif 44 : }; 45 : 46 : #endif 47 : 48 : /* typedefs to be used with GEN_OFFSET_SYM(), etc. */ 49 : typedef struct _cpu_arch _cpu_arch_t; 50 : 51 : #endif /* _ASMLANGUAGE */ 52 : 53 : #endif /* ZEPHYR_INCLUDE_ARCH_STRUCTS_H_ */