diff options
Diffstat (limited to 'newlib/libc')
-rw-r--r-- | newlib/libc/sys/or1k/mlock.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/newlib/libc/sys/or1k/mlock.c b/newlib/libc/sys/or1k/mlock.c index a439da603..ccb840161 100644 --- a/newlib/libc/sys/or1k/mlock.c +++ b/newlib/libc/sys/or1k/mlock.c @@ -65,7 +65,9 @@ void __malloc_lock(struct _reent *ptr) { } // Store the TEE and IEE flags for later restore - _or1k_malloc_lock_restore = restore; + if (_or1k_malloc_lock_cnt == 0) { + _or1k_malloc_lock_restore = restore; + } // Increment counter. The lock may be accessed recursively _or1k_malloc_lock_cnt++; @@ -85,7 +87,7 @@ void __malloc_unlock(struct _reent *ptr) { // unset lock _or1k_malloc_lock = 0; // Restore flags - or1k_critical_end(_or1k_malloc_lock_restore); + or1k_critical_end(restore); } return; |