summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-01-16 11:42:34 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-01-22 07:21:20 +0100
commit2fd684e233985eac6e7a7da02026b9e95a178ffd (patch)
treea0fbe484dde2703d8ccb53dcc72c76dd8d385334
parentbsp/qoriq: Optional multiprocessing support (diff)
downloadrtems-2fd684e233985eac6e7a7da02026b9e95a178ffd.tar.bz2
bsp/qoriq: Fix hypervisor guest irq vector max
Update #3085.
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/include/irq.h11
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c6
2 files changed, 13 insertions, 4 deletions
diff --git a/c/src/lib/libbsp/powerpc/qoriq/include/irq.h b/c/src/lib/libbsp/powerpc/qoriq/include/irq.h
index 45bceee9f8..e178057950 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/include/irq.h
+++ b/c/src/lib/libbsp/powerpc/qoriq/include/irq.h
@@ -32,6 +32,12 @@
extern "C" {
#endif /* __cplusplus */
+#ifdef QORIQ_IS_HYPERVISOR_GUEST
+
+#define BSP_INTERRUPT_VECTOR_MAX 1023
+
+#else /* !QORIQ_IS_HYPERVISOR_GUEST */
+
#define QORIQ_IRQ_ERROR 0
#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
@@ -344,8 +350,12 @@ extern "C" {
#define QORIQ_IRQ_GT_B_2 (QORIQ_IRQ_GT_BASE + 6)
#define QORIQ_IRQ_GT_B_3 (QORIQ_IRQ_GT_BASE + 7)
+#define BSP_INTERRUPT_VECTOR_MAX QORIQ_IRQ_GT_B_3
+
/** @} */
+#endif /* QORIQ_IS_HYPERVISOR_GUEST */
+
/**
* @defgroup QorIQInterrupt QorIQ - Interrupt Support
*
@@ -357,7 +367,6 @@ extern "C" {
*/
#define BSP_INTERRUPT_VECTOR_MIN 0
-#define BSP_INTERRUPT_VECTOR_MAX QORIQ_IRQ_GT_B_3
#define QORIQ_PIC_PRIORITY_LOWEST 1
#define QORIQ_PIC_PRIORITY_HIGHEST 15
diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c b/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c
index 3558334fbd..ac09971529 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/bsprestart.c
@@ -48,7 +48,7 @@ static RTEMS_NO_RETURN void do_restart(void *addr)
bsp_fatal(QORIQ_FATAL_RESTART_FAILED);
}
-#ifdef RTEMS_SMP
+#if defined(RTEMS_SMP) && !defined(QORIQ_IS_HYPERVISOR_GUEST)
#include <rtems/score/smpimpl.h>
#include <rtems/score/smpbarrier.h>
@@ -133,7 +133,7 @@ void bsp_restart(void *addr)
bsp_fatal(QORIQ_FATAL_RESTART_INTERRUPT_FAILED);
}
-#else /* RTEMS_SMP */
+#else /* !RTEMS_SMP || QORIQ_IS_HYPERVISOR_GUEST */
void bsp_restart(void *addr)
{
@@ -144,4 +144,4 @@ void bsp_restart(void *addr)
do_restart(addr);
}
-#endif /* !RTEMS_SMP */
+#endif /* RTEMS_SMP && !QORIQ_IS_HYPERVISOR_GUEST */