FuriHal: allow nulling null isr (#2846)

* FuriHal: allow nulling null isr
* FuriHal: include interrupt priority 15 as allowed
* Furi: prevent compiler from optimizing arg in r0 of RESTORE_REGISTERS_AND_HALT_MCU
This commit is contained in:
あく 2023-07-06 01:39:17 +09:00 committed by GitHub
parent 97fbd84e08
commit f3ae09cc16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 3 deletions

View File

@ -128,14 +128,13 @@ void furi_hal_interrupt_set_isr_ex(
FuriHalInterruptISR isr,
void* context) {
furi_check(index < FuriHalInterruptIdMax);
furi_check(priority < 15);
furi_check(priority <= 15);
if(isr) {
// Pre ISR set
furi_check(furi_hal_interrupt_isr[index].isr == NULL);
} else {
// Pre ISR clear
furi_check(furi_hal_interrupt_isr[index].isr != NULL);
furi_hal_interrupt_disable(index);
furi_hal_interrupt_clear_pending(index);
}

View File

@ -36,7 +36,7 @@ PLACE_IN_SECTION("MB_MEM2") uint32_t __furi_check_registers[13] = {0};
*
*/
#define RESTORE_REGISTERS_AND_HALT_MCU(debug) \
register const bool r0 asm("r0") = debug; \
register bool r0 asm("r0") = debug; \
asm volatile("cbnz r0, with_debugger%= \n" \
"ldr r12, =__furi_check_registers\n" \
"ldm r12, {r0-r11} \n" \