[PATCH 2/2] RTEMS changes for lpc32xx VFP support

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Aug 19 05:42:22 UTC 2016



On 19/08/16 02:16, Kirspel, Kevin wrote:
>
> diff --git a/c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx.inc 
> b/c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx.inc
>
> old mode 100644
>
> new mode 100755
>
> index f184741..1d478ce
>
> --- a/c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx.inc
>
> +++ b/c/src/lib/libbsp/arm/lpc32xx/make/custom/lpc32xx.inc
>
> @@ -6,7 +6,8 @@ include $(RTEMS_ROOT)/make/custom/default.cfg
>
>  RTEMS_CPU = arm
>
> -CPU_CFLAGS = -mcpu=arm926ej-s -mthumb
>
> +#CPU_CFLAGS = -mcpu=arm926ej-s -mthumb
>
> +CPU_CFLAGS = -mcpu=arm926ej-s -mfpu=vfp -mfloat-abi=softfp
>
>  CFLAGS_OPTIMIZE_V ?= -O2 -g
>
> CFLAGS_OPTIMIZE_V += -ffunction-sections -fdata-sections
>
> diff --git a/c/src/lib/libbsp/arm/shared/start/start.S 
> b/c/src/lib/libbsp/arm/shared/start/start.S
>
> old mode 100644
>
> new mode 100755
>
> index 30501be..cb3bff7
>
> --- a/c/src/lib/libbsp/arm/shared/start/start.S
>
> +++ b/c/src/lib/libbsp/arm/shared/start/start.S
>
> @@ -19,9 +19,9 @@
>
>   */
>
>  #include <rtems/asm.h>
>
> -#include <rtems/system.h>
>
> +#include <rtems/system.h>
>
> #include <rtems/score/cpu.h>
>
> -
>
> +
>
> #include <bspopts.h>
>
> #include <bsp/irq.h>
>
> #include <bsp/linker-symbols.h>
>
> @@ -265,6 +265,7 @@ bsp_start_skip_hyp_svc_switch:
>
>                /* Stay in SVC mode */
>
>  #ifdef ARM_MULTILIB_VFP
>
> +#ifndef ARM_MULTILIB_ARCH_V5TEJ
>

I think a multilib define reflecting the VFP feature set would be better 
instead of this ARM_MULTILIB_ARCH_V5TEJ.

>                /* Read CPACR */
>
>                mrc p15, 0, r0, c1, c0, 2
>
> @@ -280,11 +281,18 @@ bsp_start_skip_hyp_svc_switch:
>
>                /* Write CPACR */
>
>                mcr p15, 0, r0, c1, c0, 2
>
>                isb
>
> +#endif
>
>                 /* Enable FPU */
>
>                mov r0, #(1 << 30)
>
>                vmsr FPEXC, r0
>
> +#ifdef ARM_MULTILIB_ARCH_V5TEJ
>
> +             /* Enable FPU Run Fast*/
>
> +             mov r0, #(3 << 24)
>
> +             vmsr FPSCR, r0
>
> +#endif
>
> +
>
> #ifdef BSP_START_NEEDS_REGISTER_INITIALIZATION
>
>                bl bsp_start_init_registers_vfp
>
> #endif
>
> @@ -399,6 +407,7 @@ _start:
>
> #endif
>
>  #ifdef ARM_MULTILIB_VFP
>
> +#ifndef ARM_MULTILIB_ARCH_V5TEJ
>
>                /*
>
>                 * Enable CP10 and CP11 coprocessors for privileged and 
> user mode in
>
>                 * CPACR (bits 20-23). Ensure that write to register 
> completes.
>
> @@ -409,6 +418,7 @@ _start:
>
>                str           r1, [r0]
>
>                dsb
>
>                isb
>
> +#endif
>
>  #ifdef BSP_START_NEEDS_REGISTER_INITIALIZATION
>
>                bl bsp_start_init_registers_vfp
>
> diff --git a/cpukit/score/cpu/arm/arm-context-validate.S 
> b/cpukit/score/cpu/arm/arm-context-validate.S
>
> old mode 100644
>
> new mode 100755
>
> index fdfb6c1..6485993
>
> --- a/cpukit/score/cpu/arm/arm-context-validate.S
>
> +++ b/cpukit/score/cpu/arm/arm-context-validate.S
>
> @@ -46,7 +46,11 @@
>
>                 .section .text
>
> +#ifdef __thumb__
>
> FUNCTION_THUMB_ENTRY(_CPU_Context_validate)
>
> +#else
>
> +FUNCTION_ENTRY(_CPU_Context_validate)
>
> +#endif
>

I checked in a slightly modified version for the VFP context validation.

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.



More information about the devel mailing list