git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@16337 27425a3e-05d8-49a3-a47f-9c15f0e5edd8

This commit is contained in:
Giovanni Di Sirio 2023-07-21 12:24:39 +00:00
parent 5afc56fe88
commit 3074a8b2c4
4 changed files with 16 additions and 0 deletions

View File

@ -40,6 +40,7 @@
#define SB_FASTC_GET_FREQUENCY 2
#define SB_FASTC_VHAL_VGPIO 96
#define SB_FASTC_VHAL_VUART 97
#define SB_FASTC_VRQ_GCSTS 119
#define SB_FASTC_VRQ_SETWT 120
#define SB_FASTC_VRQ_CLRWT 121
#define SB_FASTC_VRQ_SETEN 122

View File

@ -350,6 +350,10 @@ struct sb_class {
* @brief Reference to sh SB thread while waiting for VRQs.
*/
thread_reference_t vrq_trp;
/**
* @brief Status flags associated to each VRQ.
*/
uint32_t vrq_flags[32];
#endif
#if (SB_CFG_ENABLE_VFS == TRUE) || defined(__DOXYGEN__)
/**

View File

@ -349,6 +349,15 @@ void sb_sysc_vrq_wait(struct port_extctx *ectxp) {
chSysUnlock();
}
void sb_fastc_vrq_gcsts(struct port_extctx *ectxp) {
sb_class_t *sbp = (sb_class_t *)chThdGetSelfX()->ctx.syscall.p;
uint32_t sts;
sts = sbp->vrq_flags[ectxp->r0] & ectxp->r1;
sbp->vrq_flags[ectxp->r0] &= ~sts;
ectxp->r0 = sts;
}
void sb_fastc_vrq_setwt(struct port_extctx *ectxp) {
sb_class_t *sbp = (sb_class_t *)chThdGetSelfX()->ctx.syscall.p;
uint32_t m;

View File

@ -46,6 +46,7 @@
* @{
*/
#if (SB_CFG_ENABLE_VRQ == TRUE) || defined(__DOXYGEN__)
#define SB_SVC119_HANDLER sb_fastc_vrq_gcsts
#define SB_SVC120_HANDLER sb_fastc_vrq_setwt
#define SB_SVC121_HANDLER sb_fastc_vrq_clrwt
#define SB_SVC122_HANDLER sb_fastc_vrq_seten
@ -88,6 +89,7 @@ extern "C" {
void sbVRQTriggerI(sb_class_t *sbp, sb_vrqnum_t nvrq);
void sb_sysc_vrq_set_alarm(struct port_extctx *ectxp);
void sb_sysc_vrq_reset_alarm(struct port_extctx *ectxp);
void sb_fastc_vrq_gcsts(struct port_extctx *ectxp);
void sb_sysc_vrq_wait(struct port_extctx *ectxp);
void sb_fastc_vrq_setwt(struct port_extctx *ectxp);
void sb_fastc_vrq_clrwt(struct port_extctx *ectxp);