VSF Documented
Data Structures | Macros | Typedefs | Functions | Variables
cortex_m_generic.c File Reference
#include "hal/arch/vsf_arch_abstraction.h"
#include "SysTick/systick.h"
#include "hal/driver/vendor_driver.h"
#include "hal/arch/__vsf_arch_interface.h"
#include "kernel/vsf_kernel.h"

Data Structures

struct  __vsf_cm_t
 
struct  ulldiv_t
 
struct  uidiv_return
 

Macros

#define __VSF_EDA_CLASS_INHERIT__
 

Typedefs

typedef struct __vsf_cm_t __vsf_cm_t
 

Functions

bool vsf_arch_low_level_init (void)
 
vsf_systimer_tick_t vsf_systimer_get_tick_elapsed (void)
 
void vsf_systimer_clear_int_pending_bit (void)
 
void vsf_systimer_reset_counter_value (void)
 
bool vsf_systimer_low_level_disable (void)
 disable systimer and return over-flow flag status !
 
void vsf_systimer_low_level_enable (void)
 only enable systimer without clearing any flags
 
void vsf_systimer_low_level_int_disable (void)
 
void vsf_systimer_low_level_int_enable (void)
 
void vsf_systimer_set_reload_value (vsf_systimer_tick_t tick_cnt)
 
VSF_CAL_ROOT VSF_CAL_ISR (SysTick_Handler)
 
vsf_err_t vsf_systimer_low_level_init (uintmax_t ticks)
 initialise systimer without enable it
 
void vsf_systimer_prio_set (vsf_arch_prio_t priority)
 
VSF_CAL_ROOT VSF_CAL_ISR (PendSV_Handler)
 
vsf_err_t vsf_arch_swi_init (uint_fast8_t idx, vsf_arch_prio_t priority, vsf_swi_handler_t *handler, void *param)
 initialise a software interrupt !
 
void vsf_arch_swi_trigger (uint_fast8_t idx)
 trigger a software interrupt !
 
vsf_arch_prio_t vsf_get_base_priority (void)
 
vsf_arch_prio_t vsf_set_base_priority (vsf_arch_prio_t priority)
 
vsf_gint_state_t vsf_get_interrupt (void)
 
vsf_gint_state_t vsf_set_interrupt (vsf_gint_state_t prio)
 
vsf_gint_state_t vsf_disable_interrupt (void)
 
vsf_gint_state_t vsf_enable_interrupt (void)
 
int vsf_get_interrupt_id (void)
 
void vsf_arch_sleep (uint_fast32_t mode)
 
void vsf_arch_reset (void)
 
void vsf_arch_shutdown (void)
 
uint_fast16_t bswap_16 (uint_fast16_t value16)
 
uint_fast32_t bswap_32 (uint_fast32_t value32)
 
uint_fast8_t __vsf_arch_clz (uintalu_t a)
 
int_fast8_t __vsf_arch_msb (uintalu_t a)
 
void vsf_arch_add_text_region (vsf_arch_text_region_t *region)
 
uint_fast16_t vsf_arch_get_callstack (uintptr_t sp, uintptr_t *callstack, uint_fast16_t callstack_num)
 
double __aeabi_dadd (double, double)
 
double __aeabi_ddiv (double, double)
 
double __aeabi_dmul (double, double)
 
double __aeabi_drsub (double, double)
 
double __aeabi_dsub (double, double)
 
void __aeabi_cdcmpeq (double, double)
 
void __aeabi_cdcmple (double, double)
 
void __aeabi_cdrcmple (double, double)
 
int __aeabi_dcmpeq (double, double)
 
int __aeabi_dcmplt (double, double)
 
int __aeabi_dcmple (double, double)
 
int __aeabi_dcmpge (double, double)
 
int __aeabi_dcmpgt (double, double)
 
int __aeabi_dcmpun (double, double)
 
float __aeabi_fadd (float, float)
 
float __aeabi_fdiv (float, float)
 
float __aeabi_fmul (float, float)
 
float __aeabi_frsub (float, float)
 
float __aeabi_fsub (float, float)
 
void __aeabi_cfcmpeq (float, float)
 
void __aeabi_cfcmple (float, float)
 
void __aeabi_cfrcmple (float, float)
 
int __aeabi_fcmpeq (float, float)
 
int __aeabi_fcmplt (float, float)
 
int __aeabi_fcmple (float, float)
 
int __aeabi_fcmpge (float, float)
 
int __aeabi_fcmpgt (float, float)
 
int __aeabi_fcmpun (float, float)
 
int __aeabi_d2iz (double)
 
unsigned __aeabi_d2uiz (double)
 
long long __aeabi_d2lz (double)
 
unsigned long long __aeabi_d2ulz (double)
 
int __aeabi_f2iz (float)
 
unsigned __aeabi_f2uiz (float)
 
long long __aeabi_f2lz (float)
 
unsigned long long __aeabi_f2ulz (float)
 
float __aeabi_d2f (double)
 
double __aeabi_f2d (float)
 
double __aeabi_i2d (int)
 
double __aeabi_ui2d (unsigned)
 
double __aeabi_l2d (long long)
 
double __aeabi_ul2d (unsigned long long)
 
float __aeabi_i2f (int)
 
float __aeabi_ui2f (unsigned)
 
float __aeabi_l2f (long long)
 
float __aeabi_ul2f (unsigned long long)
 
long long __aeabi_lmul (long long, long long)
 
lldiv_t __aeabi_ldivmod (long long, long long)
 
ulldiv_t __aeabi_uldivmod (unsigned long long, unsigned long long)
 
long long __aeabi_llsl (long long, int)
 
long long __aeabi_llsr (long long, int)
 
long long __aeabi_lasr (long long, int)
 
int __aeabi_lcmp (long long, long long)
 
int __aeabi_ulcmp (unsigned long long, unsigned long long)
 
int __aeabi_idiv (int, int)
 
unsigned __aeabi_uidiv (unsigned, unsigned)
 
div_t __aeabi_idivmod (int, int)
 
uidiv_return __aeabi_uidivmod (unsigned, unsigned)
 
int __aeabi_idiv0 (int)
 
long long __aeabi_ldiv0 (long long)
 
int __aeabi_uread4 (void *)
 
int __aeabi_uwrite4 (int, void *)
 
long long __aeabi_uread8 (void *)
 
long long __aeabi_uwrite8 (long long, void *)
 
void __aeabi_memcpy8 (void *, const void *, size_t)
 
void __aeabi_memcpy4 (void *, const void *, size_t)
 
void __aeabi_memcpy (void *, const void *, size_t)
 
void __aeabi_memmove8 (void *, const void *, size_t)
 
void __aeabi_memmove4 (void *, const void *, size_t)
 
void __aeabi_memmove (void *, const void *, size_t)
 
void __aeabi_memset8 (void *, size_t, int)
 
void __aeabi_memset4 (void *, size_t, int)
 
void __aeabi_memset (void *, size_t, int)
 
void __aeabi_memclr8 (void *, size_t)
 
void __aeabi_memclr4 (void *, size_t)
 
void __aeabi_memclr (void *, size_t)
 
void * __aeabi_read_tp (void)
 

Variables

__VSF_VPLT_DECORATOR__ vsf_arch_abi_vplt_t vsf_arch_abi_vplt
 

Macro Definition Documentation

◆ __VSF_EDA_CLASS_INHERIT__

#define __VSF_EDA_CLASS_INHERIT__

Typedef Documentation

◆ __vsf_cm_t

typedef struct __vsf_cm_t __vsf_cm_t

Function Documentation

◆ vsf_arch_low_level_init()

bool vsf_arch_low_level_init ( void  )
Note
initialize architecture specific service
Parameters
none
Return values
trueinitialization succeeded.
falseinitialization failed

◆ vsf_systimer_get_tick_elapsed()

vsf_systimer_tick_t vsf_systimer_get_tick_elapsed ( void  )

◆ vsf_systimer_clear_int_pending_bit()

void vsf_systimer_clear_int_pending_bit ( void  )

< clear pending bit

◆ vsf_systimer_reset_counter_value()

void vsf_systimer_reset_counter_value ( void  )

◆ vsf_systimer_low_level_disable()

bool vsf_systimer_low_level_disable ( void  )

disable systimer and return over-flow flag status !

Parameters
none!
Return values
trueoverflow happened !
falseno overflow happened

◆ vsf_systimer_low_level_enable()

void vsf_systimer_low_level_enable ( void  )

only enable systimer without clearing any flags

◆ vsf_systimer_low_level_int_disable()

void vsf_systimer_low_level_int_disable ( void  )

◆ vsf_systimer_low_level_int_enable()

void vsf_systimer_low_level_int_enable ( void  )

◆ vsf_systimer_set_reload_value()

void vsf_systimer_set_reload_value ( vsf_systimer_tick_t  tick_cnt)

◆ VSF_CAL_ISR() [1/2]

VSF_CAL_ROOT VSF_CAL_ISR ( SysTick_Handler  )

◆ vsf_systimer_low_level_init()

vsf_err_t vsf_systimer_low_level_init ( uintmax_t  ticks)

initialise systimer without enable it

◆ vsf_systimer_prio_set()

void vsf_systimer_prio_set ( vsf_arch_prio_t  priority)

◆ VSF_CAL_ISR() [2/2]

VSF_CAL_ROOT VSF_CAL_ISR ( PendSV_Handler  )

◆ vsf_arch_swi_init()

vsf_err_t vsf_arch_swi_init ( uint_fast8_t  idx,
vsf_arch_prio_t  priority,
vsf_swi_handler_t handler,
void *  param 
)

initialise a software interrupt !

Parameters
idxthe index of the software interrupt !
Returns
initialization result in vsf_err_t

◆ vsf_arch_swi_trigger()

void vsf_arch_swi_trigger ( uint_fast8_t  idx)

trigger a software interrupt !

Parameters
idxthe index of the software interrupt

todo: the code is simplified, we need to verify its reilability

◆ vsf_get_base_priority()

vsf_arch_prio_t vsf_get_base_priority ( void  )

◆ vsf_set_base_priority()

vsf_arch_prio_t vsf_set_base_priority ( vsf_arch_prio_t  priority)

◆ vsf_get_interrupt()

vsf_gint_state_t vsf_get_interrupt ( void  )

◆ vsf_set_interrupt()

vsf_gint_state_t vsf_set_interrupt ( vsf_gint_state_t  prio)

◆ vsf_disable_interrupt()

vsf_gint_state_t vsf_disable_interrupt ( void  )

◆ vsf_enable_interrupt()

vsf_gint_state_t vsf_enable_interrupt ( void  )

◆ vsf_get_interrupt_id()

int vsf_get_interrupt_id ( void  )

◆ vsf_arch_sleep()

void vsf_arch_sleep ( uint_fast32_t  mode)

◆ vsf_arch_reset()

void vsf_arch_reset ( void  )

◆ vsf_arch_shutdown()

void vsf_arch_shutdown ( void  )

◆ bswap_16()

uint_fast16_t bswap_16 ( uint_fast16_t  value16)

◆ bswap_32()

uint_fast32_t bswap_32 ( uint_fast32_t  value32)

◆ __vsf_arch_clz()

uint_fast8_t __vsf_arch_clz ( uintalu_t  a)

◆ __vsf_arch_msb()

int_fast8_t __vsf_arch_msb ( uintalu_t  a)

◆ vsf_arch_add_text_region()

void vsf_arch_add_text_region ( vsf_arch_text_region_t region)

◆ vsf_arch_get_callstack()

uint_fast16_t vsf_arch_get_callstack ( uintptr_t  sp,
uintptr_t callstack,
uint_fast16_t  callstack_num 
)

◆ __aeabi_dadd()

double __aeabi_dadd ( double  ,
double   
)
extern

◆ __aeabi_ddiv()

double __aeabi_ddiv ( double  ,
double   
)
extern

◆ __aeabi_dmul()

double __aeabi_dmul ( double  ,
double   
)
extern

◆ __aeabi_drsub()

double __aeabi_drsub ( double  ,
double   
)
extern

◆ __aeabi_dsub()

double __aeabi_dsub ( double  ,
double   
)
extern

◆ __aeabi_cdcmpeq()

void __aeabi_cdcmpeq ( double  ,
double   
)
extern

◆ __aeabi_cdcmple()

void __aeabi_cdcmple ( double  ,
double   
)
extern

◆ __aeabi_cdrcmple()

void __aeabi_cdrcmple ( double  ,
double   
)
extern

◆ __aeabi_dcmpeq()

int __aeabi_dcmpeq ( double  ,
double   
)
extern

◆ __aeabi_dcmplt()

int __aeabi_dcmplt ( double  ,
double   
)
extern

◆ __aeabi_dcmple()

int __aeabi_dcmple ( double  ,
double   
)
extern

◆ __aeabi_dcmpge()

int __aeabi_dcmpge ( double  ,
double   
)
extern

◆ __aeabi_dcmpgt()

int __aeabi_dcmpgt ( double  ,
double   
)
extern

◆ __aeabi_dcmpun()

int __aeabi_dcmpun ( double  ,
double   
)
extern

◆ __aeabi_fadd()

float __aeabi_fadd ( float  ,
float   
)
extern

◆ __aeabi_fdiv()

float __aeabi_fdiv ( float  ,
float   
)
extern

◆ __aeabi_fmul()

float __aeabi_fmul ( float  ,
float   
)
extern

◆ __aeabi_frsub()

float __aeabi_frsub ( float  ,
float   
)
extern

◆ __aeabi_fsub()

float __aeabi_fsub ( float  ,
float   
)
extern

◆ __aeabi_cfcmpeq()

void __aeabi_cfcmpeq ( float  ,
float   
)
extern

◆ __aeabi_cfcmple()

void __aeabi_cfcmple ( float  ,
float   
)
extern

◆ __aeabi_cfrcmple()

void __aeabi_cfrcmple ( float  ,
float   
)
extern

◆ __aeabi_fcmpeq()

int __aeabi_fcmpeq ( float  ,
float   
)
extern

◆ __aeabi_fcmplt()

int __aeabi_fcmplt ( float  ,
float   
)
extern

◆ __aeabi_fcmple()

int __aeabi_fcmple ( float  ,
float   
)
extern

◆ __aeabi_fcmpge()

int __aeabi_fcmpge ( float  ,
float   
)
extern

◆ __aeabi_fcmpgt()

int __aeabi_fcmpgt ( float  ,
float   
)
extern

◆ __aeabi_fcmpun()

int __aeabi_fcmpun ( float  ,
float   
)
extern

◆ __aeabi_d2iz()

int __aeabi_d2iz ( double  )
extern

◆ __aeabi_d2uiz()

unsigned __aeabi_d2uiz ( double  )
extern

◆ __aeabi_d2lz()

long long __aeabi_d2lz ( double  )
extern

◆ __aeabi_d2ulz()

unsigned long long __aeabi_d2ulz ( double  )
extern

◆ __aeabi_f2iz()

int __aeabi_f2iz ( float  )
extern

◆ __aeabi_f2uiz()

unsigned __aeabi_f2uiz ( float  )
extern

◆ __aeabi_f2lz()

long long __aeabi_f2lz ( float  )
extern

◆ __aeabi_f2ulz()

unsigned long long __aeabi_f2ulz ( float  )
extern

◆ __aeabi_d2f()

float __aeabi_d2f ( double  )
extern

◆ __aeabi_f2d()

double __aeabi_f2d ( float  )
extern

◆ __aeabi_i2d()

double __aeabi_i2d ( int  )
extern

◆ __aeabi_ui2d()

double __aeabi_ui2d ( unsigned  )
extern

◆ __aeabi_l2d()

double __aeabi_l2d ( long long  )
extern

◆ __aeabi_ul2d()

double __aeabi_ul2d ( unsigned long long  )
extern

◆ __aeabi_i2f()

float __aeabi_i2f ( int  )
extern

◆ __aeabi_ui2f()

float __aeabi_ui2f ( unsigned  )
extern

◆ __aeabi_l2f()

float __aeabi_l2f ( long long  )
extern

◆ __aeabi_ul2f()

float __aeabi_ul2f ( unsigned long long  )
extern

◆ __aeabi_lmul()

long long __aeabi_lmul ( long long  ,
long long   
)
extern

◆ __aeabi_ldivmod()

lldiv_t __aeabi_ldivmod ( long long  ,
long long   
)
extern

◆ __aeabi_uldivmod()

ulldiv_t __aeabi_uldivmod ( unsigned long long  ,
unsigned long long   
)
extern

◆ __aeabi_llsl()

long long __aeabi_llsl ( long long  ,
int   
)
extern

◆ __aeabi_llsr()

long long __aeabi_llsr ( long long  ,
int   
)
extern

◆ __aeabi_lasr()

long long __aeabi_lasr ( long long  ,
int   
)
extern

◆ __aeabi_lcmp()

int __aeabi_lcmp ( long long  ,
long long   
)
extern

◆ __aeabi_ulcmp()

int __aeabi_ulcmp ( unsigned long long  ,
unsigned long long   
)
extern

◆ __aeabi_idiv()

int __aeabi_idiv ( int  ,
int   
)
extern

◆ __aeabi_uidiv()

unsigned __aeabi_uidiv ( unsigned  ,
unsigned   
)
extern

◆ __aeabi_idivmod()

div_t __aeabi_idivmod ( int  ,
int   
)
extern

◆ __aeabi_uidivmod()

uidiv_return __aeabi_uidivmod ( unsigned  ,
unsigned   
)
extern

◆ __aeabi_idiv0()

int __aeabi_idiv0 ( int  )
extern

◆ __aeabi_ldiv0()

long long __aeabi_ldiv0 ( long long  )
extern

◆ __aeabi_uread4()

int __aeabi_uread4 ( void *  )
extern

◆ __aeabi_uwrite4()

int __aeabi_uwrite4 ( int  ,
void *   
)
extern

◆ __aeabi_uread8()

long long __aeabi_uread8 ( void *  )
extern

◆ __aeabi_uwrite8()

long long __aeabi_uwrite8 ( long long  ,
void *   
)
extern

◆ __aeabi_memcpy8()

void __aeabi_memcpy8 ( void *  ,
const void *  ,
size_t   
)
extern

◆ __aeabi_memcpy4()

void __aeabi_memcpy4 ( void *  ,
const void *  ,
size_t   
)
extern

◆ __aeabi_memcpy()

void __aeabi_memcpy ( void *  ,
const void *  ,
size_t   
)
extern

◆ __aeabi_memmove8()

void __aeabi_memmove8 ( void *  ,
const void *  ,
size_t   
)
extern

◆ __aeabi_memmove4()

void __aeabi_memmove4 ( void *  ,
const void *  ,
size_t   
)
extern

◆ __aeabi_memmove()

void __aeabi_memmove ( void *  ,
const void *  ,
size_t   
)
extern

◆ __aeabi_memset8()

void __aeabi_memset8 ( void *  ,
size_t  ,
int   
)
extern

◆ __aeabi_memset4()

void __aeabi_memset4 ( void *  ,
size_t  ,
int   
)
extern

◆ __aeabi_memset()

void __aeabi_memset ( void *  ,
size_t  ,
int   
)
extern

◆ __aeabi_memclr8()

void __aeabi_memclr8 ( void *  ,
size_t   
)
extern

◆ __aeabi_memclr4()

void __aeabi_memclr4 ( void *  ,
size_t   
)
extern

◆ __aeabi_memclr()

void __aeabi_memclr ( void *  ,
size_t   
)
extern

◆ __aeabi_read_tp()

void * __aeabi_read_tp ( void  )
extern

Variable Documentation

◆ vsf_arch_abi_vplt