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.