44#define PORT_SUPPORTS_RT FALSE
50#define PORT_NATURAL_ALIGN sizeof (void *)
56#define PORT_STACK_ALIGN sizeof (stkalign_t)
62#define PORT_WORKING_AREA_ALIGN sizeof (stkalign_t)
72#define PORT_ARCHITECTURE_XXX
77#define PORT_ARCHITECTURE_XXX_YYY
82#define PORT_ARCHITECTURE_NAME "XXX Architecture"
87#if defined(__GNUC__) || defined(__DOXYGEN__)
88#define PORT_COMPILER_NAME "GCC " __VERSION__
91#error "unsupported compiler"
97#define PORT_INFO "no info"
110#if !defined(PORT_IDLE_THREAD_STACK_SIZE) || defined(__DOXYGEN__)
111#define PORT_IDLE_THREAD_STACK_SIZE 32
119#if !defined(PORT_INT_REQUIRED_STACK) || defined(__DOXYGEN__)
120#define PORT_INT_REQUIRED_STACK 256
126#if !defined(PORT_XXX_WFI_SLEEP_IDLE) || defined(__DOXYGEN__)
127#define PORT_XXX_ENABLE_WFI_IDLE FALSE
140#if !defined(_FROM_ASM_)
182#define PORT_THD_FUNCTION(tname, arg) void tname(void *arg)
189#define PORT_SETUP_CONTEXT(tp, wbase, wtop, pf, arg) { \
196#define PORT_WA_SIZE(n) (sizeof(struct port_intctx) + \
197 sizeof(struct port_extctx) + \
198 ((size_t)(n)) + ((size_t)(PORT_INT_REQUIRED_STACK)))
208#define PORT_WORKING_AREA(s, n) \
209 stkalign_t s[THD_WORKING_AREA_SIZE(n) / sizeof (stkalign_t)]
214#define PORT_IRQ_IS_VALID_PRIORITY(n) false
219#define PORT_IRQ_IS_VALID_KERNEL_PRIORITY(n) false
226#define PORT_IRQ_PROLOGUE()
233#define PORT_IRQ_EPILOGUE()
241#define PORT_IRQ_HANDLER(id) extern "C" void id(void)
243#define PORT_IRQ_HANDLER(id) void id(void)
252#define PORT_FAST_IRQ_HANDLER(id) extern "C" void id(void)
254#define PORT_FAST_IRQ_HANDLER(id) void id(void)
267#if !CH_DBG_ENABLE_STACK_CHECK || defined(__DOXYGEN__)
268#define port_switch(ntp, otp) _port_switch(ntp, otp)
270#define port_switch(ntp, otp) { \
271 register struct port_intctx *sp asm ("%r1"); \
272 if ((stkalign_t *)(sp - 1) < otp->wabase) \
273 chSysHalt("stack overflow"); \
274 _port_switch(ntp, otp); \
283#define port_get_lock_status() 0U
293#define port_is_locked(sts) ((sts) != 0U)
301#if !defined(_FROM_ASM_)
320#if !defined(_FROM_ASM_)
404#if PORT_XXX_ENABLE_WFI_IDLE
424#if !defined(_FROM_ASM_)
426#if CH_CFG_ST_TIMEDELTA > 0
427#include "chcore_timer.h"
struct ch_thread thread_t
Type of a thread structure.
static void port_unlock_from_isr(void)
Kernel-unlock action from an interrupt handler.
void _port_init(void)
Port-related initialization code.
static void port_wait_for_interrupt(void)
Enters an architecture-dependent IRQ-waiting mode.
static void port_disable(void)
Disables all the interrupt sources.
static rtcnt_t port_rt_get_counter_value(void)
Returns the current value of the realtime counter.
static void port_lock_from_isr(void)
Kernel-lock action from an interrupt handler.
static void port_enable(void)
Enables all the interrupt sources.
static void port_lock(void)
Kernel-lock action.
static bool port_is_isr_context(void)
Determines the current execution context.
static void port_suspend(void)
Disables the interrupt sources below kernel-level priority.
void _port_switch(thread_t *ntp, thread_t *otp)
Performs a context switch between two threads.
static void port_unlock(void)
Kernel-unlock action.
Platform dependent part of the thread_t structure.