1 /* 2 * Copyright (c) 2019-2020 Cobham Gaisler AB 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 /** 8 * @file 9 * @brief Per-arch thread definition 10 * 11 * This file contains definitions for 12 * 13 * struct _thread_arch 14 * struct _callee_saved 15 * 16 * necessary to instantiate instances of struct k_thread. 17 */ 18 19 #ifndef ZEPHYR_INCLUDE_ARCH_SPARC_THREAD_H_ 20 #define ZEPHYR_INCLUDE_ARCH_SPARC_THREAD_H_ 21 22 #ifndef _ASMLANGUAGE 23 #include <zephyr/types.h> 24 25 /* 26 * The following structure defines the list of registers that need to be 27 * saved/restored when a cooperative context switch occurs. 28 */ 29 struct _callee_saved { 30 /* y register used by mul/div */ 31 uint32_t y; 32 33 /* processor status register */ 34 uint32_t psr; 35 36 /* 37 * local registers 38 * 39 * Using uint64_t l0_and_l1 will put everything in this structure on a 40 * double word boundary which allows us to use double word loads and 41 * stores safely in the context switch. 42 */ 43 uint64_t l0_and_l1; 44 uint32_t l2; 45 uint32_t l3; 46 uint32_t l4; 47 uint32_t l5; 48 uint32_t l6; 49 uint32_t l7; 50 51 /* input registers */ 52 uint32_t i0; 53 uint32_t i1; 54 uint32_t i2; 55 uint32_t i3; 56 uint32_t i4; 57 uint32_t i5; 58 uint32_t i6; /* frame pointer */ 59 uint32_t i7; 60 61 /* output registers */ 62 uint32_t o6; /* stack pointer */ 63 uint32_t o7; 64 65 }; 66 typedef struct _callee_saved _callee_saved_t; 67 68 struct _thread_arch { 69 /* empty */ 70 }; 71 72 typedef struct _thread_arch _thread_arch_t; 73 74 #endif /* _ASMLANGUAGE */ 75 76 #endif /* ZEPHYR_INCLUDE_ARCH_SPARC_THREAD_H_ */ 77