From 585706a4ec6e92544604510369b62952f4ec9dd8 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 28 Jul 2017 14:42:53 +0200 Subject: bsp/t32mppc: Add SMP support --- c/src/lib/libbsp/powerpc/t32mppc/Makefile.am | 4 ++++ c/src/lib/libbsp/powerpc/t32mppc/configure.ac | 3 +++ c/src/lib/libbsp/powerpc/t32mppc/startup/bspstart.c | 4 ++-- cpukit/score/cpu/powerpc/rtems/score/cpuimpl.h | 3 +++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/c/src/lib/libbsp/powerpc/t32mppc/Makefile.am b/c/src/lib/libbsp/powerpc/t32mppc/Makefile.am index 5b7339a28c..ebc697218e 100644 --- a/c/src/lib/libbsp/powerpc/t32mppc/Makefile.am +++ b/c/src/lib/libbsp/powerpc/t32mppc/Makefile.am @@ -78,5 +78,9 @@ libbsp_a_LIBADD = ../../../libcpu/@RTEMS_CPU@/shared/cpuIdent.rel \ ../../../libcpu/@RTEMS_CPU@/@exceptions@/rtems-cpu.rel \ ../../../libcpu/@RTEMS_CPU@/@exceptions@/exc_bspsupport.rel +if HAS_SMP +libbsp_a_SOURCES += ../../shared/bspsmp.c +endif + include $(srcdir)/preinstall.am include $(top_srcdir)/../../../../automake/local.am diff --git a/c/src/lib/libbsp/powerpc/t32mppc/configure.ac b/c/src/lib/libbsp/powerpc/t32mppc/configure.ac index 4cfaf14616..fce295e9fd 100644 --- a/c/src/lib/libbsp/powerpc/t32mppc/configure.ac +++ b/c/src/lib/libbsp/powerpc/t32mppc/configure.ac @@ -17,6 +17,9 @@ RTEMS_BSPOPTS_HELP_DATA_CACHE_ENABLED RTEMS_BSPOPTS_SET_INSTRUCTION_CACHE_ENABLED([*],[1]) RTEMS_BSPOPTS_HELP_INSTRUCTION_CACHE_ENABLED +RTEMS_CHECK_SMP +AM_CONDITIONAL(HAS_SMP,[test "$rtems_cv_HAS_SMP" = "yes"]) + RTEMS_CHECK_NETWORKING AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes") diff --git a/c/src/lib/libbsp/powerpc/t32mppc/startup/bspstart.c b/c/src/lib/libbsp/powerpc/t32mppc/startup/bspstart.c index f3e1474317..73d1d8cf56 100644 --- a/c/src/lib/libbsp/powerpc/t32mppc/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/t32mppc/startup/bspstart.c @@ -37,7 +37,7 @@ void BSP_panic(char *s) { rtems_interrupt_level level; - rtems_interrupt_disable(level); + rtems_interrupt_local_disable(level); (void) level; printk("%s PANIC %s\n", rtems_get_version_string(), s); @@ -51,7 +51,7 @@ void _BSP_Fatal_error(unsigned n) { rtems_interrupt_level level; - rtems_interrupt_disable(level); + rtems_interrupt_local_disable(level); (void) level; printk("%s PANIC ERROR %u\n", rtems_get_version_string(), n); diff --git a/cpukit/score/cpu/powerpc/rtems/score/cpuimpl.h b/cpukit/score/cpu/powerpc/rtems/score/cpuimpl.h index bc03ab98ac..57c2db1822 100644 --- a/cpukit/score/cpu/powerpc/rtems/score/cpuimpl.h +++ b/cpukit/score/cpu/powerpc/rtems/score/cpuimpl.h @@ -193,6 +193,9 @@ typedef struct { double F13; uint64_t FPSCR; #endif + #if !defined(PPC_MULTILIB_ALTIVEC) && !defined(PPC_MULTILIB_FPU) + uint32_t RESERVED_FOR_STACK_ALIGNMENT; + #endif } CPU_Interrupt_frame; #ifdef RTEMS_SMP -- cgit v1.2.3