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> | 2023-01-23 08:57:07 +0100 |
commit | 4aab8be545e226628edab59772ab6d7b91be08bd (patch) | |
tree | 3d329ae86d825ec0e97101783f14e271b1b238ef | |
parent | ebcd781321e86fc4461e11f0e9e99d0261445460 (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 | 19 |
4 files changed, 33 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 36b988e90b..72f1f5e63b 100644 --- a/bsps/sparc/leon3/start/amba.c +++ b/bsps/sparc/leon3/start/amba.c @@ -115,9 +115,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; @@ -140,7 +141,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, @@ -167,6 +173,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 61a5540638..79a480c5bf 100644 --- a/spec/build/bsps/sparc/leon3/grp.yml +++ b/spec/build/bsps/sparc/leon3/grp.yml @@ -39,6 +39,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..24f3109513 --- /dev/null +++ b/spec/build/bsps/sparc/leon3/optirqampbase.yml @@ -0,0 +1,19 @@ +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: +- enabled-by: sparc/gr712rc + value: 0x80000200 +- enabled-by: sparc/gr740 + value: 0xff904000 +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 |