Zephyr API Documentation 4.2.99
A Scalable Open Source RTOS
 4.2.99
thread.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2021 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_ARCH_XTENSA_THREAD_H_
8#define ZEPHYR_INCLUDE_ARCH_XTENSA_THREAD_H_
9
10#include <stdint.h>
11#ifndef _ASMLANGUAGE
12
13#ifdef CONFIG_XTENSA_MPU
15#endif
16
17#ifdef CONFIG_XTENSA_LAZY_HIFI_SHARING
18#include <xtensa/config/tie.h>
19#endif
20
21/* Xtensa doesn't use these structs, but Zephyr core requires they be
22 * defined so they can be included in struct _thread_base. Dummy
23 * field exists for sizeof compatibility with C++.
24 */
25
26struct _callee_saved {
27 char dummy;
28};
29
30typedef struct _callee_saved _callee_saved_t;
31
32struct _thread_arch {
33 uint32_t last_cpu;
34#ifdef CONFIG_USERSPACE
35
36#ifdef CONFIG_XTENSA_MMU
37 uint32_t *ptables;
38#endif
39
40#ifdef CONFIG_XTENSA_MPU
41 /* Pointer to the memory domain's MPU map. */
42 struct xtensa_mpu_map *mpu_map;
43#endif
44
45 /* Initial privilege mode stack pointer when doing a system call.
46 * Un-set for surpervisor threads.
47 */
48 uint8_t *psp;
49
50 /* Stashed PS value used to restore PS when restoring from
51 * context switching or returning from non-nested interrupts.
52 */
53 uint32_t return_ps;
54#endif
55
56#ifdef CONFIG_XTENSA_LAZY_HIFI_SHARING
57 /* A non-BSA region is required for lazy save/restore */
58 uint8_t hifi_regs[XCHAL_CP1_SA_SIZE] __aligned(XCHAL_CP1_SA_ALIGN);
59#endif
60};
61
62typedef struct _thread_arch _thread_arch_t;
63
64#endif /* _ASMLANGUAGE */
65
66#endif /* ZEPHYR_INCLUDE_ARCH_XTENSA_THREAD_H_ */
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88