summaryrefslogtreecommitdiff
path: root/src/ipc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipc.c')
-rw-r--r--src/ipc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/ipc.c b/src/ipc.c
index 15a2f99b2f..a8cdb42e85 100644
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -453,7 +453,11 @@ rt_err_t rt_sem_control(rt_sem_t sem, rt_uint8_t cmd, void* arg)
RT_ASSERT(sem != RT_NULL);
if (cmd == RT_IPC_CMD_RESET)
- {
+ {
+ rt_uint32_t value;
+
+ /* get value */
+ value = (rt_uint32_t)arg;
/* disable interrupt */
level = rt_hw_interrupt_disable();
@@ -461,7 +465,7 @@ rt_err_t rt_sem_control(rt_sem_t sem, rt_uint8_t cmd, void* arg)
rt_ipc_object_resume_all(&sem->parent);
/* set new value */
- sem->value = (rt_uint16_t)arg;
+ sem->value = (rt_uint16_t)value;
/* enable interrupt */
rt_hw_interrupt_enable(level);