seems fine to me
On Wed, Aug 4, 2021 at 6:41 AM Sebastian Huber <sebastian.hu...@embedded-brains.de> wrote: > > Do not continue execution on processors which are not configured to prevent > the > use of arbitrary memory for the initialization stack. > --- > bsps/arm/fvp/start/bspstarthooks.c | 5 +---- > bsps/arm/realview-pbx-a9/start/bspstarthooks.c | 6 +----- > bsps/arm/shared/start/start.S | 16 ++++++++++++++-- > 3 files changed, 16 insertions(+), 11 deletions(-) > > diff --git a/bsps/arm/fvp/start/bspstarthooks.c > b/bsps/arm/fvp/start/bspstarthooks.c > index f0087efa06..d5e56423f4 100644 > --- a/bsps/arm/fvp/start/bspstarthooks.c > +++ b/bsps/arm/fvp/start/bspstarthooks.c > @@ -66,10 +66,7 @@ void bsp_start_hook_0( void ) > * Prevent the fatal errors > SMP_FATAL_MULTITASKING_START_ON_INVALID_PROCESSOR > * and SMP_FATAL_MULTITASKING_START_ON_UNASSIGNED_PROCESSOR this way. > */ > - if ( > - cpu_index_self >= rtems_configuration_get_maximum_processors() > - || !_SMP_Should_start_processor( cpu_index_self ) > - ) { > + if ( !_SMP_Should_start_processor( cpu_index_self ) ) { > while ( true ) { > _ARM_Wait_for_event(); > } > diff --git a/bsps/arm/realview-pbx-a9/start/bspstarthooks.c > b/bsps/arm/realview-pbx-a9/start/bspstarthooks.c > index 1e386bfd23..9549e7235c 100644 > --- a/bsps/arm/realview-pbx-a9/start/bspstarthooks.c > +++ b/bsps/arm/realview-pbx-a9/start/bspstarthooks.c > @@ -67,11 +67,7 @@ BSP_START_TEXT_SECTION void bsp_start_hook_0(void) > * the fatal errors SMP_FATAL_MULTITASKING_START_ON_INVALID_PROCESSOR and > * SMP_FATAL_MULTITASKING_START_ON_UNASSIGNED_PROCESSOR this way. > */ > - if ( > - cpu_index_self != 0 && > - (cpu_index_self >= rtems_configuration_get_maximum_processors() || > - !_SMP_Should_start_processor(cpu_index_self)) > - ) { > + if (cpu_index_self != 0 && !_SMP_Should_start_processor(cpu_index_self)) { > while (true) { > _ARM_Wait_for_event(); > } > diff --git a/bsps/arm/shared/start/start.S b/bsps/arm/shared/start/start.S > index bc87e7b36d..55b5b8d78c 100644 > --- a/bsps/arm/shared/start/start.S > +++ b/bsps/arm/shared/start/start.S > @@ -197,9 +197,21 @@ _start: > /* Read MPIDR and get current processor index */ > mrc p15, 0, r7, c0, c0, 5 > and r7, #0xff > -#endif > > -#ifdef RTEMS_SMP > + /* > + * Check that this is a configured processor. If not, then there is > + * not much what can be done since we do not have a stack available > for > + * this processor. Just loop forever in this case. > + */ > + ldr r1, =_SMP_Processor_configured_maximum > + ldr r1, [r1] > + cmp r1, r7 > + bgt .Lconfigured_processor > +.Linvalid_processor_wait_for_ever: > + wfe > + b .Linvalid_processor_wait_for_ever > +.Lconfigured_processor: > + > /* > * Get current per-CPU control and store it in PL1 only Thread ID > * Register (TPIDRPRW). > -- > 2.26.2 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel