| /* |
| * Copyright (c) 2019 Carlo Caione <ccaione@baylibre.com> |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /** |
| * @file |
| * @brief Per-arch thread definition |
| * |
| * This file contains definitions for |
| * |
| * struct _thread_arch |
| * struct _callee_saved |
| * |
| * necessary to instantiate instances of struct k_thread. |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_ARCH_ARM64_THREAD_H_ |
| #define ZEPHYR_INCLUDE_ARCH_ARM64_THREAD_H_ |
| |
| #ifndef _ASMLANGUAGE |
| #include <zephyr/types.h> |
| |
| struct _callee_saved { |
| uint64_t x19; |
| uint64_t x20; |
| uint64_t x21; |
| uint64_t x22; |
| uint64_t x23; |
| uint64_t x24; |
| uint64_t x25; |
| uint64_t x26; |
| uint64_t x27; |
| uint64_t x28; |
| uint64_t x29; |
| uint64_t sp_el0; |
| uint64_t sp_elx; |
| }; |
| |
| typedef struct _callee_saved _callee_saved_t; |
| |
| struct z_arm64_fp_context { |
| __int128 q0, q1, q2, q3, q4, q5, q6, q7; |
| __int128 q8, q9, q10, q11, q12, q13, q14, q15; |
| __int128 q16, q17, q18, q19, q20, q21, q22, q23; |
| __int128 q24, q25, q26, q27, q28, q29, q30, q31; |
| uint32_t fpsr, fpcr; |
| }; |
| |
| struct _thread_arch { |
| #ifdef CONFIG_USERSPACE |
| struct arm_mmu_ptables *ptables; |
| #endif |
| #ifdef CONFIG_FPU_SHARING |
| struct z_arm64_fp_context saved_fp_context; |
| #endif |
| uint8_t exception_depth; |
| }; |
| |
| typedef struct _thread_arch _thread_arch_t; |
| |
| #endif /* _ASMLANGUAGE */ |
| |
| #endif /* ZEPHYR_INCLUDE_ARCH_ARM64_THREAD_H_ */ |