From 0ca0bc18f97a40b9637f225a114f740b30db5cc1 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Thu, 25 Jul 2013 12:40:58 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@6028 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/kernel/src/chsys.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'os/kernel/src') 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(); -- cgit v1.2.3