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
This commit is contained in:
parent
325a92945f
commit
97df73ffdc
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue