1 /*
2  * Copyright (c) 2020 Antony Pavlov <antonynpavlov@gmail.com>
3  *
4  * based on include/arch/riscv/thread.h
5  *
6  * SPDX-License-Identifier: Apache-2.0
7  */
8 
9 /**
10  * @file
11  * @brief Per-arch thread definition
12  *
13  * This file contains definitions for
14  *
15  *  struct _thread_arch
16  *  struct _callee_saved
17  *
18  * necessary to instantiate instances of struct k_thread.
19  */
20 
21 #ifndef ZEPHYR_INCLUDE_ARCH_MIPS_THREAD_H_
22 #define ZEPHYR_INCLUDE_ARCH_MIPS_THREAD_H_
23 
24 #ifndef _ASMLANGUAGE
25 #include <zephyr/types.h>
26 
27 /*
28  * The following structure defines the list of registers that need to be
29  * saved/restored when a cooperative context switch occurs.
30  */
31 struct _callee_saved {
32 	unsigned long sp;	/* Stack pointer */
33 
34 	unsigned long s0;	/* saved register */
35 	unsigned long s1;	/* saved register */
36 	unsigned long s2;	/* saved register */
37 	unsigned long s3;	/* saved register */
38 	unsigned long s4;	/* saved register */
39 	unsigned long s5;	/* saved register */
40 	unsigned long s6;	/* saved register */
41 	unsigned long s7;	/* saved register */
42 	unsigned long s8;	/* saved register AKA fp */
43 };
44 typedef struct _callee_saved _callee_saved_t;
45 
46 struct _thread_arch {
47 	uint32_t swap_return_value; /* Return value of z_swap() */
48 };
49 
50 typedef struct _thread_arch _thread_arch_t;
51 
52 #endif /* _ASMLANGUAGE */
53 
54 #endif /* ZEPHYR_INCLUDE_ARCH_MIPS_THREAD_H_ */
55