/* * Copyright (c) 2014, Mentor Graphics Corporation * All rights reserved. * * Copyright (c) 2016 Xilinx, Inc. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include "xscugic.h" #define INTC_DEVICE_ID XPAR_SCUGIC_0_DEVICE_ID static XScuGic xInterruptController; /* Interrupt Controller setup */ static int app_gic_initialize(void) { u32 Status; XScuGic_Config *IntcConfig; /* The configuration parameters of the interrupt controller */ Xil_ExceptionDisable(); /* * Initialize the interrupt controller driver */ IntcConfig = XScuGic_LookupConfig(INTC_DEVICE_ID); if (NULL == IntcConfig) { return XST_FAILURE; } Status = XScuGic_CfgInitialize(&xInterruptController, IntcConfig, IntcConfig->CpuBaseAddress); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* * Register the interrupt handler to the hardware interrupt handling * logic in the ARM processor. */ Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_IRQ_INT, (Xil_ExceptionHandler)XScuGic_InterruptHandler, &xInterruptController); Xil_ExceptionEnable(); return 0; } /* Main hw machinery initialization entry point, called from main()*/ /* return 0 on success */ int init_system(void) { /* configure the global interrupt controller */ app_gic_initialize(); return 0; }