summaryrefslogtreecommitdiff
path: root/rtl/arm
diff options
context:
space:
mode:
authorpierre <pierre@3ad0048d-3df7-0310-abae-a5850022a9f2>2019-01-30 10:48:21 +0000
committerpierre <pierre@3ad0048d-3df7-0310-abae-a5850022a9f2>2019-01-30 10:48:21 +0000
commitcd0fade7fd574fe57040519c1cfc25c1d7b9caa7 (patch)
tree40352b388eed808c74d5c503a0869dbd64aa3d43 /rtl/arm
parenta6262f808660f2f917ab42ae5aa26a4538ec2d70 (diff)
downloadfpc-cd0fade7fd574fe57040519c1cfc25c1d7b9caa7.tar.gz
Fix cycling of arm compiler starting with release ppcarm 3.0.4
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@41140 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'rtl/arm')
-rw-r--r--rtl/arm/setjump.inc12
1 files changed, 12 insertions, 0 deletions
diff --git a/rtl/arm/setjump.inc b/rtl/arm/setjump.inc
index 763c7613c8..629906358b 100644
--- a/rtl/arm/setjump.inc
+++ b/rtl/arm/setjump.inc
@@ -23,9 +23,13 @@ function fpc_setjmp(var S : jmp_buf) : longint;assembler;[Public, alias : 'FPC_S
// fstmiad increases the address register always by 2n+1 words, so fix this
sub r0,r0,#4
{$else}
+ {$ifdef VER3_0}
+ fstmiad r0!, {d8-d15}
+ {$else}
vstmia r0!, {d8-d15}
{$endif}
{$endif}
+ {$endif}
{$if defined(CPUTHUMB2)}
stmia r0!, {v1-v6, sl, fp}
@@ -70,8 +74,12 @@ procedure fpc_longjmp(var S : jmp_buf;value : longint);assembler;[Public, alias
it eq
moveq r0, #1
{$if defined(FPUVFPV2) or defined(FPUVFPV3) or defined(FPUVFPV4) or defined(FPUVFPV3_D16)}
+ {$ifdef VER3_0}
+ fldmiad ip!, {d8-d15}
+ {$else}
vldmia ip!, {d8-d15}
{$endif}
+ {$endif}
ldmia ip!, {v1-v6, sl, fp}
ldr sp, [ip]
add ip, ip, #4
@@ -108,9 +116,13 @@ procedure fpc_longjmp(var S : jmp_buf;value : longint);assembler;[Public, alias
// increases fldmiax the address register always by 2n+1 words, so fix this
sub ip,ip,#4
{$else}
+ {$ifdef VER3_0}
+ fldmiad ip!, {d8-d15}
+ {$else}
vldmia ip!, {d8-d15}
{$endif}
{$endif}
+ {$endif}
ldmia ip,{v1-v6, sl, fp, sp, pc}
{$endif}
end;