Add VFPv4 FPU type for ARM.

Fix assembler reader so it can read instructions longer than 5 characters.

git-svn-id: trunk@30186 -
This commit is contained in:
Jeppe Johansen 2015-03-14 12:49:07 +00:00
parent f79a8c1544
commit 64f127141f
4 changed files with 10 additions and 4 deletions

View File

@ -165,6 +165,7 @@ uses
IF_FPA = $10000000; IF_FPA = $10000000;
IF_VFPv2 = $20000000; IF_VFPv2 = $20000000;
IF_VFPv3 = $40000000; IF_VFPv3 = $40000000;
IF_VFPv4 = $80000000;
{ if the instruction can change in a second pass } { if the instruction can change in a second pass }
IF_PASS2 = longint($80000000); IF_PASS2 = longint($80000000);
@ -2034,7 +2035,8 @@ implementation
IF_VFPv2, IF_VFPv2,
IF_VFPv2 or IF_VFPv3, IF_VFPv2 or IF_VFPv3,
IF_VFPv2 or IF_VFPv3, IF_VFPv2 or IF_VFPv3,
IF_NONE IF_NONE,
IF_VFPv2 or IF_VFPv3 or IF_VFPv4
); );
begin begin
fArmVMask:=Masks[current_settings.cputype] or FPUMasks[current_settings.fputype]; fArmVMask:=Masks[current_settings.cputype] or FPUMasks[current_settings.fputype];

View File

@ -109,6 +109,8 @@ unit agarmgas;
result:='-mfpu=vfpv3-d16 '+result; result:='-mfpu=vfpv3-d16 '+result;
if (current_settings.fputype = fpu_fpv4_s16) then if (current_settings.fputype = fpu_fpv4_s16) then
result:='-mfpu=fpv4-sp-d16 '+result; result:='-mfpu=fpv4-sp-d16 '+result;
if (current_settings.fputype = fpu_vfpv4) then
result:='-mfpu=vfpv4 '+result;
if GenerateThumb2Code then if GenerateThumb2Code then
result:='-march='+cputype_to_gas_march[current_settings.cputype]+' -mthumb -mthumb-interwork '+result result:='-march='+cputype_to_gas_march[current_settings.cputype]+' -mthumb -mthumb-interwork '+result

View File

@ -67,7 +67,8 @@ Type
fpu_vfpv2, fpu_vfpv2,
fpu_vfpv3, fpu_vfpv3,
fpu_vfpv3_d16, fpu_vfpv3_d16,
fpu_fpv4_s16 fpu_fpv4_s16,
fpu_vfpv4
); );
tcontrollertype = tcontrollertype =
@ -402,7 +403,8 @@ Const
'VFPV2', 'VFPV2',
'VFPV3', 'VFPV3',
'VFPV3_D16', 'VFPV3_D16',
'FPV4_S16' 'FPV4_S16',
'VFPV4'
); );

View File

@ -1287,7 +1287,7 @@ Unit raarmgas;
end; end;
end; end;
end; end;
maxlen:=min(length(hs),5); maxlen:=min(length(hs),6);
actopcode:=A_NONE; actopcode:=A_NONE;
j2:=maxlen; j2:=maxlen;
hs2:=hs; hs2:=hs;