18#ifndef __VSF_ARCH_ABSTRACTION_H__
19#define __VSF_ARCH_ABSTRACTION_H__
34#define VSF_SYSTIMER_IMPL_NONE 0
35#define VSF_SYSTIMER_IMPL_REQUEST_RESPONSE 1
36#define VSF_SYSTIMER_IMPL_WITH_NORMAL_TIMER 2
37#define VSF_SYSTIMER_IMPL_WITH_COMP_TIMER 3
38#define VSF_SYSTIMER_IMPL_TICK_MODE 4
43#ifndef VSF_ARCH_ASSERT
44# define VSF_ARCH_ASSERT(...) VSF_ASSERT(__VA_ARGS__)
79#if !defined(VSF_ARCH_HEADER)
82# define VSF_ARCH_HEADER "./rtos/rtos_generic.h"
83# elif defined(__CPU_GENERIC__)
84# if defined(__MACOS__)
85# define VSF_ARCH_HEADER "./generic/macos/macos_generic.h"
86# elif defined(__LINUX__)
87# define VSF_ARCH_HEADER "./generic/linux/linux_generic.h"
89# error not supported generic arch
91# elif (defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M') || __TARGET_PROFILE_M
92# define VSF_ARCH_HEADER "./arm/cortex-m/cortex_m_generic.h"
93# elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'A' || __TARGET_PROFILE_A
94# define VSF_ARCH_HEADER "./arm/cortex-a/cortex_a_generic.h"
95# elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'R' || __TARGET_PROFILE_R
96# define VSF_ARCH_HEADER "./arm/cortex-r/cortex_r_generic.h"
98# elif (defined(__CPU_X86__) || defined(__CPU_X64__)) && defined(__WIN__)
99# define VSF_ARCH_HEADER "./x86/win/win_generic.h"
100# elif (defined(__CPU_X86__) || defined(__CPU_X64__) || defined(__CPU_WEBASSEMBLY__)) && defined(__LINUX__)
101# define VSF_ARCH_HEADER "./generic/linux/linux_generic.h"
102# elif defined(__CPU_MCS51__)
103# define VSF_ARCH_HEADER "./mcs51/mcs51_generic.h"
104# elif defined(__CPU_RV__) || defined(__CPU_RISCV__)
105# define VSF_ARCH_HEADER "./rv/rv_generic.h"
106# elif defined(__CPU_ARM9__)
107# define VSF_ARCH_HEADER "./arm/arm9/arm9_generic.h"
109# warning no supported architecture found, use default arch template!
110# define VSF_ARCH_HEADER "./template/template_generic.h"
113#include VSF_ARCH_HEADER
121#ifndef VSF_ARCH_SWI_NUM
122# define VSF_ARCH_SWI_NUM 0
124#ifndef VSF_DEV_SWI_NUM
125# define VSF_DEV_SWI_NUM 0
129# error "__BYTE_ORDER MUST be defined in arch"
132#define VSF_SWI_NUM (VSF_ARCH_SWI_NUM + VSF_DEV_SWI_NUM)
134#define ___constant_swab16(__x) ((uint16_t)( \
135 (((uint16_t)(__x) & (uint16_t)0x00FFU) << 8) | \
136 (((uint16_t)(__x) & (uint16_t)0xFF00U) >> 8)))
138#define ___constant_swab32(__x) ((uint32_t)( \
139 (((uint32_t)(__x) & (uint32_t)0x000000ffUL) << 24) | \
140 (((uint32_t)(__x) & (uint32_t)0x0000ff00UL) << 8) | \
141 (((uint32_t)(__x) & (uint32_t)0x00ff0000UL) >> 8) | \
142 (((uint32_t)(__x) & (uint32_t)0xff000000UL) >> 24)))
144#define ___constant_swab64(__x) ((uint64_t)( \
145 (((uint64_t)(__x) & (uint64_t)0x00000000000000ffULL) << 56) | \
146 (((uint64_t)(__x) & (uint64_t)0x000000000000ff00ULL) << 40) | \
147 (((uint64_t)(__x) & (uint64_t)0x0000000000ff0000ULL) << 24) | \
148 (((uint64_t)(__x) & (uint64_t)0x00000000ff000000ULL) << 8) | \
149 (((uint64_t)(__x) & (uint64_t)0x000000ff00000000ULL) >> 8) | \
150 (((uint64_t)(__x) & (uint64_t)0x0000ff0000000000ULL) >> 24) | \
151 (((uint64_t)(__x) & (uint64_t)0x00ff000000000000ULL) >> 40) | \
152 (((uint64_t)(__x) & (uint64_t)0xff00000000000000ULL) >> 56)))
154#define bswap16 bswap_16
155#define bswap32 bswap_32
156#define bswap64 bswap_64
157#if __BYTE_ORDER == __BIG_ENDIAN
159# define htole16 bswap_16
161# define le16toh bswap_16
163# define htole32 bswap_32
165# define le32toh bswap_32
167# define htole64 bswap_64
169# define le64toh bswap_64
171# define cpu_to_le16 bswap_16
172# define cpu_to_le32 bswap_32
173# define cpu_to_le64 bswap_64
174# define le16_to_cpu bswap_16
175# define le32_to_cpu bswap_32
176# define le64_to_cpu bswap_64
184# define __constant_cpu_to_le16 ___constant_swab16
185# define __constant_le16_to_cpu ___constant_swab16
186# define __constant_cpu_to_le32 ___constant_swab32
187# define __constant_le32_to_cpu ___constant_swab32
188# define __constant_cpu_to_le64 ___constant_swab64
189# define __constant_le64_to_cpu ___constant_swab64
190# define __constant_cpu_to_be16
191# define __constant_be16_to_cpu
192# define __constant_cpu_to_be32
193# define __constant_be32_to_cpu
194# define __constant_cpu_to_be64
195# define __constant_be64_to_cpu
197# define htobe16 bswap_16
199# define be16toh bswap_16
201# define htobe32 bswap_32
203# define be32toh bswap_32
205# define htobe64 bswap_64
207# define be64toh bswap_64
216# define cpu_to_be16 bswap_16
217# define cpu_to_be32 bswap_32
218# define cpu_to_be64 bswap_64
219# define be16_to_cpu bswap_16
220# define be32_to_cpu bswap_32
221# define be64_to_cpu bswap_64
223# define __constant_cpu_to_le16
224# define __constant_le16_to_cpu
225# define __constant_cpu_to_le32
226# define __constant_le32_to_cpu
227# define __constant_cpu_to_le64
228# define __constant_le64_to_cpu
229# define __constant_cpu_to_be16 ___constant_swab16
230# define __constant_be16_to_cpu ___constant_swab16
231# define __constant_cpu_to_be32 ___constant_swab32
232# define __constant_be32_to_cpu ___constant_swab32
233# define __constant_cpu_to_be64 ___constant_swab64
234# define __constant_be64_to_cpu ___constant_swab64
237#define DECLARE_ENDIAN_FUNC(__bitlen) \
238extern uint_fast##__bitlen##_t cpu_to_le##__bitlen##p(uint##__bitlen##_t *); \
239extern uint_fast##__bitlen##_t cpu_to_be##__bitlen##p(uint##__bitlen##_t *); \
240extern uint_fast##__bitlen##_t le##__bitlen##_to_cpup(uint##__bitlen##_t *); \
241extern uint_fast##__bitlen##_t be##__bitlen##_to_cpup(uint##__bitlen##_t *); \
242extern void cpu_to_le##__bitlen##s(uint##__bitlen##_t *); \
243extern void cpu_to_be##__bitlen##s(uint##__bitlen##_t *); \
244extern void le##__bitlen##_to_cpus(uint##__bitlen##_t *); \
245extern void be##__bitlen##_to_cpus(uint##__bitlen##_t *); \
246extern uint_fast##__bitlen##_t get_unaligned_cpu##__bitlen(const void *); \
247extern uint_fast##__bitlen##_t get_unaligned_le##__bitlen(const void *); \
248extern uint_fast##__bitlen##_t get_unaligned_be##__bitlen(const void *); \
249extern void put_unaligned_cpu##__bitlen(uint_fast##__bitlen##_t, void *); \
250extern void put_unaligned_le##__bitlen(uint_fast##__bitlen##_t, void *); \
251extern void put_unaligned_be##__bitlen(uint_fast##__bitlen##_t, void *);
253#define __vsf_protect_region(__region) \
254 for (vsf_protect_t VSF_MACRO_SAFE_NAME(protect_status), \
255 VSF_MACRO_SAFE_NAME(local_cnt) = 1; \
256 (((__region) != NULL) && VSF_MACRO_SAFE_NAME(local_cnt)--) ? \
257 ((VSF_MACRO_SAFE_NAME(protect_status) = (__region)->enter()), true) : false;\
258 (__region)->leave(VSF_MACRO_SAFE_NAME(protect_status)))
259#define vsf_protect_region(__region) __vsf_protect_region(__region)
260#define vsf_protect_region_exit(__region) continue
262#define vsf_protect_region_simple(__region, ...) \
264 if (__region != NULL) { \
265 vsf_protect_t VSF_MACRO_SAFE_NAME(protect_status) = (__region)->enter();\
267 (__region)->leave(VSF_MACRO_SAFE_NAME(protect_status)); \
277#ifndef __vsf_interrupt_safe
278# if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L
279# define __vsf_interrupt_safe(__code) \
281 vsf_gint_state_t VSF_MACRO_SAFE_NAME(gint_state) = vsf_disable_interrupt();\
283 vsf_set_interrupt(VSF_MACRO_SAFE_NAME(gint_state)); \
286# define __vsf_interrupt_safe(...) \
288 vsf_gint_state_t VSF_MACRO_SAFE_NAME(gint_state) = vsf_disable_interrupt();\
290 vsf_set_interrupt(VSF_MACRO_SAFE_NAME(gint_state)); \
299#ifndef vsf_interrupt_safe
300# define vsf_interrupt_safe() vsf_protect_region(&vsf_protect_region_int)
308#ifndef vsf_interrupt_safe_simple
310# define vsf_interrupt_safe_simple(...) \
311 vsf_protect_region_simple(&vsf_protect_region_int, __VA_ARGS__)
316#define vsf_protect_interrupt() vsf_disable_interrupt()
317#define vsf_unprotect_interrupt(__state) vsf_set_interrupt(__state)
318#define vsf_protect_none() (0)
319#define vsf_unprotect_none(__state) VSF_UNUSED_PARAM(__state)
321#define vsf_protect_int vsf_protect_interrupt
322#define vsf_unprotect_int vsf_unprotect_interrupt
324#define __vsf_protect(__type) vsf_protect_##__type
325#define __vsf_unprotect(__type) vsf_unprotect_##__type
326#define vsf_protect(__type) __vsf_protect(__type)
327#define vsf_unprotect(__type) __vsf_unprotect(__type)
332# define vsf_atom64_op(__ptr, ...) \
334 vsf_protect_t VSF_MACRO_SAFE_NAME(orig) = vsf_protect_int(); \
335 int64_t _ = (*(int64_t *)(__ptr)); \
336 *(int64_t *)(__ptr) = (__VA_ARGS__); \
337 vsf_unprotect_int(VSF_MACRO_SAFE_NAME(orig)); \
343# define vsf_atom32_op(__ptr, ...) \
345 vsf_protect_t VSF_MACRO_SAFE_NAME(orig) = vsf_protect_int(); \
346 int32_t _ = (*(int32_t *)(__ptr)); \
347 *(int32_t *)(__ptr) = (__VA_ARGS__); \
348 vsf_unprotect_int(VSF_MACRO_SAFE_NAME(orig)); \
354# define vsf_atom16_op(__ptr, ...) \
356 vsf_protect_t VSF_MACRO_SAFE_NAME(orig) = vsf_protect_int(); \
357 int16_t _ = (*(int16_t *)(__ptr)); \
358 *(int16_t *)(__ptr) = (__VA_ARGS__); \
359 vsf_unprotect_int(VSF_MACRO_SAFE_NAME(orig)); \
365# define vsf_atom8_op(__ptr, ...) \
367 vsf_protect_t VSF_MACRO_SAFE_NAME(orig) = vsf_protect_int(); \
368 int8_t _ = (*(int8_t *)(__ptr)); \
369 *(int8_t *)(__ptr) = (__VA_ARGS__); \
370 vsf_unprotect_int(VSF_MACRO_SAFE_NAME(orig)); \
376# define vsf_atom_add(__bitlen, __ptr, __value) \
377 VSF_MCONNECT(vsf_atom, __bitlen, _op)((__ptr), _ + (__value))
380# define vsf_atom_dec(__bitlen, __ptr, __value) \
381 vsf_atom_add(__bitlen, (__ptr), - (__value))
384# define vsf_atom_or(__bitlen, __ptr, __value) \
385 VSF_MCONNECT(vsf_atom, __bitlen, _op)((__ptr), _ | (__value))
388# define vsf_atom_and(__bitlen, __ptr, __value) \
389 VSF_MCONNECT(vsf_atom, __bitlen, _op)((__ptr), _ & (__value))
392# define vsf_atom_xor(__bitlen, __ptr, __value) \
393 VSF_MCONNECT(vsf_atom, __bitlen, _op)((__ptr), _ ^ (__value))
396# define vsf_atom_xchg(__bitlen, __ptr, __new_value) \
397 VSF_MCONNECT(vsf_atom, __bitlen, _op)((__ptr), (__new_value))
401#define vsf_arch_host_invoke_ctx_t(__name) VSF_MCONNECT(__name, _ctx_t)
402#define declare_vsf_arch_host_invoke(__name) \
403 typedef struct vsf_arch_host_invoke_ctx_t(__name) \
404 vsf_arch_host_invoke_ctx_t(__name); \
405 typedef struct VSF_MCONNECT(__name, _t) VSF_MCONNECT(__name, _t); \
406 extern void VSF_MCONNECT(__name, _callback_t) \
407 (vsf_arch_host_invoke_ctx_t(__name) *ctx); \
408 extern VSF_MCONNECT(__name, _t) VSF_MCONNECT(__name, _instance);
409#define dcl_vsf_arch_host_invoke declare_vsf_arch_host_invoke
410#define define_vsf_arch_host_invoke(__name, ...) \
411 typedef struct vsf_arch_host_invoke_ctx_t(__name) { \
414 } vsf_arch_host_invoke_ctx_t(__name); \
415 typedef struct VSF_MCONNECT(__name, _t) { \
416 implement(vsf_arch_irq_thread_t); \
417 vsf_arch_irq_request_t request; \
419 vsf_arch_host_invoke_ctx_t(__name) ctx; \
420 } VSF_MCONNECT(__name, _t);
421#define def_vsf_arch_host_invoke define_vsf_arch_host_invoke
422#define implement_vsf_arch_host_invoke(__name) \
423 VSF_MCONNECT(__name, _t) VSF_MCONNECT(__name, _instance); \
424 extern void VSF_MCONNECT(__name, _callback_t) \
425 (vsf_arch_host_invoke_ctx_t(__name) *ctx); \
426 static void VSF_MCONNECT(__name, _thread)(void *arg) \
429 VSF_MCONNECT(__name, _t) *ctx = arg; \
430 __vsf_arch_irq_set_background(&ctx->use_as__vsf_arch_irq_thread_t); \
432 __vsf_arch_irq_request_pend(&ctx->request); \
433 VSF_MCONNECT(__name, _callback_t)(&ctx->ctx); \
435 __vsf_arch_irq_start(&ctx->use_as__vsf_arch_irq_thread_t); \
436 caller = ctx->caller; \
437 if (caller != NULL) { \
438 ctx->caller = NULL; \
439 vsf_eda_post_evt(caller, VSF_EVT_USER); \
441 __vsf_arch_irq_end(&ctx->use_as__vsf_arch_irq_thread_t, false); \
444 void VSF_MCONNECT(__name, _callback_t)(vsf_arch_host_invoke_ctx_t(__name) *_)
445#define imp_vsf_arch_host_invoke implement_vsf_arch_host_invoke
446#define initialize_vsf_arch_host_invoke(__name, __priority) \
448 memset(&VSF_MCONNECT(__name, _instance), 0, \
449 sizeof(VSF_MCONNECT(__name, _t))); \
450 __vsf_arch_irq_request_init(&VSF_MCONNECT(__name, _instance).request);\
451 __vsf_arch_irq_init( \
452 &VSF_MCONNECT(__name, _instance).use_as__vsf_arch_irq_thread_t,\
453 VSF_STR(__name), VSF_MCONNECT(__name, _thread), (__priority));\
455#define init_vsf_arch_host_invoke initialize_vsf_arch_host_invoke
456#define vsf_arch_host_invoke_nb(__name, __eda_ptr, __ctx_ptr) \
458 VSF_MCONNECT(__name, _instance).ctx = *(__ctx_ptr); \
459 VSF_MCONNECT(__name, _instance).caller = (__eda_ptr); \
460 __vsf_arch_irq_request_send(&VSF_MCONNECT(__name, _instance).request);\
462#define vsf_arch_host_invoke_get_result_nb(__name, __ctx_ptr) \
464 *(__ctx_ptr) = VSF_MCONNECT(__name, _instance).ctx; \
466#define vsf_arch_host_invoke_in_thread(__name, __ctx_ptr) \
468 vsf_eda_t VSF_MACRO_SAFE_NAME(eda) = vsf_eda_get_cur(); \
469 VSF_ARCH_ASSERT(VSF_MACRO_SAFE_NAME(eda) != NULL); \
470 vsf_arch_host_invoke_nb(__name, VSF_MACRO_SAFE_NAME(eda), (__ctx_ptr));\
471 vsf_thread_wfe(VSF_EVT_USER); \
472 vsf_arch_host_invoke_get_result_nb(__name, __ctx_ptr); \
477#if VSF_ARCH_PROVIDE_HEAP == ENABLED
483# if VSF_ARCH_HEAP_HAS_STATISTICS == ENABLED
514#if VSF_APPLET_USE_ARCH == ENABLED
522# ifndef __VSF_APPLET__
527#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_ARCH_LIB__))\
528 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_APPLET_USE_ARCH == ENABLED
530#ifndef VSF_APPLET_ARCH_VPLT
531# define VSF_APPLET_ARCH_VPLT \
532 ((vsf_arch_vplt_t *)(((vsf_vplt_t *)vsf_vplt((void *)0))->arch_vplt))
535#define VSF_APPLET_ARCH_ENTRY(__NAME) \
536 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_APPLET_ARCH_VPLT, __NAME)
537#define VSF_APPLET_ARCH_IMP(...) \
538 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_APPLET_ARCH_VPLT, __VA_ARGS__)
550 return VSF_APPLET_ARCH_ENTRY(bswap_64)(
value);
588#ifdef VSF_SYSTIMER_CFG_IMPL_MODE
595extern uint32_t vsf_systimer_get_freq(
void);
vsf_err_t
Definition __type.h:42
uint_fast8_t uintalu_t
Definition type.h:88
vsf_arch_prio_t
Definition cortex_a_generic.h:88
uint64_t vsf_systimer_tick_t
Definition cortex_a_generic.h:73
void vsf_systimer_prio_set(vsf_arch_prio_t priority)
Definition cortex_m_generic.c:185
vsf_systimer_tick_t vsf_systimer_get(void)
Definition linux_generic.c:402
void vsf_systimer_set_idle(void)
Definition linux_generic.c:398
vsf_systimer_tick_t vsf_systimer_tick_to_us(vsf_systimer_tick_t tick)
Definition linux_generic.c:445
bool vsf_systimer_is_due(vsf_systimer_tick_t due)
Definition linux_generic.c:430
vsf_systimer_tick_t vsf_systimer_ms_to_tick(uint_fast32_t time_ms)
Definition linux_generic.c:440
vsf_systimer_tick_t vsf_systimer_us_to_tick(uint_fast32_t time_us)
Definition linux_generic.c:435
vsf_systimer_tick_t vsf_systimer_tick_to_ms(vsf_systimer_tick_t tick)
Definition linux_generic.c:450
vsf_err_t vsf_systimer_start(void)
Definition linux_generic.c:390
bool vsf_systimer_set(vsf_systimer_tick_t due)
Definition linux_generic.c:409
unsigned int uint32_t
Definition lvgl.h:43
uint32_t uintptr_t
Definition stdint.h:38
unsigned char uint_fast8_t
Definition stdint.h:23
unsigned int uint_fast32_t
Definition stdint.h:27
unsigned short uint_fast16_t
Definition stdint.h:25
unsigned long long uint_fast64_t
Definition stdint.h:29
char int_fast8_t
Definition stdint.h:22
Definition vsf_arch_abstraction.h:484
uint32_t used_size
Definition vsf_arch_abstraction.h:486
uint32_t all_size
Definition vsf_arch_abstraction.h:485
Definition vsf_arch_abstraction.h:60
vsf_arch_text_region_t * next
Definition vsf_arch_abstraction.h:61
uintptr_t size
Definition vsf_arch_abstraction.h:63
uintptr_t start
Definition vsf_arch_abstraction.h:62
Definition vsf_arch_abstraction.h:515
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(bswap_64)
vsf_vplt_info_t info
Definition vsf_arch_abstraction.h:516
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(bswap_16)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(bswap_32)
Definition vsf_arch_abstraction.h:54
void(* leave)(vsf_protect_t orig)
Definition vsf_arch_abstraction.h:56
vsf_protect_t(* enter)(void)
Definition vsf_arch_abstraction.h:55
uint_fast32_t bswap_32(uint_fast32_t)
Definition cortex_a_generic.c:160
vsf_err_t vsf_swi_init(uint_fast8_t idx, vsf_arch_prio_t priority, vsf_swi_handler_t *handler, void *param)
Definition vsf_arch_abstraction.c:511
const vsf_protect_region_t vsf_protect_region_int
Definition vsf_arch_abstraction.c:191
uint_fast8_t vsf_clz32(uint_fast32_t)
Definition vsf_arch_abstraction.c:343
uintalu_t vsf_protect_t
Definition vsf_arch_abstraction.h:53
int_fast8_t vsf_ffs32(uint_fast32_t)
Definition vsf_arch_abstraction.c:412
const vsf_protect_region_t vsf_protect_region_none
Definition vsf_arch_abstraction.c:196
void vsf_arch_shutdown(void)
Definition cortex_m_generic.c:402
void vsf_arch_heap_free(void *buffer)
Definition linux_generic.c:567
unsigned int vsf_arch_heap_alignment(void)
Definition linux_generic.c:573
void vsf_arch_reset(void)
Definition cortex_m_generic.c:396
#define DECLARE_ENDIAN_FUNC(__bitlen)
Definition vsf_arch_abstraction.h:237
void * vsf_arch_heap_malloc(uint_fast32_t size, uint_fast32_t alignment)
Definition linux_generic.c:519
vsf_gint_state_t vsf_disable_interrupt(void)
Definition arm9_generic.c:176
vsf_irq_handler_t vsf_swi_handler_t
Definition vsf_arch_abstraction.h:51
vsf_arch_prio_t vsf_get_base_priority(void)
Definition cortex_m_generic.c:262
vsf_gint_state_t vsf_get_interrupt(void)
Definition arm9_generic.c:164
void * vsf_arch_heap_realloc(void *buffer, uint_fast32_t size)
Definition linux_generic.c:542
void vsf_swi_trigger(uint_fast8_t idx)
Definition vsf_arch_abstraction.c:469
void vsf_irq_handler_t(void *p)
Definition vsf_arch_abstraction.h:50
void vsf_arch_heap_statistics(vsf_arch_heap_statistics_t *statistics)
Definition common.c:108
void vsf_arch_sleep(uint_fast32_t mode)
arch sleep, will enable global interrupt for wakeup !
Definition arm9_generic.c:193
__VSF_VPLT_DECORATOR__ vsf_arch_vplt_t vsf_arch_vplt
Definition vsf_arch_abstraction.c:1100
void vsf_arch_swi_trigger(uint_fast8_t idx)
trigger a software interrupt !
Definition cortex_m_generic.c:242
uint_fast16_t bswap_16(uint_fast16_t)
Definition cortex_a_generic.c:155
vsf_gint_state_t vsf_enable_interrupt(void)
Definition arm9_generic.c:181
uint_fast32_t vsf_arch_heap_size(void *buffer)
Definition linux_generic.c:578
vsf_arch_prio_t vsf_set_base_priority(vsf_arch_prio_t priority)
Definition cortex_m_generic.c:267
int_fast8_t vsf_msb32(uint_fast32_t)
Definition vsf_arch_abstraction.c:378
int vsf_get_interrupt_id(void)
Definition cortex_m_generic.c:370
vsf_gint_state_t vsf_set_interrupt(vsf_gint_state_t level)
Definition arm9_generic.c:169
int_fast8_t vsf_ffz32(uint_fast32_t)
Definition vsf_arch_abstraction.c:447
vk_av_control_value_t value
Definition vsf_audio.h:171
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165
uint_fast32_t alignment
Definition vsf_heap.h:135
uint32_t size
Definition vsf_memfs.h:50