From 97df73ffdcf39d6146eaf1761a5d646f7eeaca37 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Thu, 8 Sep 2022 11:58:33 +0000 Subject: [PATCH] Extended the range of fastcalls to 128...255. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@15771 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- .../ARMv7-M-ALT/compilers/GCC/chcoreasm.S | 2 +- os/sb/common/sbsysc.h | 6 +++--- os/sb/host/sbapi.c | 20 +++++++++---------- os/sb/user/sbuser.h | 6 +++--- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/os/common/ports/ARMv7-M-ALT/compilers/GCC/chcoreasm.S b/os/common/ports/ARMv7-M-ALT/compilers/GCC/chcoreasm.S index 72a135fe8..c0171b361 100644 --- a/os/common/ports/ARMv7-M-ALT/compilers/GCC/chcoreasm.S +++ b/os/common/ports/ARMv7-M-ALT/compilers/GCC/chcoreasm.S @@ -228,7 +228,7 @@ SVC_Handler: ldr r3, [r2, #24] /* PC position. */ ldrh r0, [r3, #-2] /* SVC opcode. */ and r0, #255 - cmp r0, #0xF0 + cmp r0, #0x80 bge __port_do_fastcall_entry bic r12, #1 msr CONTROL, r12 /* Switching to privileged. */ diff --git a/os/sb/common/sbsysc.h b/os/sb/common/sbsysc.h index 156b9aebd..d45a17878 100644 --- a/os/sb/common/sbsysc.h +++ b/os/sb/common/sbsysc.h @@ -51,9 +51,9 @@ #define SB_SYSC_LOADELF 12 #define SB_SYSC_VHAL_VGPIO 200 #define SB_SYSC_VHAL_VUART 201 -#define SB_SYSC_VRQ_SET_ALARM 237 -#define SB_SYSC_VRQ_RESET_ALARM 238 -#define SB_SYSC_VRQ_WAIT 239 +#define SB_SYSC_VRQ_SET_ALARM 125 +#define SB_SYSC_VRQ_RESET_ALARM 126 +#define SB_SYSC_VRQ_WAIT 127 #define SB_SYSC_VRQ_SETWT 248 #define SB_SYSC_VRQ_CLRWT 249 #define SB_SYSC_VRQ_SETEN 250 diff --git a/os/sb/host/sbapi.c b/os/sb/host/sbapi.c index 6466973e0..31ace195d 100644 --- a/os/sb/host/sbapi.c +++ b/os/sb/host/sbapi.c @@ -76,9 +76,9 @@ static void sb_api_loadelf(struct port_extctx *ectxp); * @{ */ #if (SB_CFG_ENABLE_VRQ == TRUE) || defined(__DOXYGEN__) -#define SB_SVC237_HANDLER sb_api_vrq_set_alarm -#define SB_SVC238_HANDLER sb_api_vrq_reset_alarm -#define SB_SVC239_HANDLER sb_api_vrq_wait +#define SB_SVC125_HANDLER sb_api_vrq_set_alarm +#define SB_SVC126_HANDLER sb_api_vrq_reset_alarm +#define SB_SVC127_HANDLER sb_api_vrq_wait #define SB_SVC248_HANDLER sb_api_vrq_setwt #define SB_SVC249_HANDLER sb_api_vrq_clrwt #define SB_SVC250_HANDLER sb_api_vrq_seten @@ -870,7 +870,7 @@ static void sb_api_loadelf(struct port_extctx *ectxp); static void sb_undef_handler(struct port_extctx *ectxp); -const port_syscall_t sb_syscalls[240] = { +const port_syscall_t sb_syscalls[128] = { SB_SVC0_HANDLER, SB_SVC1_HANDLER, SB_SVC2_HANDLER, SB_SVC3_HANDLER, SB_SVC4_HANDLER, SB_SVC5_HANDLER, SB_SVC6_HANDLER, SB_SVC7_HANDLER, SB_SVC8_HANDLER, SB_SVC9_HANDLER, SB_SVC10_HANDLER, SB_SVC11_HANDLER, @@ -902,7 +902,10 @@ const port_syscall_t sb_syscalls[240] = { SB_SVC112_HANDLER, SB_SVC113_HANDLER, SB_SVC114_HANDLER, SB_SVC115_HANDLER, SB_SVC116_HANDLER, SB_SVC117_HANDLER, SB_SVC118_HANDLER, SB_SVC119_HANDLER, SB_SVC120_HANDLER, SB_SVC121_HANDLER, SB_SVC122_HANDLER, SB_SVC123_HANDLER, - SB_SVC124_HANDLER, SB_SVC125_HANDLER, SB_SVC126_HANDLER, SB_SVC127_HANDLER, + SB_SVC124_HANDLER, SB_SVC125_HANDLER, SB_SVC126_HANDLER, SB_SVC127_HANDLER +}; + +const port_syscall_t sb_fastcalls[128] = { SB_SVC128_HANDLER, SB_SVC129_HANDLER, SB_SVC130_HANDLER, SB_SVC131_HANDLER, SB_SVC132_HANDLER, SB_SVC133_HANDLER, SB_SVC134_HANDLER, SB_SVC135_HANDLER, SB_SVC136_HANDLER, SB_SVC137_HANDLER, SB_SVC138_HANDLER, SB_SVC139_HANDLER, @@ -930,10 +933,7 @@ const port_syscall_t sb_syscalls[240] = { SB_SVC224_HANDLER, SB_SVC225_HANDLER, SB_SVC226_HANDLER, SB_SVC227_HANDLER, SB_SVC228_HANDLER, SB_SVC229_HANDLER, SB_SVC230_HANDLER, SB_SVC231_HANDLER, SB_SVC232_HANDLER, SB_SVC233_HANDLER, SB_SVC234_HANDLER, SB_SVC235_HANDLER, - SB_SVC236_HANDLER, SB_SVC237_HANDLER, SB_SVC238_HANDLER, SB_SVC239_HANDLER -}; - -const port_syscall_t sb_fastcalls[16] = { + SB_SVC236_HANDLER, SB_SVC237_HANDLER, SB_SVC238_HANDLER, SB_SVC239_HANDLER, SB_SVC240_HANDLER, SB_SVC241_HANDLER, SB_SVC242_HANDLER, SB_SVC243_HANDLER, SB_SVC244_HANDLER, SB_SVC245_HANDLER, SB_SVC246_HANDLER, SB_SVC247_HANDLER, SB_SVC248_HANDLER, SB_SVC249_HANDLER, SB_SVC250_HANDLER, SB_SVC251_HANDLER, @@ -1283,7 +1283,7 @@ void __port_do_fastcall_entry(uint32_t n) { struct port_extctx *ectxp; ectxp = (struct port_extctx *)__get_PSP(); - sb_fastcalls[n - 240](ectxp); + sb_fastcalls[n - 128](ectxp); } /** @} */ diff --git a/os/sb/user/sbuser.h b/os/sb/user/sbuser.h index 47bc0c3d7..65352967d 100644 --- a/os/sb/user/sbuser.h +++ b/os/sb/user/sbuser.h @@ -895,7 +895,7 @@ static inline void sbSleepMicroseconds(time_usecs_t usecs) { */ static inline void sbSetAlarm(sysinterval_t interval, bool reload) { - __syscall2r(237, (uint32_t)interval, (uint32_t)reload); + __syscall2r(125, (uint32_t)interval, (uint32_t)reload); } /** @@ -905,7 +905,7 @@ static inline void sbSetAlarm(sysinterval_t interval, bool reload) { */ static inline void sbResetAlarm(void) { - __syscall0(238); + __syscall0(126); } /** @@ -915,7 +915,7 @@ static inline void sbResetAlarm(void) { */ static inline void __sb_vrq_wait(void) { - __syscall0(239); + __syscall0(127); } /**