From 1289406f9fc6e7155761fe1442af3f6b81958b25 Mon Sep 17 00:00:00 2001 From: Kevin Bracey Date: Mon, 10 Dec 2018 14:36:19 +0200 Subject: [PATCH] Use MBED_ASSERT in MPU manager MPU lock under- or overflow is not a likely random runtime failure - it will be a mismatched lock/unlock programming error, so should be detected during development. Make the checks asserts so they can be left out from release builds. MBED_ASSERT is also a bit smaller than MBED_ERROR in develop builds. --- platform/mbed_mpu_mgmt.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/platform/mbed_mpu_mgmt.c b/platform/mbed_mpu_mgmt.c index fdc98ab1b2..777a5d944b 100644 --- a/platform/mbed_mpu_mgmt.c +++ b/platform/mbed_mpu_mgmt.c @@ -28,10 +28,7 @@ static uint16_t mem_wn_lock; void mbed_mpu_manager_lock_ram_execution() { core_util_critical_section_enter(); - if (mem_xn_lock == USHRT_MAX) { - core_util_critical_section_exit(); - MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_PLATFORM, MBED_ERROR_CODE_OVERFLOW), "Ram execute never lock overflow (> USHRT_MAX)", mem_xn_lock); - } + MBED_ASSERT(mem_xn_lock != USHRT_MAX); if (mem_xn_lock == 0) { mbed_mpu_enable_ram_xn(false); } @@ -42,10 +39,7 @@ void mbed_mpu_manager_lock_ram_execution() void mbed_mpu_manager_unlock_ram_execution() { core_util_critical_section_enter(); - if (mem_xn_lock == 0) { - core_util_critical_section_exit(); - MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_PLATFORM, MBED_ERROR_CODE_UNDERFLOW), "Ram execute never lock underflow (< 0)", mem_xn_lock); - } + MBED_ASSERT(mem_xn_lock != 0); mem_xn_lock--; if (mem_xn_lock == 0) { mbed_mpu_enable_ram_xn(true); @@ -56,10 +50,7 @@ void mbed_mpu_manager_unlock_ram_execution() void mbed_mpu_manager_lock_rom_write() { core_util_critical_section_enter(); - if (mem_wn_lock == USHRT_MAX) { - core_util_critical_section_exit(); - MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_PLATFORM, MBED_ERROR_CODE_OVERFLOW), "Rom write never lock overflow (> USHRT_MAX)", mem_wn_lock); - } + MBED_ASSERT(mem_wn_lock != USHRT_MAX); if (mem_wn_lock == 0) { mbed_mpu_enable_rom_wn(false); } @@ -70,10 +61,7 @@ void mbed_mpu_manager_lock_rom_write() void mbed_mpu_manager_unlock_rom_write() { core_util_critical_section_enter(); - if (mem_wn_lock == 0) { - core_util_critical_section_exit(); - MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_PLATFORM, MBED_ERROR_CODE_UNDERFLOW), "Rom write never lock underflow (< 0)", mem_wn_lock); - } + MBED_ASSERT(mem_wn_lock != 0); mem_wn_lock--; if (mem_wn_lock == 0) { mbed_mpu_enable_rom_wn(true);