summaryrefslogtreecommitdiff
path: root/rs422lib/sysctl.c
diff options
context:
space:
mode:
authorJoe Zhao <ztuowen@gmail.com>2014-05-23 15:36:51 +0800
committerJoe Zhao <ztuowen@gmail.com>2014-05-23 15:36:51 +0800
commit07d2ace8b4771e2ad48d4a9e6bf43a2022a25fac (patch)
tree8f76b7e3ce69ceb6d7822ec9aa8977a830d10c8d /rs422lib/sysctl.c
parentd9c0c179fc4636b8927dd2c8b2cb29d573094731 (diff)
downloadrsbus-07d2ace8b4771e2ad48d4a9e6bf43a2022a25fac.tar.gz
rsbus-07d2ace8b4771e2ad48d4a9e6bf43a2022a25fac.tar.bz2
rsbus-07d2ace8b4771e2ad48d4a9e6bf43a2022a25fac.zip
Added SYSSTOP & MSTATE macro
New example main.c
Diffstat (limited to 'rs422lib/sysctl.c')
-rw-r--r--rs422lib/sysctl.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/rs422lib/sysctl.c b/rs422lib/sysctl.c
index cafcb62..ea05587 100644
--- a/rs422lib/sysctl.c
+++ b/rs422lib/sysctl.c
@@ -19,8 +19,11 @@ void sysctl_void()
}
void sysroutine()
+// << Drawback: interrupt may happen between else and CPUOFF
+// Critical section -> unlikely to have a race condition
{
- if (syscall>0)
+ if (!syscall)
+ _BIS_SR(CPUOFF);
switch ((syscall & (-syscall))) // This is used to get the lowest bit
{
case SYS_BIT7:
@@ -56,8 +59,7 @@ void sysroutine()
sysarr[0]();
break;
}
- else
- _BIS_SR(CPUOFF);
+
}
inline int sys_b2i(int bit)