diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-07-16 11:19:51 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-01-18 14:35:47 +0100 |
commit | 7e7281bb2dc685df3de2269b55662b0a4b34a955 (patch) | |
tree | 8c993f41433fb87ed245bdfefea8c812f159866a | |
parent | 4d65fe119e2523dd0f7f87f1e8a674d03c6b51c8 (diff) |
bsp/leon3: Add LEON3_IRQAMP_BASE
-rw-r--r-- | bsps/sparc/leon3/include/bsp/leon3.h | 4 | ||||
-rw-r--r-- | bsps/sparc/leon3/start/amba.c | 9 | ||||
-rw-r--r-- | spec/build/bsps/sparc/leon3/grp.yml | 2 | ||||
-rw-r--r-- | spec/build/bsps/sparc/leon3/optirqampbase.yml | 22 |
4 files changed, 36 insertions, 1 deletions
diff --git a/bsps/sparc/leon3/include/bsp/leon3.h b/bsps/sparc/leon3/include/bsp/leon3.h index 6c139bdaed..f3a9def60b 100644 --- a/bsps/sparc/leon3/include/bsp/leon3.h +++ b/bsps/sparc/leon3/include/bsp/leon3.h @@ -187,7 +187,11 @@ extern rtems_interrupt_lock LEON3_IrqCtrl_Lock; /** * @brief This pointer provides the IRQ(A)MP register block address. */ +#if defined(LEON3_IRQAMP_BASE) +#define LEON3_IrqCtrl_Regs ((irqamp *) LEON3_IRQAMP_BASE) +#else extern irqamp *LEON3_IrqCtrl_Regs; +#endif /** * @brief This pointer provides the IRQ(A)MP device information block. diff --git a/bsps/sparc/leon3/start/amba.c b/bsps/sparc/leon3/start/amba.c index d3254e3f0a..efce4110c9 100644 --- a/bsps/sparc/leon3/start/amba.c +++ b/bsps/sparc/leon3/start/amba.c @@ -96,9 +96,10 @@ RTEMS_SYSINIT_ITEM( ); #endif -/* Pointers to Interrupt Controller configuration registers */ +#if !defined(LEON3_IRQAMP_BASE) irqamp *LEON3_IrqCtrl_Regs; struct ambapp_dev *LEON3_IrqCtrl_Adev; +#endif #if !defined(LEON3_GPTIMER_BASE) gptimer *LEON3_Timer_Regs; @@ -121,7 +122,12 @@ static void amba_initialize(void) struct ambapp_bus *plb; plb = ambapp_plb(); +#if defined(LEON3_IRQAMP_BASE) && defined(LEON3_GPTIMER_BASE) + (void) plb; + (void) adev; +#endif +#if !defined(LEON3_IRQAMP_BASE) /* Find LEON3 Interrupt controller */ adev = (void *)ambapp_for_each(plb, (OPTIONS_ALL|OPTIONS_APB_SLVS), VENDOR_GAISLER, GAISLER_IRQMP, @@ -148,6 +154,7 @@ static void amba_initialize(void) icsel = (icsel >> ((7 - (LEON3_Cpu_Index & 0x7)) * 4)) & 0xf; LEON3_IrqCtrl_Regs += icsel; } +#endif #if !defined(LEON3_GPTIMER_BASE) /* find GP Timer */ diff --git a/spec/build/bsps/sparc/leon3/grp.yml b/spec/build/bsps/sparc/leon3/grp.yml index 78d59ff568..1e822e793f 100644 --- a/spec/build/bsps/sparc/leon3/grp.yml +++ b/spec/build/bsps/sparc/leon3/grp.yml @@ -36,6 +36,8 @@ links: - role: build-dependency uid: optgptimerbase - role: build-dependency + uid: optirqampbase +- role: build-dependency uid: optconirq - role: build-dependency uid: optleon3smp diff --git a/spec/build/bsps/sparc/leon3/optirqampbase.yml b/spec/build/bsps/sparc/leon3/optirqampbase.yml new file mode 100644 index 0000000000..319c341790 --- /dev/null +++ b/spec/build/bsps/sparc/leon3/optirqampbase.yml @@ -0,0 +1,22 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +actions: +- get-integer: null +- format-and-define: null +build-type: option +default: null +default-by-variant: +- value: 0x80000200 + variants: + - sparc/gr712rc +- value: 0xff904000 + variants: + - sparc/gr740 +enabled-by: true +format: '{:#010x}' +links: [] +name: LEON3_IRQAMP_BASE +description: | + This option defines the base address of the IRQ(A)MP register block. +type: build |