diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2013-07-25 12:40:58 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2013-07-25 12:40:58 +0000 |
commit | 0ca0bc18f97a40b9637f225a114f740b30db5cc1 (patch) | |
tree | fd493a5ab098d9e326885421aa04163bdc1519ca /os/kernel/src | |
parent | b21e9a01e5590dd3fe015aeffbe2a15e985af865 (diff) | |
download | ChibiOS-0ca0bc18f97a40b9637f225a114f740b30db5cc1.tar.gz ChibiOS-0ca0bc18f97a40b9637f225a114f740b30db5cc1.tar.bz2 ChibiOS-0ca0bc18f97a40b9637f225a114f740b30db5cc1.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@6028 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/kernel/src')
-rw-r--r-- | os/kernel/src/chsys.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/os/kernel/src/chsys.c b/os/kernel/src/chsys.c index 7a6d3ea20..4a67c7042 100644 --- a/os/kernel/src/chsys.c +++ b/os/kernel/src/chsys.c @@ -206,16 +206,15 @@ void chSysTimerHandlerI(void) { * is known.
*
* @return The previous system status, the encoding of this
- * status word is architecture-dependent but zero is
- * assumed to mean not-locked.
+ * status word is architecture-dependent and opaque.
*
* @special
*/
syssts_t chSysGetAndLockX(void) {
- syssts_t sts = port_get_status();
- if (!sts) {
- if (port_get_context())
+ syssts_t sts = port_get_irq_status();
+ if (port_irq_enabled(sts)) {
+ if (port_is_isr_context())
chSysLockFromISR();
else
chSysLock();
@@ -232,8 +231,8 @@ syssts_t chSysGetAndLockX(void) { */
void chSysRestoreLockX(syssts_t sts) {
- if (!sts) {
- if (port_get_context())
+ if (port_irq_enabled(sts)) {
+ if (port_is_isr_context())
chSysUnlockFromISR();
else
chSysUnlock();
|