diff options
author | Joe Zhao <ztuowen@gmail.com> | 2014-05-23 15:36:51 +0800 |
---|---|---|
committer | Joe Zhao <ztuowen@gmail.com> | 2014-05-23 15:36:51 +0800 |
commit | 07d2ace8b4771e2ad48d4a9e6bf43a2022a25fac (patch) | |
tree | 8f76b7e3ce69ceb6d7822ec9aa8977a830d10c8d /rs422lib/sysctl.c | |
parent | d9c0c179fc4636b8927dd2c8b2cb29d573094731 (diff) | |
download | rsbus-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.c | 8 |
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) |