From 91c7ea97cb231f38ccd018203ba41c5b41a58da8 Mon Sep 17 00:00:00 2001 From: vsfos Date: Sat, 12 Aug 2023 00:48:28 +0800 Subject: [PATCH] [arch] add VSF_APPLET_USE_ARCH_ABI --- .../hal/arch/arm/cortex-m/cortex_m_generic.c | 168 +++++++++++++ .../hal/arch/arm/cortex-m/cortex_m_generic.h | 79 ++++++ source/shell/sys/linux/vsf_linux.c | 236 +++++++++--------- source/shell/sys/linux/vsf_linux_cfg.h | 2 +- source/vsf_cfg.h | 1 + 5 files changed, 368 insertions(+), 118 deletions(-) diff --git a/source/hal/arch/arm/cortex-m/cortex_m_generic.c b/source/hal/arch/arm/cortex-m/cortex_m_generic.c index 407395dd0..8e610a4c9 100644 --- a/source/hal/arch/arm/cortex-m/cortex_m_generic.c +++ b/source/hal/arch/arm/cortex-m/cortex_m_generic.c @@ -406,4 +406,172 @@ int_fast8_t __vsf_arch_msb(uintalu_t a) return 31 - (int_fast8_t)__CLZ(a); } +/*----------------------------------------------------------------------------* + * arch abi for applet * + *----------------------------------------------------------------------------*/ + +#if VSF_APPLET_USE_ARCH_ABI == ENABLED && !defined(__VSF_APPLET__) +//typedef struct { +// long long quot; +// long long rem; +//} lldiv_t; +typedef struct { + unsigned long long quot; + unsigned long long rem; +} ulldiv_t; +typedef struct { + int quot; + int rem; +} idiv_return; +typedef struct { + unsigned quot; + unsigned rem; +} uidiv_return; + +extern double __aeabi_dadd(double, double); +extern double __aeabi_ddiv(double, double); +extern double __aeabi_dmul(double, double); +extern double __aeabi_drsub(double, double); +extern double __aeabi_dsub(double, double); +extern void __aeabi_cdcmpeq(double, double); +extern void __aeabi_cdcmple(double, double); +extern void __aeabi_cdrcmple(double, double); +extern int __aeabi_dcmpeq(double, double); +extern int __aeabi_dcmplt(double, double); +extern int __aeabi_dcmple(double, double); +extern int __aeabi_dcmpge(double, double); +extern int __aeabi_dcmpgt(double, double); +extern int __aeabi_dcmpun(double, double); +extern float __aeabi_fadd(float, float); +extern float __aeabi_fdiv(float, float); +extern float __aeabi_fmul(float, float); +extern float __aeabi_frsub(float, float); +extern float __aeabi_fsub(float, float); +extern void __aeabi_cfcmpeq(float, float); +extern void __aeabi_cfcmple(float, float); +extern void __aeabi_cfrcmple(float, float); +extern int __aeabi_fcmpeq(float, float); +extern int __aeabi_fcmplt(float, float); +extern int __aeabi_fcmple(float, float); +extern int __aeabi_fcmpge(float, float); +extern int __aeabi_fcmpgt(float, float); +extern int __aeabi_fcmpun(float, float); +extern int __aeabi_d2iz(double); +extern unsigned __aeabi_d2uiz(double); +extern long long __aeabi_d2lz(double); +extern unsigned long long __aeabi_d2ulz(double); +extern int __aeabi_f2iz(float); +extern unsigned __aeabi_f2uiz(float); +extern long long __aeabi_f2lz(float); +extern unsigned long long __aeabi_f2ulz(float); +extern float __aeabi_d2f(double); +extern double __aeabi_f2d(float); +extern double __aeabi_i2d(int); +extern double __aeabi_ui2d(unsigned); +extern double __aeabi_l2d(long long); +extern double __aeabi_ul2d(unsigned long long); +extern float __aeabi_i2f(int); +extern float __aeabi_ui2f(unsigned); +extern float __aeabi_l2f(long long); +extern float __aeabi_ul2f(unsigned long long); +extern long long __aeabi_lmul(long long, long long); +extern lldiv_t __aeabi_ldivmod(long long, long long); +extern ulldiv_t __aeabi_uldivmod(unsigned long long, unsigned long long); +extern long long __aeabi_llsl(long long, int); +extern long long __aeabi_llsr(long long, int); +extern long long __aeabi_lasr(long long, int); +extern int __aeabi_lcmp(long long, long long); +extern int __aeabi_ulcmp(unsigned long long, unsigned long long); +extern int __aeabi_idiv(int, int); +extern unsigned __aeabi_uidiv(unsigned, unsigned); +extern idiv_return __aeabi_idivmod(int, int); +extern uidiv_return __aeabi_uidivmod(unsigned, unsigned); +extern int __aeabi_idiv0(int); +extern long long __aeabi_ldiv0(long long); +extern int __aeabi_uread4(void *); +extern int __aeabi_uwrite4(int, void *); +extern long long __aeabi_uread8(void *); +extern long long __aeabi_uwrite8(long long, void *); +extern void __aeabi_memcpy8(void *, const void *, size_t); +extern void __aeabi_memcpy4(void *, const void *, size_t); +extern void __aeabi_memcpy(void *, const void *, size_t); +extern void __aeabi_memmove8(void *, const void *, size_t); +extern void __aeabi_memmove4(void *, const void *, size_t); +extern void __aeabi_memmove(void *, const void *, size_t); +extern void __aeabi_memset8(void *, size_t, int); +extern void __aeabi_memset4(void *, size_t, int); +extern void __aeabi_memset(void *, size_t, int); +extern void __aeabi_memclr8(void *, size_t); +extern void __aeabi_memclr4(void *, size_t); +extern void __aeabi_memclr(void *, size_t); +extern void *__aeabi_read_tp(void); + +__VSF_VPLT_DECORATOR__ vsf_arch_abi_vplt_t vsf_arch_abi_vplt = { + VSF_APPLET_VPLT_INFO(vsf_arch_abi_vplt_t, 0, 0, true), + + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_cdcmpeq), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_cdcmple), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_cdrcmple), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_cfcmpeq), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_cfcmple), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_cfrcmple), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_ldivmod), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_uldivmod), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_idivmod), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_uidivmod), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_d2f), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_f2d), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_lmul), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_llsl), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_llsr), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_lasr), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_lcmp), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_ulcmp), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_idiv), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_uidiv), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_uread4), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_uwrite4), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_uread8), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_uwrite8), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_dadd), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_ddiv), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_dmul), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_drsub), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_dsub), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_dcmpeq), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_dcmplt), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_dcmple), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_dcmpge), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_dcmpgt), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_dcmpun), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_fadd), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_fdiv), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_fmul), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_frsub), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_fsub), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_fcmpeq), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_fcmplt), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_fcmple), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_fcmpge), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_fcmpgt), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_fcmpun), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_d2iz), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_d2uiz), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_d2lz), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_d2ulz), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_f2iz), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_f2uiz), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_f2lz), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_f2ulz), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_i2d), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_ui2d), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_l2d), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_ul2d), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_i2f), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_ui2f), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_l2f), + VSF_APPLET_VPLT_ENTRY_FUNC(__aeabi_ul2f), +}; +#endif + /* EOF */ diff --git a/source/hal/arch/arm/cortex-m/cortex_m_generic.h b/source/hal/arch/arm/cortex-m/cortex_m_generic.h index b0a78e711..df0cc6e6c 100644 --- a/source/hal/arch/arm/cortex-m/cortex_m_generic.h +++ b/source/hal/arch/arm/cortex-m/cortex_m_generic.h @@ -19,6 +19,7 @@ #define __CORTEX_M_GENERIC_H__ /*============================ INCLUDES ======================================*/ + #include "hal/vsf_hal_cfg.h" #define __VSF_HEADER_ONLY_SHOW_ARCH_INFO__ @@ -30,6 +31,7 @@ #ifdef __cplusplus extern "C" { #endif + /*============================ MACROS ========================================*/ #ifndef __LITTLE_ENDIAN @@ -110,6 +112,83 @@ typedef enum vsf_arch_prio_t { vsf_arch_prio_highest = ((VSF_ARCH_PRI_NUM - 1 - (__vsf_arch_prio_index_number - 1))) & 0xFF , } vsf_arch_prio_t; +#ifndef VSF_APPLET_USE_ARCH_ABI +# define VSF_APPLET_USE_ARCH_ABI ENABLED +#endif +#if VSF_APPLET_USE_ARCH_ABI == ENABLED +// functions in section 4 of "Run-Time ABI for the ARM Architecture" +// refer to: https://github.com/ARM-software/abi-aa/releases/download/2023Q1/rtabi32.pdf +typedef struct vsf_arch_abi_vplt_t { + vsf_vplt_info_t info; + + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_cdcmpeq); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_cdcmple); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_cdrcmple); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_cfcmpeq); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_cfcmple); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_cfrcmple); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_ldivmod); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_uldivmod); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_idivmod); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_uidivmod); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_d2f); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_f2d); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_lmul); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_llsl); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_llsr); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_lasr); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_lcmp); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_ulcmp); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_idiv); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_uidiv); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_uread4); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_uwrite4); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_uread8); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_uwrite8); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_dadd); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_ddiv); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_dmul); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_drsub); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_dsub); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_dcmpeq); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_dcmplt); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_dcmple); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_dcmpge); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_dcmpgt); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_dcmpun); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_fadd); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_fdiv); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_fmul); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_frsub); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_fsub); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_fcmpeq); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_fcmplt); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_fcmple); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_fcmpge); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_fcmpgt); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_fcmpun); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_d2iz); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_d2uiz); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_d2lz); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_d2ulz); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_f2iz); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_f2uiz); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_f2lz); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_f2ulz); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_i2d); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_ui2d); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_l2d); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_ul2d); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_i2f); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_ui2f); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_l2f); + VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__aeabi_ul2f); +} vsf_arch_abi_vplt_t; +# ifndef __VSF_APPLET__ +extern __VSF_VPLT_DECORATOR__ vsf_arch_abi_vplt_t vsf_arch_abi_vplt; +# endif +#endif + /*============================ GLOBAL VARIABLES ==============================*/ /*============================ LOCAL VARIABLES ===============================*/ /*============================ PROTOTYPES ====================================*/ diff --git a/source/shell/sys/linux/vsf_linux.c b/source/shell/sys/linux/vsf_linux.c index f7d50fff8..57c763293 100644 --- a/source/shell/sys/linux/vsf_linux.c +++ b/source/shell/sys/linux/vsf_linux.c @@ -4755,191 +4755,193 @@ __VSF_VPLT_DECORATOR__ vsf_linux_vplt_t vsf_linux_vplt = { VSF_APPLET_VPLT_INFO(vsf_linux_vplt_t, 0, 0, false), .applet_vplt = (void *)&vsf_applet_vplt, -# if VSF_APPLET_USE_ARCH == ENABLED +#if VSF_APPLET_USE_ARCH == ENABLED .arch_vplt = (void *)&vsf_arch_vplt, -# endif -# if VSF_APPLET_USE_SERVICE == ENABLED +#endif +#if VSF_APPLET_USE_SERVICE == ENABLED .service_vplt = (void *)&vsf_service_vplt, -# endif -// libc_arch_vplt = (void *)&vsf_libc_arch_vplt, +#endif +#if VSF_APPLET_USE_ARCH_ABI == ENABLED + .arch_abi_vplt = (void *)&vsf_arch_abi_vplt, +#endif .fundmental_vplt = (void *)&vsf_linux_fundmental_vplt, -# if VSF_LINUX_APPLET_USE_LIBC_STDIO == ENABLED +#if VSF_LINUX_APPLET_USE_LIBC_STDIO == ENABLED .libc_stdio_vplt = (void *)&vsf_linux_libc_stdio_vplt, -# endif -# if VSF_LINUX_APPLET_USE_LIBC_STDLIB == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_LIBC_STDLIB == ENABLED .libc_stdlib_vplt = (void *)&vsf_linux_libc_stdlib_vplt, -# endif -# if VSF_LINUX_APPLET_USE_LIBC_STRING == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_LIBC_STRING == ENABLED .libc_string_vplt = (void *)&vsf_linux_libc_string_vplt, -# endif -# if VSF_LINUX_APPLET_USE_LIBC_CTYPE == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_LIBC_CTYPE == ENABLED .libc_ctype_vplt = (void *)&vsf_linux_libc_ctype_vplt, -# endif -# if VSF_LINUX_APPLET_USE_LIBC_TIME == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_LIBC_TIME == ENABLED .libc_time_vplt = (void *)&vsf_linux_libc_time_vplt, -# endif -# if VSF_LINUX_APPLET_USE_LIBC_SETJMP == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_LIBC_SETJMP == ENABLED .libc_setjmp_vplt = (void *)&vsf_linux_libc_setjmp_vplt, -# endif -# if VSF_LINUX_APPLET_USE_LIBC_ASSERT == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_LIBC_ASSERT == ENABLED .libc_assert_vplt = (void *)&vsf_linux_libc_assert_vplt, -# endif -# if VSF_LINUX_APPLET_USE_LIBC_MATH == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_LIBC_MATH == ENABLED .libc_math_vplt = (void *)&vsf_linux_libc_math_vplt, -# endif +#endif -# if VSF_LINUX_APPLET_USE_MNTENT == ENABLED +#if VSF_LINUX_APPLET_USE_MNTENT == ENABLED .mntent_vplt = (void *)&vsf_linux_mntent_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_EPOLL == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_EPOLL == ENABLED .sys_epoll_vplt = (void *)&vsf_linux_sys_epoll_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_EVENTFD == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_EVENTFD == ENABLED .sys_eventfd_vplt = (void *)&vsf_linux_sys_eventfd_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_RANDOM == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_RANDOM == ENABLED .sys_random_vplt = (void *)&vsf_linux_sys_random_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_SELECT == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_SELECT == ENABLED .sys_select_vplt = (void *)&vsf_linux_sys_select_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_SHM == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_SHM == ENABLED .sys_shm_vplt = (void *)&vsf_linux_sys_shm_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_STAT == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_STAT == ENABLED .sys_stat_vplt = (void *)&vsf_linux_sys_stat_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_MMAN == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_MMAN == ENABLED .sys_mman_vplt = (void *)&vsf_linux_sys_mman_vplt, -# endif -# if VSF_KERNEL_CFG_EDA_SUPPORT_TIMER == ENABLED -# if VSF_LINUX_APPLET_USE_SYS_TIME == ENABLED +#endif +#if VSF_KERNEL_CFG_EDA_SUPPORT_TIMER == ENABLED +# if VSF_LINUX_APPLET_USE_SYS_TIME == ENABLED .sys_time_vplt = (void *)&vsf_linux_sys_time_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_TIMES == ENABLED +# endif +# if VSF_LINUX_APPLET_USE_SYS_TIMES == ENABLED .sys_times_vplt = (void *)&vsf_linux_sys_times_vplt, -# endif # endif -# if VSF_LINUX_APPLET_USE_SYS_WAIT == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_WAIT == ENABLED .sys_wait_vplt = (void *)&vsf_linux_sys_wait_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_UTSNAME == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_UTSNAME == ENABLED .sys_utsname_vplt = (void *)&vsf_linux_sys_utsname_vplt, -# endif -# if VSF_LINUX_USE_SOCKET == ENABLED && VSF_LINUX_APPLET_USE_SYS_SOCKET == ENABLED +#endif +#if VSF_LINUX_USE_SOCKET == ENABLED && VSF_LINUX_APPLET_USE_SYS_SOCKET == ENABLED .sys_socket_vplt = (void *)&vsf_linux_sys_socket_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_SENDFILE == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_SENDFILE == ENABLED .sys_sendfile_vplt = (void *)&vsf_linux_sys_sendfile_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_REBOOT == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_REBOOT == ENABLED .sys_reboot_vplt = (void *)&vsf_linux_sys_reboot_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_FILE == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_FILE == ENABLED .sys_file_vplt = (void *)&vsf_linux_sys_file_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_PRCTL == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_PRCTL == ENABLED .sys_prctl_vplt = (void *)&vsf_linux_sys_prctl_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_EVENT == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_EVENT == ENABLED .sys_event_vplt = (void *)&vsf_linux_sys_event_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_STATFS == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_STATFS == ENABLED .sys_statfs_vplt = (void *)&vsf_linux_sys_statfs_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_CAPABILITY == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_CAPABILITY == ENABLED .sys_capability_vplt = (void *)&vsf_linux_sys_capability_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_TIMEX == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_TIMEX == ENABLED .sys_timex_vplt = (void *)&vsf_linux_sys_timex_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_SYSMACROS == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_SYSMACROS == ENABLED .sys_sysmacros_vplt = (void *)&vsf_linux_sys_sysmacros_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_STATVFS == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_STATVFS == ENABLED .sys_statvfs_vplt = (void *)&vsf_linux_sys_statvfs_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_RESOURCE == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_RESOURCE == ENABLED .sys_resource_vplt = (void *)&vsf_linux_sys_resource_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SYS_INFO == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SYS_INFO == ENABLED .sys_info_vplt = (void *)&vsf_linux_sys_info_vplt, -# endif +#endif -# if VSF_LINUX_APPLET_USE_UNISTD == ENABLED +#if VSF_LINUX_APPLET_USE_UNISTD == ENABLED .unistd_vplt = (void *)&vsf_linux_unistd_vplt, -# endif -# if VSF_LINUX_APPLET_USE_ERRNO == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_ERRNO == ENABLED .errno_vplt = (void *)&vsf_linux_errno_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SIGNAL == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SIGNAL == ENABLED .signal_vplt = (void *)&vsf_linux_signal_vplt, -# endif -# if VSF_LINUX_APPLET_USE_PTHREAD == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_PTHREAD == ENABLED .pthread_vplt = (void *)&vsf_linux_pthread_vplt, -# endif -# if VSF_LINUX_APPLET_USE_POLL == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_POLL == ENABLED .poll_vplt = (void *)&vsf_linux_poll_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SEMAPHORE == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SEMAPHORE == ENABLED .semaphore_vplt = (void *)&vsf_linux_semaphore_vplt, -# endif -# if VSF_LINUX_APPLET_USE_DIRENT == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_DIRENT == ENABLED .dirent_vplt = (void *)&vsf_linux_dirent_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SPAWN == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SPAWN == ENABLED .spawn_vplt = (void *)&vsf_linux_spawn_vplt, -# endif +#endif #if VSF_LINUX_APPLET_USE_TERMIOS == ENABLED .termios_vplt = (void *)&vsf_linux_termios_vplt, #endif -# if VSF_LINUX_APPLET_USE_FCNTL == ENABLED +#if VSF_LINUX_APPLET_USE_FCNTL == ENABLED .fcntl_vplt = (void *)&vsf_linux_fcntl_vplt, -# endif -# if VSF_LINUX_APPLET_USE_SCHED == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_SCHED == ENABLED .sched_vplt = (void *)&vsf_linux_sched_vplt, -# endif -# if VSF_LINUX_SOCKET_USE_INET == ENABLED -# if VSF_LINUX_APPLET_USE_IFADDRS == ENABLED +#endif +#if VSF_LINUX_SOCKET_USE_INET == ENABLED +# if VSF_LINUX_APPLET_USE_IFADDRS == ENABLED .ifaddrs_vplt = (void *)&vsf_linux_ifaddrs_vplt, -# endif -# if VSF_LINUX_APPLET_USE_ARPA_INET == ENABLED +# endif +# if VSF_LINUX_APPLET_USE_ARPA_INET == ENABLED .arpa_inet_vplt = (void *)&vsf_linux_arpa_inet_vplt, -# endif -# if VSF_LINUX_APPLET_USE_NET_IF == ENABLED +# endif +# if VSF_LINUX_APPLET_USE_NET_IF == ENABLED .net_if_vplt = (void *)&vsf_linux_net_if_vplt, -# endif # endif -# if VSF_LINUX_APPLET_USE_DLFCN == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_DLFCN == ENABLED .dlfcn_vplt = (void *)&vsf_linux_dlfcn_vplt, -# endif -# if VSF_LINUX_APPLET_USE_GLOB == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_GLOB == ENABLED .glob_vplt = (void *)&vsf_linux_glob_vplt, -# endif -# if VSF_LINUX_SOCKET_USE_INET == ENABLED && VSF_LINUX_APPLET_USE_NETDB == ENABLED +#endif +#if VSF_LINUX_SOCKET_USE_INET == ENABLED && VSF_LINUX_APPLET_USE_NETDB == ENABLED .netdb_vplt = (void *)&vsf_linux_netdb_vplt, -# endif -# if VSF_LINUX_APPLET_USE_PWD == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_PWD == ENABLED .pwd_vplt = (void *)&vsf_linux_pwd_vplt, -# endif -# if VSF_LINUX_APPLET_USE_FINDPROG == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_FINDPROG == ENABLED .findprog_vplt = (void *)&vsf_linux_findprog_vplt, -# endif -# if VSF_LINUX_APPLET_USE_FNMATCH == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_FNMATCH == ENABLED .fnmatch_vplt = (void *)&vsf_linux_fnmatch_vplt, -# endif -# if VSF_LINUX_APPLET_USE_GRP == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_GRP == ENABLED .grp_vplt = (void *)&vsf_linux_grp_vplt, -# endif +#endif -# if VSF_LINUX_USE_LIBUSB == ENABLED && VSF_LINUX_APPLET_USE_LIBUSB == ENABLED +#if VSF_LINUX_USE_LIBUSB == ENABLED && VSF_LINUX_APPLET_USE_LIBUSB == ENABLED .libusb_vplt = (void *)&vsf_linux_libusb_vplt, -# endif -# if VSF_LINUX_APPLET_USE_LIBGEN == ENABLED +#endif +#if VSF_LINUX_APPLET_USE_LIBGEN == ENABLED .libgen_vplt = (void *)&vsf_linux_libgen_vplt, -# endif +#endif }; #endif diff --git a/source/shell/sys/linux/vsf_linux_cfg.h b/source/shell/sys/linux/vsf_linux_cfg.h index bf854d630..e3f6be4e4 100644 --- a/source/shell/sys/linux/vsf_linux_cfg.h +++ b/source/shell/sys/linux/vsf_linux_cfg.h @@ -381,7 +381,7 @@ typedef struct vsf_linux_vplt_t { void *service_vplt; void *kernel_vplt; void *component_vplt; - void *libc_arch_vplt; + void *arch_abi_vplt; // fundmental, vsf APIs for linux void *fundmental_vplt; diff --git a/source/vsf_cfg.h b/source/vsf_cfg.h index 21c90efb3..57dd0faf6 100644 --- a/source/vsf_cfg.h +++ b/source/vsf_cfg.h @@ -112,6 +112,7 @@ typedef struct vsf_vplt_t { void *service_vplt; void *kernel_vplt; void *component_vplt; + void *arch_abi_vplt; void *linux_vplt; } vsf_vplt_t;