23static inline uint32_t port_get_primask(
void)
26 __asm
volatile(
"MRS %0, PRIMASK" :
"=r"(primask) ::
"memory");
30static inline void port_set_primask(uint32_t primask)
32 __asm
volatile(
"MSR PRIMASK, %0" ::
"r"(primask) :
"memory");
56 void (*pf_task)(
void *),
59#define port_disable_interrupts { __asm volatile("CPSID I" ::: "memory"); }
60#define port_enable_interrupts { __asm volatile("CPSIE I" ::: "memory"); }
63#define port_setup_PendSV() (*(uint32_t volatile *)0xE000ED20 |= (0xFFU << 16))
64#define port_trigger_PendSV() (*(uint32_t volatile *)0xE000ED04 = (1U << 28))
66#define port_SVCHandler SVC_Handler
67#define port_PendSVHandler PendSV_Handler
68#define port_SysTickHandler SysTick_Handler
uint32_t * akos_port_task_stack_init(uint32_t *p_stack, size_t stack_size, void(*pf_task)(void *), void *p_arg)
Build the initial Cortex-M thread stack frame.
void akos_port_start_first_task(void)
Start the first thread by restoring the initial exception context.
void akos_port_systick_init_freq(uint32_t cpu_freq)
Configure SysTick to generate 1ms OS ticks.