diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ethosu_driver.c | 10 | ||||
-rw-r--r-- | src/irq_driver.h | 83 |
2 files changed, 4 insertions, 89 deletions
diff --git a/src/ethosu_driver.c b/src/ethosu_driver.c index 567c878..3bad2ac 100644 --- a/src/ethosu_driver.c +++ b/src/ethosu_driver.c @@ -20,8 +20,9 @@ #include "ethosu_common.h" #include "ethosu_device.h" -#include "irq_driver.h" + #include <assert.h> +#include <cmsis_compiler.h> #include <stdbool.h> #include <stdint.h> #include <stdio.h> @@ -34,7 +35,7 @@ static int abort_inference = false; static volatile bool irq_triggered = false; #if defined(CPU_CORTEX_M3) || defined(CPU_CORTEX_M4) || defined(CPU_CORTEX_M7) || defined(CPU_CORTEX_M33) || \ defined(CPU_CORTEX_M55) -void irq_handler() +void ethosu_irq_handler(void) { uint8_t irq_raised = 0; (void)ethosu_is_irq_raised(&irq_raised); @@ -56,13 +57,12 @@ static inline void wait_for_irq(void) break; } - sleep(); + __WFI(); __enable_irq(); } } #else -#define setup_irq(...) // Just polling the status register static inline void wait_for_irq(void) { @@ -198,8 +198,6 @@ int ethosu_init(void) return -1; } - setup_irq(&irq_handler, EthosuIrq); - return_code = ethosu_dev_init(); return return_code; diff --git a/src/irq_driver.h b/src/irq_driver.h deleted file mode 100644 index 5a853a5..0000000 --- a/src/irq_driver.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2019-2020 Arm Limited. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// IRQ -#if defined(CPU_CORTEX_M3) || defined(CPU_CORTEX_M4) || defined(CPU_CORTEX_M7) || defined(CPU_CORTEX_M33) || \ - defined(CPU_CORTEX_M55) -typedef enum irqn_type -{ - Reset = -15, - Nmi = -14, - HardFault = -13, - MemoryManagement = -12, - BusFault = -11, - UsageFault = -10, - SVCall = -5, - DebugMonitor = -4, - PendSV = -2, - SysTick_IRQn = -1, - Irq0 = 0, -#if defined(FPGA) -#if defined(CPU_CORTEX_M55) - EthosuIrq = 55 -#else - EthosuIrq = 67 -#endif -#else - EthosuIrq = Irq0 -#endif -} IRQn_Type; - -#define __CM7_REV 0x0000U -#define __MPU_PRESENT 1 -#define __ICACHE_PRESENT 1 -#define __DCACHE_PRESENT 1 -#define __TCM_PRESENT 0 -#define __NVIC_PRIO_BITS 3 -#define __Vendor_SysTickConfig 0 - -#if defined(CPU_CORTEX_M7) -#include <core_cm7.h> -#elif defined(CPU_CORTEX_M4) -#include <core_cm4.h> -#elif defined(CPU_CORTEX_M3) -#include <core_cm3.h> -#elif defined(CPU_CORTEX_M0) -#include <core_cm0.h> -#elif defined(CPU_CORTEX_M33) -#include <core_cm33.h> -#elif defined(CPU_CORTEX_M55) -#include <core_cm55.h> -#else -#error "Unknown CPU" -#endif - -typedef void (*ExecFuncPtr)(); -static inline void setup_irq(void (*irq_handler)(), enum irqn_type irq_number) -{ - __NVIC_EnableIRQ(irq_number); - ExecFuncPtr *vectorTable = (ExecFuncPtr *)(SCB->VTOR); - vectorTable[irq_number + 16] = irq_handler; -} - -static inline void sleep() -{ - __WFI(); -} - -#endif |