blob: 647b8b4296b7ec44edc5c4805e3493a6161f46e5 [file] [log] [blame]
Andrzej Puzdrowski9a605b62020-03-16 13:34:30 +01001/*
2 * Copyright (c) 2020 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
Piotr Mienkowskia5046692020-04-02 01:41:54 +02007#include <arch/arm/aarch32/cortex_m/cmsis.h>
Andrzej Puzdrowski9a605b62020-03-16 13:34:30 +01008
9void cleanup_arm_nvic(void) {
10 /* Allow any pending interrupts to be recognized */
11 __ISB();
12 __disable_irq();
13
14 /* Disable NVIC interrupts */
15 for (u8_t i = 0; i < ARRAY_SIZE(NVIC->ICER); i++) {
16 NVIC->ICER[i] = 0xFFFFFFFF;
17 }
18 /* Clear pending NVIC interrupts */
19 for (u8_t i = 0; i < ARRAY_SIZE(NVIC->ICPR); i++) {
20 NVIC->ICPR[i] = 0xFFFFFFFF;
21 }
22}