Restored SB functionality with RT7.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14327 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
parent
30a51cfb3b
commit
9d617edee6
|
@ -805,6 +805,10 @@
|
|||
/* Port-specific settings (override port settings defaulted in chcore.h). */
|
||||
/*===========================================================================*/
|
||||
|
||||
#define PORT_USE_SYSCALL TRUE
|
||||
|
||||
#define PORT_SWITCHED_REGIONS_NUMBER 2
|
||||
|
||||
#endif /* CHCONF_H */
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -805,6 +805,8 @@
|
|||
/* Port-specific settings (override port settings defaulted in chcore.h). */
|
||||
/*===========================================================================*/
|
||||
|
||||
#define PORT_USE_SYSCALL TRUE
|
||||
|
||||
#endif /* CHCONF_H */
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -58,13 +58,13 @@ __attribute__((noinline))
|
|||
void port_syslock_noinline(void) {
|
||||
|
||||
port_lock();
|
||||
_stats_start_measure_crit_thd();
|
||||
_dbg_check_lock();
|
||||
__stats_start_measure_crit_thd();
|
||||
__dbg_check_lock();
|
||||
}
|
||||
|
||||
uint32_t port_get_s_psp(void) {
|
||||
|
||||
return (uint32_t)currp->ctx.syscall.psp;
|
||||
return (uint32_t)__sch_get_currthread()->ctx.syscall.psp;
|
||||
}
|
||||
|
||||
__attribute__((weak))
|
||||
|
@ -144,7 +144,7 @@ void SVC_Handler(void) {
|
|||
struct port_extctx *newctxp;
|
||||
|
||||
/* Supervisor PSP from the thread context structure.*/
|
||||
s_psp = (uint32_t)currp->ctx.syscall.psp;
|
||||
s_psp = (uint32_t)__sch_get_currthread()->ctx.syscall.psp;
|
||||
|
||||
/* Pushing the port_linkctx into the supervisor stack.*/
|
||||
s_psp -= sizeof (struct port_linkctx);
|
||||
|
@ -334,7 +334,7 @@ void __port_irq_epilogue(void) {
|
|||
__set_CONTROL(control & ~1U);
|
||||
|
||||
/* Switching to S-PSP taking it from the thread context.*/
|
||||
s_psp = (uint32_t)currp->ctx.syscall.psp;
|
||||
s_psp = (uint32_t)__sch_get_currthread()->ctx.syscall.psp;
|
||||
|
||||
/* Pushing the middle context for returning to the original frame
|
||||
and mode.*/
|
||||
|
|
|
@ -92,6 +92,12 @@ struct ch_mutex {
|
|||
*/
|
||||
#define MUTEX_DECL(name) mutex_t name = __MUTEX_DATA(name)
|
||||
|
||||
#if CH_CFG_USE_MESSAGES_PRIORITY == TRUE
|
||||
#define __ch_msg_insert(tp, qp) ch_sch_prio_insert(&tp->hdr.queue, qp)
|
||||
#else
|
||||
#define __ch_msg_insert(tp, qp) ch_queue_insert(&tp->hdr.queue, qp)
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
|
|
@ -63,12 +63,6 @@
|
|||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if CH_CFG_USE_MESSAGES_PRIORITY == TRUE
|
||||
#define msg_insert(tp, qp) ch_sch_prio_insert(&tp->hdr.queue, qp)
|
||||
#else
|
||||
#define msg_insert(tp, qp) ch_queue_insert(&tp->hdr.queue, qp)
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
@ -91,7 +85,7 @@ msg_t chMsgSend(thread_t *tp, msg_t msg) {
|
|||
|
||||
chSysLock();
|
||||
currtp->u.sentmsg = msg;
|
||||
msg_insert(currtp, &tp->msgqueue);
|
||||
__ch_msg_insert(currtp, &tp->msgqueue);
|
||||
if (tp->state == CH_STATE_WTMSG) {
|
||||
(void) chSchReadyI(tp);
|
||||
}
|
||||
|
|
|
@ -163,7 +163,7 @@ void sbStart(sb_class_t *sbcp, const sb_config_t *config) {
|
|||
msg_t sbSendMessageTimeout(sb_class_t *sbcp,
|
||||
msg_t msg,
|
||||
sysinterval_t timeout) {
|
||||
thread_t *ctp = currp;
|
||||
thread_t *ctp = __sch_get_currthread();
|
||||
|
||||
chDbgCheck(sbcp != NULL);
|
||||
|
||||
|
@ -171,7 +171,7 @@ msg_t sbSendMessageTimeout(sb_class_t *sbcp,
|
|||
|
||||
/* Sending the message.*/
|
||||
ctp->u.sentmsg = msg;
|
||||
__msg_insert(ctp, &sbcp->tp->msgqueue);
|
||||
__ch_msg_insert(ctp, &sbcp->tp->msgqueue);
|
||||
if (sbcp->tp->state == CH_STATE_WTMSG) {
|
||||
(void) chSchReadyI(sbcp->tp);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue