blob: 73f8a95e595ee16f6133761aaaace5dd3a2a797e [file] [log] [blame]
/*
* Copyright (c) 2021 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_ARCH_XTENSA_THREAD_H_
#define ZEPHYR_INCLUDE_ARCH_XTENSA_THREAD_H_
#include <stdint.h>
#ifndef _ASMLANGUAGE
#ifdef CONFIG_XTENSA_MPU
#include <zephyr/arch/xtensa/mpu.h>
#endif
/* Xtensa doesn't use these structs, but Zephyr core requires they be
* defined so they can be included in struct _thread_base. Dummy
* field exists for sizeof compatibility with C++.
*/
struct _callee_saved {
char dummy;
};
typedef struct _callee_saved _callee_saved_t;
struct _thread_arch {
uint32_t last_cpu;
#ifdef CONFIG_USERSPACE
#ifdef CONFIG_XTENSA_MMU
uint32_t *ptables;
#endif
#ifdef CONFIG_XTENSA_MPU
/* Pointer to the memory domain's MPU map. */
struct xtensa_mpu_map *mpu_map;
#endif
/* Initial privilege mode stack pointer when doing a system call.
* Un-set for surpervisor threads.
*/
uint8_t *psp;
#endif
};
typedef struct _thread_arch _thread_arch_t;
#endif /* _ASMLANGUAGE */
#endif /* ZEPHYR_INCLUDE_ARCH_XTENSA_THREAD_H_ */