Zephyr Project API  3.3.0
A Scalable Open Source RTOS
arch.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2016 Cadence Design Systems, Inc.
3 * SPDX-License-Identifier: Apache-2.0
4 */
5
13#ifndef ZEPHYR_INCLUDE_ARCH_XTENSA_ARCH_H_
14#define ZEPHYR_INCLUDE_ARCH_XTENSA_ARCH_H_
15
16#include <zephyr/irq.h>
17
18#include <zephyr/devicetree.h>
19#if !defined(_ASMLANGUAGE) && !defined(__ASSEMBLER__)
20#include <zephyr/types.h>
21#include <zephyr/toolchain.h>
25#include <zephyr/sw_isr_table.h>
28#include <xtensa/config/core.h>
31
32#ifdef CONFIG_KERNEL_COHERENCE
33#define ARCH_STACK_PTR_ALIGN XCHAL_DCACHE_LINESIZE
34#else
35#define ARCH_STACK_PTR_ALIGN 16
36#endif
37
38/* Xtensa GPRs are often designated by two different names */
39#define sys_define_gpr_with_alias(name1, name2) union { uint32_t name1, name2; }
40
42
43#ifdef __cplusplus
44extern "C" {
45#endif
46
47extern void xtensa_arch_except(int reason_p);
48
49#define ARCH_EXCEPT(reason_p) do { \
50 xtensa_arch_except(reason_p); \
51} while (false)
52
53/* internal routine documented in C file, needed by IRQ_CONNECT() macro */
54extern void z_irq_priority_set(uint32_t irq, uint32_t prio, uint32_t flags);
55
56#define ARCH_IRQ_CONNECT(irq_p, priority_p, isr_p, isr_param_p, flags_p) \
57{ \
58 Z_ISR_DECLARE(irq_p, flags_p, isr_p, isr_param_p); \
59}
60
61#define XTENSA_ERR_NORET
62
64
65static inline uint32_t arch_k_cycle_get_32(void)
66{
68}
69
71
72static inline uint64_t arch_k_cycle_get_64(void)
73{
75}
76
77static ALWAYS_INLINE void arch_nop(void)
78{
79 __asm__ volatile("nop");
80}
81
82#ifdef __cplusplus
83}
84#endif
85
86#endif /* !defined(_ASMLANGUAGE) && !defined(__ASSEMBLER__) */
87
88#endif /* ZEPHYR_INCLUDE_ARCH_XTENSA_ARCH_H_ */
#define ALWAYS_INLINE
Definition: common.h:124
Devicetree main header.
Public interface for configuring interrupts.
uint64_t sys_clock_cycle_get_64(void)
uint32_t sys_clock_cycle_get_32(void)
flags
Definition: parser.h:96
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT64_TYPE__ uint64_t
Definition: stdint.h:91
Software-managed ISR table.
Macros to abstract toolchain specific capabilities.
static ALWAYS_INLINE void arch_nop(void)
Definition: arch.h:77
void xtensa_arch_except(int reason_p)
static uint32_t arch_k_cycle_get_32(void)
Definition: arch.h:65
static uint64_t arch_k_cycle_get_64(void)
Definition: arch.h:72
Xtensa public exception handling.