summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-06-21 09:10:28 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-06-21 15:54:18 +0200
commit4c927c79004069fe98c20c79bdbcef596114786c (patch)
treee4f70944b10ad045ccc4fd6644a968ab3caa9edd
parentsptests/spcpucounter01: Resurrect workaround (diff)
downloadrtems-4c927c79004069fe98c20c79bdbcef596114786c.tar.bz2
bsp/leon3: Fix LEON3_Cpu_Index initialization
-rw-r--r--c/src/lib/libbsp/sparc/leon3/amba/amba.c2
-rw-r--r--c/src/lib/libbsp/sparc/leon3/console/printk_support.c2
-rw-r--r--c/src/lib/libbsp/sparc/leon3/startup/bspstart.c14
3 files changed, 14 insertions, 4 deletions
diff --git a/c/src/lib/libbsp/sparc/leon3/amba/amba.c b/c/src/lib/libbsp/sparc/leon3/amba/amba.c
index f1598b8189..4b55a49f35 100644
--- a/c/src/lib/libbsp/sparc/leon3/amba/amba.c
+++ b/c/src/lib/libbsp/sparc/leon3/amba/amba.c
@@ -162,5 +162,5 @@ static void amba_initialize(void)
RTEMS_SYSINIT_ITEM(
amba_initialize,
RTEMS_SYSINIT_BSP_START,
- RTEMS_SYSINIT_ORDER_FIRST
+ RTEMS_SYSINIT_ORDER_SECOND
);
diff --git a/c/src/lib/libbsp/sparc/leon3/console/printk_support.c b/c/src/lib/libbsp/sparc/leon3/console/printk_support.c
index 1af0efd94f..27c2a72465 100644
--- a/c/src/lib/libbsp/sparc/leon3/console/printk_support.c
+++ b/c/src/lib/libbsp/sparc/leon3/console/printk_support.c
@@ -80,7 +80,7 @@ static void bsp_debug_uart_init(void)
RTEMS_SYSINIT_ITEM(
bsp_debug_uart_init,
RTEMS_SYSINIT_BSP_START,
- RTEMS_SYSINIT_ORDER_THIRD
+ RTEMS_SYSINIT_ORDER_FOURTH
);
/* putchar/getchar for printk */
diff --git a/c/src/lib/libbsp/sparc/leon3/startup/bspstart.c b/c/src/lib/libbsp/sparc/leon3/startup/bspstart.c
index ec041f182d..35fe233561 100644
--- a/c/src/lib/libbsp/sparc/leon3/startup/bspstart.c
+++ b/c/src/lib/libbsp/sparc/leon3/startup/bspstart.c
@@ -19,6 +19,7 @@
#include <bsp.h>
#include <leon.h>
#include <bsp/bootcard.h>
+#include <rtems/sysinit.h>
#if defined(RTEMS_SMP) || defined(RTEMS_MULTIPROCESSING)
/* Irq used by shared memory driver and for inter-processor interrupts.
@@ -58,12 +59,21 @@ void bsp_start( void )
{
CPU_SPARC_HAS_SNOOPING = set_snooping();
+ leon3_cpu_counter_initialize();
+}
+
+static void leon3_cpu_index_init(void)
+{
/* Get the LEON3 CPU index, normally 0, but for MP systems we do
* _not_ assume that this is CPU0. One may run another OS on CPU0
* and RTEMS on this CPU, and AMP system with mixed operating
* systems
*/
LEON3_Cpu_Index = _LEON3_Get_current_processor();
-
- leon3_cpu_counter_initialize();
}
+
+RTEMS_SYSINIT_ITEM(
+ leon3_cpu_index_init,
+ RTEMS_SYSINIT_BSP_START,
+ RTEMS_SYSINIT_ORDER_FIRST
+);