This macro is slated for complete removal, as it's not possible on arches with an MPU stack guard to know the true buffer bounds without also knowing the runtime state of its associated thread. As removing this completely would be invasive to where we are in the 1.14 release, demote to a private kernel Z_ API instead. The current way that the macro is being used internally will not cause any undue harm, we just don't want any external code depending on it. The final work to remove this (and overhaul stack specification in general) will take place in 1.15 in the context of #14269 Fixes: #14766 Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
71 lines
1.6 KiB
C
71 lines
1.6 KiB
C
/*
|
|
* Copyright (c) 2016 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @file
|
|
* @brief Private kernel definitions
|
|
*
|
|
* This file contains private kernel function/macro definitions and various
|
|
* other definitions for the Nios II processor architecture.
|
|
*
|
|
* This file is also included by assembly language files which must #define
|
|
* _ASMLANGUAGE before including this header file. Note that kernel
|
|
* assembly source files obtains structure offset values via "absolute
|
|
* symbols" in the offsets.o module.
|
|
*/
|
|
|
|
#ifndef ZEPHYR_ARCH_NIOS2_INCLUDE_KERNEL_ARCH_FUNC_H_
|
|
#define ZEPHYR_ARCH_NIOS2_INCLUDE_KERNEL_ARCH_FUNC_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef _ASMLANGUAGE
|
|
|
|
void k_cpu_idle(void);
|
|
void k_cpu_atomic_idle(unsigned int key);
|
|
|
|
static ALWAYS_INLINE void kernel_arch_init(void)
|
|
{
|
|
_kernel.irq_stack =
|
|
Z_THREAD_STACK_BUFFER(_interrupt_stack) + CONFIG_ISR_STACK_SIZE;
|
|
}
|
|
|
|
static ALWAYS_INLINE void
|
|
z_set_thread_return_value(struct k_thread *thread, unsigned int value)
|
|
{
|
|
thread->callee_saved.retval = value;
|
|
}
|
|
|
|
#define z_is_in_isr() (_kernel.nested != 0U)
|
|
|
|
#ifdef CONFIG_IRQ_OFFLOAD
|
|
void z_irq_do_offload(void);
|
|
#endif
|
|
|
|
#if ALT_CPU_ICACHE_SIZE > 0
|
|
void z_nios2_icache_flush_all(void);
|
|
#else
|
|
#define z_nios2_icache_flush_all() do { } while (0)
|
|
#endif
|
|
|
|
#if ALT_CPU_DCACHE_SIZE > 0
|
|
void z_nios2_dcache_flush_all(void);
|
|
void z_nios2_dcache_flush_no_writeback(void *start, u32_t len);
|
|
#else
|
|
#define z_nios2_dcache_flush_all() do { } while (0)
|
|
#define z_nios2_dcache_flush_no_writeback(x, y) do { } while (0)
|
|
#endif
|
|
|
|
#endif /* _ASMLANGUAGE */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* ZEPHYR_ARCH_NIOS2_INCLUDE_KERNEL_ARCH_FUNC_H_ */
|