aboutsummaryrefslogtreecommitdiffstats
path: root/os/kernel/src
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2013-07-25 12:40:58 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2013-07-25 12:40:58 +0000
commit0ca0bc18f97a40b9637f225a114f740b30db5cc1 (patch)
treefd493a5ab098d9e326885421aa04163bdc1519ca /os/kernel/src
parentb21e9a01e5590dd3fe015aeffbe2a15e985af865 (diff)
downloadChibiOS-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.c13
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();