Browse Source

* (modified) patch by Michael Ring to enable the FPU on Cortex-M4F if available

git-svn-id: trunk@48722 -
florian 4 years ago
parent
commit
1213948393
2 changed files with 25 additions and 2 deletions
  1. 12 1
      rtl/embedded/arm/cortexm4f_start.inc
  2. 13 1
      rtl/freertos/arm/cortexm4f_start.inc

+ 12 - 1
rtl/embedded/arm/cortexm4f_start.inc

@@ -43,6 +43,14 @@ asm
   str r1, [r0]
   str r1, [r0]
 {$endif REMAP_VECTTAB}
 {$endif REMAP_VECTTAB}
 
 
+{$if defined(FPUARM_HAS_VFP_EXTENSION)}
+  ldr r0, .Lcpacr
+  ldr r1, [r0]
+  orr r1, r1, #0xf00000
+  str r1, [r0]
+  dsb
+  isb
+{$endif defined(FPUARM_HAS_VFP_EXTENSION)}
   bl PASCALMAIN
   bl PASCALMAIN
   b HaltProc
   b HaltProc
 
 
@@ -56,10 +64,13 @@ asm
   .long _data
   .long _data
 .L_edata:
 .L_edata:
   .long _edata
   .long _edata
+{$if defined(FPUARM_HAS_VFP_EXTENSION)}
+.Lcpacr:
+  .long 0xE000ED88
+{$endif defined(FPUARM_HAS_VFP_EXTENSION)}
 {$ifdef REMAP_VECTTAB}
 {$ifdef REMAP_VECTTAB}
 .Lvtor:
 .Lvtor:
   .long 0xE000ED08
   .long 0xE000ED08
 .Ltext_start:
 .Ltext_start:
   .long _text_start
   .long _text_start
 {$endif REMAP_VECTTAB}
 {$endif REMAP_VECTTAB}
-end;

+ 13 - 1
rtl/freertos/arm/cortexm4f_start.inc

@@ -43,6 +43,14 @@ asm
   str r1, [r0]
   str r1, [r0]
 {$endif REMAP_VECTTAB}
 {$endif REMAP_VECTTAB}
 
 
+{$if defined(FPUARM_HAS_VFP_EXTENSION)}
+  ldr r0, .Lcpacr
+  ldr r1, [r0]
+  orr r1, r1, #0xf00000
+  str r1, [r0]
+  dsb
+  isb
+{$endif defined(FPUARM_HAS_VFP_EXTENSION)}
   bl PASCALMAIN
   bl PASCALMAIN
   b HaltProc
   b HaltProc
 
 
@@ -56,10 +64,14 @@ asm
   .long _data
   .long _data
 .L_edata:
 .L_edata:
   .long _edata
   .long _edata
+{$if not defined(FPUARM_HAS_VFP_EXTENSION)}
+.Lcpacr:
+  .long 0xE000ED88
+{$endif defined(FPUARM_HAS_VFP_EXTENSION)}
 {$ifdef REMAP_VECTTAB}
 {$ifdef REMAP_VECTTAB}
 .Lvtor:
 .Lvtor:
   .long 0xE000ED08
   .long 0xE000ED08
 .Ltext_start:
 .Ltext_start:
   .long _text_start
   .long _text_start
 {$endif REMAP_VECTTAB}
 {$endif REMAP_VECTTAB}
-end;
+end;