|
@@ -32,11 +32,29 @@ Type
|
|
{ possible supported processors for this target }
|
|
{ possible supported processors for this target }
|
|
tcputype =
|
|
tcputype =
|
|
(cpu_none,
|
|
(cpu_none,
|
|
- cpu_mips32
|
|
|
|
|
|
+ cpu_mips_default,
|
|
|
|
+ cpu_mips1,
|
|
|
|
+ cpu_mis2,
|
|
|
|
+ cpu_mips3,
|
|
|
|
+ cpu_mips4,
|
|
|
|
+ cpu_mips5,
|
|
|
|
+ cpu_mips32,
|
|
|
|
+ cpu_mips32r2
|
|
);
|
|
);
|
|
|
|
|
|
tfputype =(fpu_none,fpu_soft,fpu_mips2,fpu_mips3);
|
|
tfputype =(fpu_none,fpu_soft,fpu_mips2,fpu_mips3);
|
|
|
|
|
|
|
|
+ tabitype =
|
|
|
|
+ (
|
|
|
|
+ abi_none,
|
|
|
|
+ abi_default,
|
|
|
|
+ abi_o32,
|
|
|
|
+ abi_n32,
|
|
|
|
+ abi_o64,
|
|
|
|
+ abi_n64,
|
|
|
|
+ abi_eabi
|
|
|
|
+ );
|
|
|
|
+
|
|
Const
|
|
Const
|
|
{# Size of native extended floating point type }
|
|
{# Size of native extended floating point type }
|
|
extended_size = 8;
|
|
extended_size = 8;
|
|
@@ -58,15 +76,40 @@ Const
|
|
pocall_cppdecl
|
|
pocall_cppdecl
|
|
];
|
|
];
|
|
|
|
|
|
- cputypestr : array[tcputype] of string[6] = ('',
|
|
|
|
- 'MIPS32'
|
|
|
|
|
|
+ { cpu strings as accepted by
|
|
|
|
+ GNU assembler in -arch=XXX option }
|
|
|
|
+ cputypestr : array[tcputype] of string[8] = ('',
|
|
|
|
+ { cpu_mips_default } 'mips2',
|
|
|
|
+ { cpu_mips1 } 'mips1',
|
|
|
|
+ { cpu_mips2 } 'mips2',
|
|
|
|
+ { cpu_mips3 } 'mips3',
|
|
|
|
+ { cpu_mips4 } 'mips4',
|
|
|
|
+ { cpu_mips5 } 'mips5',
|
|
|
|
+ { cpu_mips32 } 'mips32',
|
|
|
|
+ { cpu_mips32r2 } 'mips32r2'
|
|
);
|
|
);
|
|
|
|
|
|
|
|
+ mips_cpu : tcputype = cpu_mips_default;
|
|
|
|
+
|
|
fputypestr : array[tfputype] of string[9] = ('',
|
|
fputypestr : array[tfputype] of string[9] = ('',
|
|
'SOFT',
|
|
'SOFT',
|
|
'FPU_MIPS2','FPU_MIPS3'
|
|
'FPU_MIPS2','FPU_MIPS3'
|
|
);
|
|
);
|
|
|
|
|
|
|
|
+ { abi strings as accepted by
|
|
|
|
+ GNU assembler in -abi=XXX option }
|
|
|
|
+ abitypestr : array[tabitype] of string[4] =
|
|
|
|
+ ({ abi_none } '',
|
|
|
|
+ { abi_default } '32',
|
|
|
|
+ { abi_o32 } '32',
|
|
|
|
+ { abi_n32 } 'n32',
|
|
|
|
+ { abi_o64 } 'o64',
|
|
|
|
+ { abi_n64 } '64',
|
|
|
|
+ { abi_eabi } 'eabi'
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ mips_abi : tabitype = abi_default;
|
|
|
|
+
|
|
{ Supported optimizations, only used for information }
|
|
{ Supported optimizations, only used for information }
|
|
supported_optimizerswitches = [cs_opt_regvar,cs_opt_loopunroll,cs_opt_nodecse,
|
|
supported_optimizerswitches = [cs_opt_regvar,cs_opt_loopunroll,cs_opt_nodecse,
|
|
cs_opt_reorder_fields,cs_opt_fastmath];
|
|
cs_opt_reorder_fields,cs_opt_fastmath];
|
|
@@ -76,6 +119,26 @@ Const
|
|
level3optimizerswitches = level2optimizerswitches + [cs_opt_loopunroll];
|
|
level3optimizerswitches = level2optimizerswitches + [cs_opt_loopunroll];
|
|
level4optimizerswitches = genericlevel4optimizerswitches + level3optimizerswitches + [];
|
|
level4optimizerswitches = genericlevel4optimizerswitches + level3optimizerswitches + [];
|
|
|
|
|
|
|
|
+function SetMipsABIType(const s : string) : boolean;
|
|
|
|
+
|
|
Implementation
|
|
Implementation
|
|
|
|
|
|
|
|
+uses
|
|
|
|
+ cutils;
|
|
|
|
+
|
|
|
|
+function SetMipsABIType(const s : string) : boolean;
|
|
|
|
+
|
|
|
|
+ var
|
|
|
|
+ abi : tabitype;
|
|
|
|
+ begin
|
|
|
|
+ SetMipsABIType:=false;
|
|
|
|
+ for abi := low(tabitype) to high(tabitype) do
|
|
|
|
+ if (lower(s)=abitypestr[abi]) then
|
|
|
|
+ begin
|
|
|
|
+ mips_abi:=abi;
|
|
|
|
+ SetMipsABIType:=true;
|
|
|
|
+ break;
|
|
|
|
+ end;
|
|
|
|
+ end;
|
|
|
|
+
|
|
end.
|
|
end.
|