These patches look OK, with the register fixes you noted. I guess at some time, loading initialized data from the ROM was needed, but now it is not?
Gedare On Tue, Jun 8, 2021 at 3:21 AM Sebastian Huber <sebastian.hu...@embedded-brains.de> wrote: > > Directly initialize the memory in the start sequence defined by start.S > instead of using a system initialization handler. This avoids using the > global variable rdb_start which used a memory location which was shared > with _ERC32_MEC_Timer_Control_Mirror. This change makes it possible to > use _Memory_Allocate() even before the system initialization is started. > > Change license to BSD-2-Clause according to file history and > re-licensing agreement. > > Update #3053. > --- > bsps/sparc/shared/start/bspgetworkarea.c | 59 ++++++++++++++---------- > bsps/sparc/shared/start/start.S | 14 ++---- > 2 files changed, 39 insertions(+), 34 deletions(-) > > diff --git a/bsps/sparc/shared/start/bspgetworkarea.c > b/bsps/sparc/shared/start/bspgetworkarea.c > index 3fbeb824f2..6ceda38c07 100644 > --- a/bsps/sparc/shared/start/bspgetworkarea.c > +++ b/bsps/sparc/shared/start/bspgetworkarea.c > @@ -1,44 +1,55 @@ > +/** > + * @file > + * > + * @ingroup RTEMSScoreMemory > + * > + * @brief This source file contains an implementation of _Memory_Get(). > + */ > + > /* > - * This set of routines are the BSP specific initialization > - * support routines. > + * SPDX-License-Identifier: BSD-2-Clause > * > - * COPYRIGHT (c) 1989-2008. > - * On-Line Applications Research Corporation (OAR). > + * Copyright (C) 2019, 2021 embedded brains GmbH > * > - * The license and distribution terms for this file may be > - * found in the file LICENSE in this distribution or at > - * http://www.rtems.org/license/LICENSE. > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS > IS" > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > + * POSSIBILITY OF SUCH DAMAGE. > */ > > #include <bsp.h> > -#include <bsp/bootcard.h> > > -#include <rtems/sysinit.h> > +#include <rtems/score/memory.h> > > -/* Tells us where to put the workspace in case remote debugger is present. > */ > -extern uintptr_t rdb_start; > +/* This function is called only by the start sequence defined in start.S */ > +void _SPARC_Memory_initialize( void *end_of_usable_ram ); > > static Memory_Area _Memory_Areas[ 1 ]; > > static const Memory_Information _Memory_Information = > MEMORY_INFORMATION_INITIALIZER( _Memory_Areas ); > > -static void bsp_memory_initialize( void ) > +void _SPARC_Memory_initialize( void *end_of_usable_ram ) > { > - void *begin; > - uintptr_t size; > - > - begin = &end; > - size = rdb_start - (uintptr_t)begin; > - _Memory_Initialize_by_size( &_Memory_Areas[ 0 ], begin, size ); > + _Memory_Initialize( &_Memory_Areas[ 0 ], &end, end_of_usable_ram ); > } > > -RTEMS_SYSINIT_ITEM( > - bsp_memory_initialize, > - RTEMS_SYSINIT_MEMORY, > - RTEMS_SYSINIT_ORDER_MIDDLE > -); > - > const Memory_Information *_Memory_Get( void ) > { > return &_Memory_Information; > diff --git a/bsps/sparc/shared/start/start.S b/bsps/sparc/shared/start/start.S > index 807e5d1ca3..8a5830ae03 100644 > --- a/bsps/sparc/shared/start/start.S > +++ b/bsps/sparc/shared/start/start.S > @@ -178,16 +178,10 @@ SYM(trap_table): > MEC timer control register mirror is so we can stop the timers > from an external debugger. It is needed because the control > register is write-only. Trap 0x7C cannot occure in ERC32... > - > - We also use this location to store the last location of the > - usable RAM in order not to overwrite the remote debugger with > - the RTEMS work-space area. > - > */ > > - .global SYM(_ERC32_MEC_Timer_Control_Mirror), SYM(rdb_start), > SYM(CLOCK_SPEED) > + .global SYM(_ERC32_MEC_Timer_Control_Mirror), SYM(CLOCK_SPEED) > > -SYM(rdb_start): > SYM(_ERC32_MEC_Timer_Control_Mirror): > > BAD_TRAP; BAD_TRAP; ! 7C - 7D undefined > @@ -320,9 +314,6 @@ SYM(hard_reset): > st %l7, [%l0] > #endif > > - set SYM(rdb_start), %g5 ! End of RAM > - st %o0, [%g5] > - > /* clear the bss */ > > sethi %hi(__bss_start), %g2 ! g2 = start of bss > @@ -338,6 +329,9 @@ SYM(hard_reset): > bleu,a .Lzerobss > nop > > + call SYM(_SPARC_Memory_initialize) > + nop ! o0 = end of usable RAM provided by the initial stack pointer > + > call SYM(boot_card) ! does not return > mov %g0, %i0 ! command line > > -- > 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