[rtems commit] bsp/genmcf548x: Enable FPU in BSP startup code

Joel Sherrill joel.sherrill at OARcorp.com
Fri Apr 20 12:16:59 UTC 2012


Is your intent to verify this did or did not cover something up?

And if it did, to fix it

Sebastian Huber <sebh at rtems.org> wrote:

>Module:    rtems
>Branch:    master
>Commit:    6d136ed9dd9eb3a5929d18e5c7f37b5265a35f11
>Changeset: http://git.rtems.org/rtems/commit/?id=6d136ed9dd9eb3a5929d18e5c7f37b5265a35f11
>
>Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
>Date:      Fri Apr 20 14:03:39 2012 +0200
>
>bsp/genmcf548x: Enable FPU in BSP startup code
>
>---
>
> .../lib/libbsp/m68k/genmcf548x/startup/bspstart.c  |   18 +++++-------------
> 1 files changed, 5 insertions(+), 13 deletions(-)
>
>diff --git a/c/src/lib/libbsp/m68k/genmcf548x/startup/bspstart.c b/c/src/lib/libbsp/m68k/genmcf548x/startup/bspstart.c
>index 743ad4c..9de5d56 100644
>--- a/c/src/lib/libbsp/m68k/genmcf548x/startup/bspstart.c
>+++ b/c/src/lib/libbsp/m68k/genmcf548x/startup/bspstart.c
>@@ -70,8 +70,10 @@ extern char WorkAreaBase [];
> #define m68k_set_acr3(_acr3) __asm__ volatile ("movec %0,#0x0007" : : "d" (_acr3))
> 
> /*
>- * Set initial cacr mode, mainly enables branch/intruction/data cache and
>- * switch off FPU.
>+ * Set initial CACR mode, mainly enables branch/instruction/data cache.  The
>+ * FPU must be switched on in the BSP startup code since the
>+ * _Thread_Start_multitasking() will restore the floating-point context of the
>+ * initialization task if necessary.
>  */
> static const uint32_t BSP_CACR_INIT = MCF548X_CACR_DEC /* enable data cache */
>   | MCF548X_CACR_BEC /* enable branch cache */
>@@ -80,8 +82,7 @@ static const uint32_t BSP_CACR_INIT = MCF548X_CACR_DEC /* enable data cache */
>       /* set data cache mode to write-through */
>   | MCF548X_CACR_DESB /* enable data store buffer */
>   | MCF548X_CACR_DDSP /* data access only in supv. mode */
>-  | MCF548X_CACR_IDSP /* instr. access only in supv. mode */
>-  | MCF548X_CACR_DF; /* disable FPU */
>+  | MCF548X_CACR_IDSP; /* instr. access only in supv. mode */
> 
> /*
>  * CACR maintenance functions
>@@ -273,15 +274,6 @@ void bsp_start( void )
>   /* Initialize CACR shadow register */
>   _CPU_cacr_shadow = BSP_CACR_INIT;
> 
>-  /* Switch on FPU in CACR shadow register if necessary */
>-  if ((Configuration_POSIX_API.number_of_initialization_threads > 0) ||
>-      ((Configuration_RTEMS_API.number_of_initialization_tasks > 0) &&
>-       (Configuration_RTEMS_API.User_initialization_tasks_table
>-	->attribute_set & RTEMS_FLOATING_POINT) != 0)
>-      ) {
>-    _CPU_cacr_shadow &= ~MCF548X_CACR_DF;
>-  }
>-
>   /*
>    * Load the shadow variable of CACR with initial mode and write it to the
>    * CACR.  Interrupts are still disabled, so there is no need for surrounding
>
>_______________________________________________
>rtems-vc mailing list
>rtems-vc at rtems.org
>http://www.rtems.org/mailman/listinfo/rtems-vc




More information about the devel mailing list