[PATCH] score: Delete _CPU_Context_Fp_start()

Joel Sherrill joel at rtems.org
Wed Jan 25 16:24:09 UTC 2017


I had another thought that we need to be sure that the
reason for adjusting the starting FP context pointer
to not be the base address of the FP context area
should be clear.

For architectures where you are just linearly saving the FPU
registers, it is just a normal structure.

For architectures like the m68k where the FPU state is saved
as a stack which grows down, the adjustment should have
a comment to explain it. Even if it is done inline in the
context initialization.

--joel

On Wed, Jan 25, 2017 at 10:18 AM, Joel Sherrill <joel at rtems.org> wrote:

>
>
> On Wed, Jan 25, 2017 at 10:13 AM, Gedare Bloom <gedare at rtems.org> wrote:
>
>> I guess the CPU Supplement must be updated too.
>>
>>
>>
> Equally likely to impact the porting guide as well.
>
> --joel
>
>
>>
>> On Wed, Jan 25, 2017 at 8:35 AM, Sebastian Huber
>> <sebastian.huber at embedded-brains.de> wrote:
>> > Since the FP area pointer is passed by reference in
>> > _CPU_Context_Initialize_fp() the optional FP area adjustment via
>> > _CPU_Context_Fp_start() is superfluous.  It is also wrong with respect
>> > to memory management, e.g. pointer passed to _Workspace_Free() may be
>> > not the one returned by _Workspace_Allocate().
>> >
>> > Close #1400.
>> > ---
>> >  cpukit/score/cpu/arm/rtems/score/cpu.h      |  3 ---
>> >  cpukit/score/cpu/bfin/rtems/score/cpu.h     | 25
>> -------------------------
>> >  cpukit/score/cpu/epiphany/rtems/score/cpu.h | 18 ------------------
>> >  cpukit/score/cpu/i386/rtems/score/cpu.h     |  3 ---
>> >  cpukit/score/cpu/lm32/rtems/score/cpu.h     | 27
>> ---------------------------
>> >  cpukit/score/cpu/m32c/rtems/score/cpu.h     | 26
>> --------------------------
>> >  cpukit/score/cpu/m68k/rtems/score/cpu.h     | 20 ++------------------
>> >  cpukit/score/cpu/mips/rtems/score/cpu.h     | 17 -----------------
>> >  cpukit/score/cpu/moxie/rtems/score/cpu.h    | 20 --------------------
>> >  cpukit/score/cpu/no_cpu/rtems/score/cpu.h   | 26
>> --------------------------
>> >  cpukit/score/cpu/or1k/rtems/score/cpu.h     | 18 +++++++-----------
>> >  cpukit/score/cpu/powerpc/rtems/score/cpu.h  | 17 -----------------
>> >  cpukit/score/cpu/sh/rtems/score/cpu.h       | 17 -----------------
>> >  cpukit/score/cpu/sparc/rtems/score/cpu.h    |  7 -------
>> >  cpukit/score/cpu/sparc64/rtems/score/cpu.h  |  8 --------
>> >  cpukit/score/cpu/v850/rtems/score/cpu.h     | 28
>> ----------------------------
>> >  cpukit/score/include/rtems/score/context.h  | 16 ----------------
>> >  cpukit/score/src/threadinitialize.c         |  1 -
>> >  18 files changed, 9 insertions(+), 288 deletions(-)
>> >
>> > diff --git a/cpukit/score/cpu/arm/rtems/score/cpu.h
>> b/cpukit/score/cpu/arm/rtems/score/cpu.h
>> > index cdffc9c..9f321ac 100644
>> > --- a/cpukit/score/cpu/arm/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/arm/rtems/score/cpu.h
>> > @@ -458,9 +458,6 @@ void _CPU_Context_Initialize(
>> >  #define _CPU_Context_Restart_self( _the_context ) \
>> >     _CPU_Context_restore( (_the_context) );
>> >
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> >  #define _CPU_Context_Initialize_fp( _destination ) \
>> >    do { \
>> >      *(*(_destination)) = _CPU_Null_fp_context; \
>> > diff --git a/cpukit/score/cpu/bfin/rtems/score/cpu.h
>> b/cpukit/score/cpu/bfin/rtems/score/cpu.h
>> > index cdefedf..7c90fc6 100644
>> > --- a/cpukit/score/cpu/bfin/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/bfin/rtems/score/cpu.h
>> > @@ -734,31 +734,6 @@ void _CPU_Context_Initialize(
>> >  #define _CPU_Context_Restart_self( _the_context ) \
>> >     _CPU_Context_restore( (_the_context) );
>> >
>> > -/**
>> > - * @ingroup CPUContext
>> > - * The purpose of this macro is to allow the initial pointer into
>> > - * a floating point context area (used to save the floating point
>> > - * context) to be at an arbitrary place in the floating point
>> > - * context area.
>> > - *
>> > - * This is necessary because some FP units are designed to have
>> > - * their context saved as a stack which grows into lower addresses.
>> > - * Other FP units can be saved by simply moving registers into offsets
>> > - * from the base of the context area.  Finally some FP units provide
>> > - * a "dump context" instruction which could fill in from high to low
>> > - * or low to high based on the whim of the CPU designers.
>> > - *
>> > - * @param[in] _base is the lowest physical address of the floating
>> point
>> > - *        context area
>> > - * @param[in] _offset is the offset into the floating point area
>> > - *
>> > - * Port Specific Information:
>> > - *
>> > - * XXX document implementation including references if appropriate
>> > - */
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> >  #define _CPU_Context_Initialize_fp( _destination ) \
>> >    memset( *( _destination ), 0, CPU_CONTEXT_FP_SIZE );
>> >
>> > diff --git a/cpukit/score/cpu/epiphany/rtems/score/cpu.h
>> b/cpukit/score/cpu/epiphany/rtems/score/cpu.h
>> > index 55faefa..020d949 100644
>> > --- a/cpukit/score/cpu/epiphany/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/epiphany/rtems/score/cpu.h
>> > @@ -624,24 +624,6 @@ void _CPU_Context_Initialize(
>> >  #define _CPU_Context_Restart_self( _the_context ) \
>> >     _CPU_Context_restore( (_the_context) )
>> >
>> > -/*
>> > - *  The purpose of this macro is to allow the initial pointer into
>> > - *  a floating point context area (used to save the floating point
>> > - *  context) to be at an arbitrary place in the floating point
>> > - *  context area.
>> > - *
>> > - *  This is necessary because some FP units are designed to have
>> > - *  their context saved as a stack which grows into lower addresses.
>> > - *  Other FP units can be saved by simply moving registers into offsets
>> > - *  from the base of the context area.  Finally some FP units provide
>> > - *  a "dump context" instruction which could fill in from high to low
>> > - *  or low to high based on the whim of the CPU designers.
>> > - *
>> > - */
>> > -
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> >  #define _CPU_Context_Initialize_fp( _destination ) \
>> >    memset( *( _destination ), 0, CPU_CONTEXT_FP_SIZE );
>> >
>> > diff --git a/cpukit/score/cpu/i386/rtems/score/cpu.h
>> b/cpukit/score/cpu/i386/rtems/score/cpu.h
>> > index 052e53f..ace26f3 100644
>> > --- a/cpukit/score/cpu/i386/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/i386/rtems/score/cpu.h
>> > @@ -508,9 +508,6 @@ uint32_t   _CPU_ISR_Get_level( void );
>> >    }
>> >  #endif
>> >
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> >  #define _CPU_Context_Initialize_fp( _fp_area ) \
>> >    { \
>> >      memcpy( *_fp_area, &_CPU_Null_fp_context, CPU_CONTEXT_FP_SIZE ); \
>> > diff --git a/cpukit/score/cpu/lm32/rtems/score/cpu.h
>> b/cpukit/score/cpu/lm32/rtems/score/cpu.h
>> > index 87cfd9e..9d22994 100644
>> > --- a/cpukit/score/cpu/lm32/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/lm32/rtems/score/cpu.h
>> > @@ -749,33 +749,6 @@ extern char _gp[];
>> >     _CPU_Context_restore( (_the_context) );
>> >
>> >  /**
>> > - * @ingroup CPUContext
>> > - * The purpose of this macro is to allow the initial pointer into
>> > - * a floating point context area (used to save the floating point
>> > - * context) to be at an arbitrary place in the floating point
>> > - * context area.
>> > - *
>> > - * This is necessary because some FP units are designed to have
>> > - * their context saved as a stack which grows into lower addresses.
>> > - * Other FP units can be saved by simply moving registers into offsets
>> > - * from the base of the context area.  Finally some FP units provide
>> > - * a "dump context" instruction which could fill in from high to low
>> > - * or low to high based on the whim of the CPU designers.
>> > - *
>> > - * @param[in] _base is the lowest physical address of the floating
>> point
>> > - *        context area
>> > - * @param[in] _offset is the offset into the floating point area
>> > - *
>> > - * Port Specific Information:
>> > - *
>> > - * XXX document implementation including references if appropriate
>> > - */
>> > -#define _CPU_Context_Fp_start( _base, _offset )
>> > -#if 0
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -#endif
>> > -
>> > -/**
>> >   * This routine initializes the FP context area passed to it to.
>> >   * There are a few standard ways in which to initialize the
>> >   * floating point context.  The code included for this macro assumes
>> > diff --git a/cpukit/score/cpu/m32c/rtems/score/cpu.h
>> b/cpukit/score/cpu/m32c/rtems/score/cpu.h
>> > index 8dd8c41..af1c341 100644
>> > --- a/cpukit/score/cpu/m32c/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/m32c/rtems/score/cpu.h
>> > @@ -740,32 +740,6 @@ void _CPU_Context_Restart_self(
>> >  ) RTEMS_NO_RETURN;
>> >
>> >  /**
>> > - * @ingroup CPUContext
>> > - *
>> > - * The purpose of this macro is to allow the initial pointer into
>> > - * a floating point context area (used to save the floating point
>> > - * context) to be at an arbitrary place in the floating point
>> > - * context area.
>> > - *
>> > - * This is necessary because some FP units are designed to have
>> > - * their context saved as a stack which grows into lower addresses.
>> > - * Other FP units can be saved by simply moving registers into offsets
>> > - * from the base of the context area.  Finally some FP units provide
>> > - * a "dump context" instruction which could fill in from high to low
>> > - * or low to high based on the whim of the CPU designers.
>> > - *
>> > - * @param[in] _base is the lowest physical address of the floating
>> point
>> > - *        context area
>> > - * @param[in] _offset is the offset into the floating point area
>> > - *
>> > - * Port Specific Information:
>> > - *
>> > - * XXX document implementation including references if appropriate
>> > - */
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> > -/**
>> >   * This routine initializes the FP context area passed to it to.
>> >   * There are a few standard ways in which to initialize the
>> >   * floating point context.  The code included for this macro assumes
>> > diff --git a/cpukit/score/cpu/m68k/rtems/score/cpu.h
>> b/cpukit/score/cpu/m68k/rtems/score/cpu.h
>> > index 0b9aa2d..ec6fd2e 100644
>> > --- a/cpukit/score/cpu/m68k/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/m68k/rtems/score/cpu.h
>> > @@ -172,12 +172,6 @@ typedef struct {
>> >      } _operand2;
>> >    } Context_Control_fp;
>> >
>> > -  /*
>> > -   *  This software FP implementation is only for GCC.
>> > -   */
>> > -  #define _CPU_Context_Fp_start( _base, _offset ) \
>> > -     ((void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> >    #define _CPU_Context_Initialize_fp( _fp_area ) \
>> >       { \
>> >         Context_Control_fp *_fp; \
>> > @@ -234,9 +228,6 @@ typedef struct {
>> >        #endif
>> >      } Context_Control_fp;
>> >
>> > -    #define _CPU_Context_Fp_start( _base, _offset ) \
>> > -      ((void *) _Addresses_Add_offset( (_base), (_offset) ))
>> > -
>> >      /*
>> >       * The reset value for all context relevant registers except the
>> FP data
>> >       * registers is zero.  The reset value of the FP data register is
>> NAN.  The
>> > @@ -260,17 +251,10 @@ typedef struct {
>> >        uint8_t fp_save_area [M68K_FP_STATE_SIZE + 112];
>> >      } Context_Control_fp;
>> >
>> > -    #define _CPU_Context_Fp_start( _base, _offset ) \
>> > -       ( \
>> > -         (void *) _Addresses_Add_offset( \
>> > -            (_base), \
>> > -            (_offset) + CPU_CONTEXT_FP_SIZE - 4 \
>> > -         ) \
>> > -       )
>> > -
>> >      #define _CPU_Context_Initialize_fp( _fp_area ) \
>> >         { \
>> > -         uint32_t   *_fp_context = (uint32_t *)*(_fp_area); \
>> > +         uint32_t *_fp_context = _Addresses_Add_offset( \
>> > +           *(_fp_area), CPU_CONTEXT_FP_SIZE - 4); \
>> >           *(--(_fp_context)) = 0; \
>> >           *(_fp_area) = (void *)(_fp_context); \
>> >         }
>> > diff --git a/cpukit/score/cpu/mips/rtems/score/cpu.h
>> b/cpukit/score/cpu/mips/rtems/score/cpu.h
>> > index 9a45d0b..74afc80 100644
>> > --- a/cpukit/score/cpu/mips/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/mips/rtems/score/cpu.h
>> > @@ -792,23 +792,6 @@ void _CPU_Context_Initialize(
>> >     _CPU_Context_restore( (_the_context) );
>> >
>> >  /*
>> > - *  The purpose of this macro is to allow the initial pointer into
>> > - *  A floating point context area (used to save the floating point
>> > - *  context) to be at an arbitrary place in the floating point
>> > - *  context area.
>> > - *
>> > - *  This is necessary because some FP units are designed to have
>> > - *  their context saved as a stack which grows into lower addresses.
>> > - *  Other FP units can be saved by simply moving registers into offsets
>> > - *  from the base of the context area.  Finally some FP units provide
>> > - *  a "dump context" instruction which could fill in from high to low
>> > - *  or low to high based on the whim of the CPU designers.
>> > - */
>> > -
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> > -/*
>> >   *  This routine initializes the FP context area passed to it to.
>> >   *  There are a few standard ways in which to initialize the
>> >   *  floating point context.  The code included for this macro assumes
>> > diff --git a/cpukit/score/cpu/moxie/rtems/score/cpu.h
>> b/cpukit/score/cpu/moxie/rtems/score/cpu.h
>> > index b77083d..a8b2263 100644
>> > --- a/cpukit/score/cpu/moxie/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/moxie/rtems/score/cpu.h
>> > @@ -608,26 +608,6 @@ uint32_t   _CPU_ISR_Get_level( void );
>> >  #define _CPU_Context_Restart_self( _the_context ) \
>> >     _CPU_Context_restore( (_the_context) );
>> >
>> > -/*
>> > - *  The purpose of this macro is to allow the initial pointer into
>> > - *  a floating point context area (used to save the floating point
>> > - *  context) to be at an arbitrary place in the floating point
>> > - *  context area.
>> > - *
>> > - *  This is necessary because some FP units are designed to have
>> > - *  their context saved as a stack which grows into lower addresses.
>> > - *  Other FP units can be saved by simply moving registers into offsets
>> > - *  from the base of the context area.  Finally some FP units provide
>> > - *  a "dump context" instruction which could fill in from high to low
>> > - *  or low to high based on the whim of the CPU designers.
>> > - *
>> > - *  MOXIE Specific Information:
>> > - *
>> > - *  XXX
>> > - */
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) (_base) + (_offset) )
>> > -
>> >  #define _CPU_Context_Initialize_fp( _destination ) \
>> >    memset( *( _destination ), 0, CPU_CONTEXT_FP_SIZE );
>> >
>> > diff --git a/cpukit/score/cpu/no_cpu/rtems/score/cpu.h
>> b/cpukit/score/cpu/no_cpu/rtems/score/cpu.h
>> > index 372b01f..62e1a91 100644
>> > --- a/cpukit/score/cpu/no_cpu/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/no_cpu/rtems/score/cpu.h
>> > @@ -876,32 +876,6 @@ uint32_t   _CPU_ISR_Get_level( void );
>> >     _CPU_Context_restore( (_the_context) );
>> >
>> >  /**
>> > - * @ingroup CPUContext
>> > - *
>> > - * The purpose of this macro is to allow the initial pointer into
>> > - * a floating point context area (used to save the floating point
>> > - * context) to be at an arbitrary place in the floating point
>> > - *context area.
>> > - *
>> > - * This is necessary because some FP units are designed to have
>> > - * their context saved as a stack which grows into lower addresses.
>> > - * Other FP units can be saved by simply moving registers into offsets
>> > - * from the base of the context area.  Finally some FP units provide
>> > - * a "dump context" instruction which could fill in from high to low
>> > - * or low to high based on the whim of the CPU designers.
>> > - *
>> > - * @param[in] _base is the lowest physical address of the floating
>> point
>> > - *        context area
>> > - * @param[in] _offset is the offset into the floating point area
>> > - *
>> > - * Port Specific Information:
>> > - *
>> > - * XXX document implementation including references if appropriate
>> > - */
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> > -/**
>> >   * This routine initializes the FP context area passed to it to.
>> >   * There are a few standard ways in which to initialize the
>> >   * floating point context.  The code included for this macro assumes
>> > diff --git a/cpukit/score/cpu/or1k/rtems/score/cpu.h
>> b/cpukit/score/cpu/or1k/rtems/score/cpu.h
>> > index 4a643c7..3d4a6e0 100644
>> > --- a/cpukit/score/cpu/or1k/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/or1k/rtems/score/cpu.h
>> > @@ -620,10 +620,11 @@ void _CPU_Context_Initialize(
>> >     _CPU_Context_restore( (_the_context) );
>> >
>> >  /*
>> > - *  The purpose of this macro is to allow the initial pointer into
>> > - *  a floating point context area (used to save the floating point
>> > - *  context) to be at an arbitrary place in the floating point
>> > - *  context area.
>> > + *  This routine is responsible to initialize the FP context.
>> > + *
>> > + *  The FP area pointer is passed by reference to allow the initial
>> pointer
>> > + *  into a floating point context area (used to save the floating point
>> > + *  context) to be at an arbitrary place in the floating point context
>> area.
>> >   *
>> >   *  This is necessary because some FP units are designed to have
>> >   *  their context saved as a stack which grows into lower addresses.
>> > @@ -631,14 +632,9 @@ void _CPU_Context_Initialize(
>> >   *  from the base of the context area.  Finally some FP units provide
>> >   *  a "dump context" instruction which could fill in from high to low
>> >   *  or low to high based on the whim of the CPU designers.
>> > - *
>> >   */
>> > -
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> > -#define _CPU_Context_Initialize_fp( _destination ) \
>> > -  memset( *( _destination ), 0, CPU_CONTEXT_FP_SIZE );
>> > +#define _CPU_Context_Initialize_fp( _fp_area_p ) \
>> > +  memset( *( _fp_area_p ), 0, CPU_CONTEXT_FP_SIZE )
>> >
>> >  /* end of Context handler macros */
>> >
>> > diff --git a/cpukit/score/cpu/powerpc/rtems/score/cpu.h
>> b/cpukit/score/cpu/powerpc/rtems/score/cpu.h
>> > index 93d620e..a847667 100644
>> > --- a/cpukit/score/cpu/powerpc/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/powerpc/rtems/score/cpu.h
>> > @@ -831,23 +831,6 @@ void _CPU_Context_Initialize(
>> >     _CPU_Context_restore( (_the_context) );
>> >
>> >  /*
>> > - *  The purpose of this macro is to allow the initial pointer into
>> > - *  a floating point context area (used to save the floating point
>> > - *  context) to be at an arbitrary place in the floating point
>> > - *  context area.
>> > - *
>> > - *  This is necessary because some FP units are designed to have
>> > - *  their context saved as a stack which grows into lower addresses.
>> > - *  Other FP units can be saved by simply moving registers into offsets
>> > - *  from the base of the context area.  Finally some FP units provide
>> > - *  a "dump context" instruction which could fill in from high to low
>> > - *  or low to high based on the whim of the CPU designers.
>> > - */
>> > -
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> > -/*
>> >   *  This routine initializes the FP context area passed to it to.
>> >   *  There are a few standard ways in which to initialize the
>> >   *  floating point context.  The code included for this macro assumes
>> > diff --git a/cpukit/score/cpu/sh/rtems/score/cpu.h
>> b/cpukit/score/cpu/sh/rtems/score/cpu.h
>> > index 0ad3829..c2b7081 100644
>> > --- a/cpukit/score/cpu/sh/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/sh/rtems/score/cpu.h
>> > @@ -550,23 +550,6 @@ void _CPU_Context_Initialize(
>> >     _CPU_Context_restore( (_the_context) );
>> >
>> >  /*
>> > - *  The purpose of this macro is to allow the initial pointer into
>> > - *  a floating point context area (used to save the floating point
>> > - *  context) to be at an arbitrary place in the floating point
>> > - *  context area.
>> > - *
>> > - *  This is necessary because some FP units are designed to have
>> > - *  their context saved as a stack which grows into lower addresses.
>> > - *  Other FP units can be saved by simply moving registers into offsets
>> > - *  from the base of the context area.  Finally some FP units provide
>> > - *  a "dump context" instruction which could fill in from high to low
>> > - *  or low to high based on the whim of the CPU designers.
>> > - */
>> > -
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> > -/*
>> >   *  This routine initializes the FP context area passed to it to.
>> >   *  There are a few standard ways in which to initialize the
>> >   *  floating point context.  The code included for this macro assumes
>> > diff --git a/cpukit/score/cpu/sparc/rtems/score/cpu.h
>> b/cpukit/score/cpu/sparc/rtems/score/cpu.h
>> > index a59fc36..7c81f07 100644
>> > --- a/cpukit/score/cpu/sparc/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/sparc/rtems/score/cpu.h
>> > @@ -956,13 +956,6 @@ void _CPU_Context_Initialize(
>> >     _CPU_Context_restore( (_the_context) );
>> >
>> >  /**
>> > - * The FP context area for the SPARC is a simple structure and nothing
>> > - * special is required to find the "starting load point"
>> > - */
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> > -/**
>> >   * This routine initializes the FP context area passed to it to.
>> >   *
>> >   * The SPARC allows us to use the simple initialization model
>> > diff --git a/cpukit/score/cpu/sparc64/rtems/score/cpu.h
>> b/cpukit/score/cpu/sparc64/rtems/score/cpu.h
>> > index 9926ebb..47041e7 100644
>> > --- a/cpukit/score/cpu/sparc64/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/sparc64/rtems/score/cpu.h
>> > @@ -824,14 +824,6 @@ void _CPU_Context_Initialize(
>> >     _CPU_Context_restore( (_the_context) );
>> >
>> >  /*
>> > - *  The FP context area for the SPARC is a simple structure and nothing
>> > - *  special is required to find the "starting load point"
>> > - */
>> > -
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -
>> > -/*
>> >   *  This routine initializes the FP context area passed to it to.
>> >   *
>> >   *  The SPARC allows us to use the simple initialization model
>> > diff --git a/cpukit/score/cpu/v850/rtems/score/cpu.h
>> b/cpukit/score/cpu/v850/rtems/score/cpu.h
>> > index 6c77f51..d3cdf05 100644
>> > --- a/cpukit/score/cpu/v850/rtems/score/cpu.h
>> > +++ b/cpukit/score/cpu/v850/rtems/score/cpu.h
>> > @@ -699,34 +699,6 @@ void _CPU_Context_Initialize(
>> >  /* XXX this should be possible to remove */
>> >  #if 0
>> >  /**
>> > - * @ingroup CPUContext
>> > - * The purpose of this macro is to allow the initial pointer into
>> > - * a floating point context area (used to save the floating point
>> > - * context) to be at an arbitrary place in the floating point
>> > - * context area.
>> > - *
>> > - * This is necessary because some FP units are designed to have
>> > - * their context saved as a stack which grows into lower addresses.
>> > - * Other FP units can be saved by simply moving registers into offsets
>> > - * from the base of the context area.  Finally some FP units provide
>> > - * a "dump context" instruction which could fill in from high to low
>> > - * or low to high based on the whim of the CPU designers.
>> > - *
>> > - * @param[in] _base is the lowest physical address of the floating
>> point
>> > - *        context area
>> > - * @param[in] _offset is the offset into the floating point area
>> > - *
>> > - * Port Specific Information:
>> > - *
>> > - * XXX document implementation including references if appropriate
>> > - */
>> > -#define _CPU_Context_Fp_start( _base, _offset ) \
>> > -   ( (void *) _Addresses_Add_offset( (_base), (_offset) ) )
>> > -#endif
>> > -
>> > -/* XXX this should be possible to remove */
>> > -#if 0
>> > -/**
>> >   * This routine initializes the FP context area passed to it to.
>> >   * There are a few standard ways in which to initialize the
>> >   * floating point context.  The code included for this macro assumes
>> > diff --git a/cpukit/score/include/rtems/score/context.h
>> b/cpukit/score/include/rtems/score/context.h
>> > index 7e59f05..46cb460 100644
>> > --- a/cpukit/score/include/rtems/score/context.h
>> > +++ b/cpukit/score/include/rtems/score/context.h
>> > @@ -111,22 +111,6 @@ extern "C" {
>> >     _CPU_Context_Restart_self( _the_context )
>> >
>> >  /**
>> > - *  @brief Return starting address of floating point context.
>> > - *
>> > - *  This function returns the starting address of the floating
>> > - *  point context save area.  It is assumed that the are reserved
>> > - *  for the floating point save area is large enough.
>> > - *
>> > - *  @param[in] _base is lowest physical address of the floating point
>> > - *         context save area.
>> > - *  @param[in] _offset is the offset into the floating point area
>> > - *
>> > - *  @retval the initial FP context pointer
>> > - */
>> > -#define _Context_Fp_start( _base, _offset ) \
>> > -   _CPU_Context_Fp_start( (_base), (_offset) )
>> > -
>> > -/**
>> >   *  @brief Initialize floating point context area.
>> >   *
>> >   *  This routine initializes the floating point context save
>> > diff --git a/cpukit/score/src/threadinitialize.c
>> b/cpukit/score/src/threadinitialize.c
>> > index 9ae2acb..5725c6e 100644
>> > --- a/cpukit/score/src/threadinitialize.c
>> > +++ b/cpukit/score/src/threadinitialize.c
>> > @@ -137,7 +137,6 @@ bool _Thread_Initialize(
>> >        fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );
>> >        if ( !fp_area )
>> >          goto failed;
>> > -      fp_area = _Context_Fp_start( fp_area, 0 );
>> >      }
>> >      the_thread->fp_context       = fp_area;
>> >      the_thread->Start.fp_context = fp_area;
>> > --
>> > 1.8.4.5
>> >
>> > _______________________________________________
>> > devel mailing list
>> > devel at rtems.org
>> > http://lists.rtems.org/mailman/listinfo/devel
>> _______________________________________________
>> devel mailing list
>> devel at rtems.org
>> http://lists.rtems.org/mailman/listinfo/devel
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20170125/063043c1/attachment-0001.html>


More information about the devel mailing list