15#ifndef ZEPHYR_INCLUDE_ARCH_XTENSA_ARCH_H_
16#define ZEPHYR_INCLUDE_ARCH_XTENSA_ARCH_H_
21#if !defined(_ASMLANGUAGE) && !defined(__ASSEMBLER__)
31#include <xtensa/config/core.h>
38#ifdef CONFIG_XTENSA_MMU
42#ifdef CONFIG_XTENSA_MPU
65#ifdef CONFIG_XTENSA_MMU
78#ifdef CONFIG_XTENSA_MPU
79 struct xtensa_mpu_map mpu_map;
105#ifdef CONFIG_USERSPACE
107#define ARCH_EXCEPT(reason_p) do { \
108 if (k_is_user_context()) { \
109 arch_syscall_invoke1(reason_p, \
110 K_SYSCALL_XTENSA_USER_FAULT); \
112 compiler_barrier(); \
113 xtensa_arch_except(reason_p); \
120#define ARCH_EXCEPT(reason_p) do { \
121 xtensa_arch_except(reason_p); \
129#include <zephyr/syscalls/arch.h>
134#define ARCH_IRQ_CONNECT(irq_p, priority_p, isr_p, isr_param_p, flags_p) \
136 Z_ISR_DECLARE(irq_p, flags_p, isr_p, isr_param_p); \
159 __asm__
volatile(
"nop");
174 __asm__
volatile(
"rsr.vecbase %0" :
"=r" (vecbase));
175 __asm__
volatile(
"wsr.vecbase %0; rsync" : :
"r" (vecbase | 1));
178#if defined(CONFIG_XTENSA_MMU) || defined(__DOXYGEN__)
Xtensa specific syscall header.
struct _snode sys_snode_t
Single-linked list node structure.
Definition slist.h:39
Public interface for configuring interrupts.
static ALWAYS_INLINE void arch_nop(void)
Definition arch.h:61
flags
Definition parser.h:97
uint64_t sys_clock_cycle_get_64(void)
uint32_t sys_clock_cycle_get_32(void)
static uint32_t arch_k_cycle_get_32(void)
Definition arch.h:44
static uint64_t arch_k_cycle_get_64(void)
Definition arch.h:51
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
sys_snode_t node
Definition arch.h:50
pentry_t * ptables
Definition mmustructs.h:89
Software-managed ISR table.
void xtensa_user_fault(unsigned int reason)
void xtensa_arch_kernel_oops(int reason_p, void *ssf)
Generate kernel oops.
void xtensa_arch_except(int reason_p)
Generate hardware exception.
void arch_xtensa_mmu_post_init(bool is_core0)
Perform additional steps after MMU initialization.
struct arch_mem_domain arch_mem_domain_t
Definition arch.h:84
static ALWAYS_INLINE void xtensa_vecbase_lock(void)
Lock VECBASE if supported by hardware.
Definition arch.h:170