summaryrefslogtreecommitdiffstats
path: root/bsps/powerpc/motorola_powerpc
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2021-02-12 09:35:40 -1000
committerChris Johns <chrisj@rtems.org>2021-02-13 13:26:07 +1100
commite1676c1a0ddcdecd45914485813d7518a40cab17 (patch)
tree2c3f81bdbc58e6cb82985c776c4c1eaf0ce3c7fa /bsps/powerpc/motorola_powerpc
parentrtems-debugger-threads.c: Fix three Dereference before null check errors (diff)
downloadrtems-e1676c1a0ddcdecd45914485813d7518a40cab17.tar.bz2
Update motorola_power to irq-generic interrupt management
- Add support to the BSP to enable irq-generic management - Update the powerpc shared irq code to support irq-generic. This is an opt in option for existing powerpc bsps. This change should be simpler now - Fix a number of issues in ISA IRQ controller handling by porting fixes from the i386 (PC) BSP Closes #4238 Closes #4239
Diffstat (limited to 'bsps/powerpc/motorola_powerpc')
-rw-r--r--bsps/powerpc/motorola_powerpc/include/bsp/irq.h15
-rw-r--r--bsps/powerpc/motorola_powerpc/start/bspstart.c7
2 files changed, 17 insertions, 5 deletions
diff --git a/bsps/powerpc/motorola_powerpc/include/bsp/irq.h b/bsps/powerpc/motorola_powerpc/include/bsp/irq.h
index 3690dbbff7..cbb6ff69cf 100644
--- a/bsps/powerpc/motorola_powerpc/include/bsp/irq.h
+++ b/bsps/powerpc/motorola_powerpc/include/bsp/irq.h
@@ -19,9 +19,17 @@
#ifndef BSP_POWERPC_IRQ_H
#define BSP_POWERPC_IRQ_H
+#ifndef BSP_SHARED_HANDLER_SUPPORT
#define BSP_SHARED_HANDLER_SUPPORT 1
+#endif
+
#include <rtems/irq.h>
-#include <bsp/irq-default.h>
+
+/*
+ * Switch to using the generic support. Remove this when all BSPs have
+ * been converted.
+ */
+#define BSP_POWERPC_IRQ_GENERIC_SUPPORT 1
/*
* 8259 edge/level control definitions at VIA
@@ -107,6 +115,8 @@ extern "C" {
#define BSP_IRQ_NUMBER (BSP_MISC_IRQ_MAX_OFFSET + 1)
#define BSP_LOWEST_OFFSET (BSP_ISA_IRQ_LOWEST_OFFSET)
#define BSP_MAX_OFFSET (BSP_MISC_IRQ_MAX_OFFSET)
+#define BSP_INTERRUPT_VECTOR_MIN (BSP_LOWEST_OFFSET)
+#define BSP_INTERRUPT_VECTOR_MAX (BSP_MAX_OFFSET)
/*
* Some ISA IRQ symbolic name definition
*/
@@ -191,6 +201,9 @@ int BSP_irq_ack_at_i8259s (const rtems_irq_number irqLine);
*/
int BSP_irq_enabled_at_i8259s (const rtems_irq_number irqLine);
+unsigned short BSP_irq_suspend_i8259s(unsigned short mask);
+void BSP_irq_resume_i8259s(unsigned short in_progress_save);
+
extern void BSP_rtems_irq_mng_init(unsigned cpuId);
extern void BSP_i8259s_init(void);
diff --git a/bsps/powerpc/motorola_powerpc/start/bspstart.c b/bsps/powerpc/motorola_powerpc/start/bspstart.c
index e74b02c446..ef8418e2c6 100644
--- a/bsps/powerpc/motorola_powerpc/start/bspstart.c
+++ b/bsps/powerpc/motorola_powerpc/start/bspstart.c
@@ -27,6 +27,7 @@
#include <bsp/pci.h>
#include <bsp/openpic.h>
#include <bsp/irq.h>
+#include <bsp/irq-generic.h>
#include <libcpu/bat.h>
#include <libcpu/pte121.h>
#include <libcpu/cpuIdent.h>
@@ -334,10 +335,8 @@ static void bsp_early( void )
*/
bsp_clicks_per_usec = BSP_bus_frequency/(BSP_time_base_divisor * 1000);
- /*
- * Initalize RTEMS IRQ system
- */
- BSP_rtems_irq_mng_init(0);
+ /* Initialize interrupt support */
+ bsp_interrupt_initialize();
/* Activate the page table mappings only after
* initializing interrupts because the irq_mng_init()