mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-04 21:10:29 +02:00
* compiler/mips/cpuinfo.pas: removed "FPU_" prefixes from FPU names, not necessary because compiler inserts one itself.
* rtl/embedded/system.pp: removed (commented out) FPU initialization from initialization of system unit, was dead code anyway because FPC_HAS_FEATURE_FPU is never defined and "feature FPU" does not exist. * rtl/mips/*.inc: don't compile FPU instructions if compiling RTL with -CfNONE or -CfSOFT (however, handling these switches for MIPS targets in compiler needs further fixing). git-svn-id: trunk@28670 -
This commit is contained in:
parent
e5c104ca96
commit
f85a8159ef
@ -87,7 +87,7 @@ Const
|
|||||||
|
|
||||||
fputypestr : array[tfputype] of string[9] = ('',
|
fputypestr : array[tfputype] of string[9] = ('',
|
||||||
'SOFT',
|
'SOFT',
|
||||||
'FPU_MIPS2','FPU_MIPS3'
|
'MIPS2','MIPS3'
|
||||||
);
|
);
|
||||||
|
|
||||||
{ abi strings as accepted by
|
{ abi strings as accepted by
|
||||||
|
@ -211,13 +211,12 @@ var
|
|||||||
{$endif FPC_HAS_FEATURE_STACKCHECK}
|
{$endif FPC_HAS_FEATURE_STACKCHECK}
|
||||||
|
|
||||||
begin
|
begin
|
||||||
{$ifdef FPC_HAS_FEATURE_FPU}
|
{ FPU (hard or soft) is initialized from fpc_cpuinit, which is included
|
||||||
{ Beware: The same code is executed from fpc_cpuinit, which is included
|
per-cpu unconditionally.
|
||||||
per-cpu unconditionally }
|
|
||||||
SysResetFPU;
|
SysResetFPU;
|
||||||
if not(IsLibrary) then
|
if not(IsLibrary) then
|
||||||
SysInitFPU;
|
SysInitFPU;
|
||||||
{$endif FPC_HAS_FEATURE_FPU}
|
}
|
||||||
|
|
||||||
{$ifdef FPC_HAS_FEATURE_CONSOLEIO}
|
{$ifdef FPC_HAS_FEATURE_CONSOLEIO}
|
||||||
IsConsole := TRUE;
|
IsConsole := TRUE;
|
||||||
|
@ -55,6 +55,7 @@ const
|
|||||||
|
|
||||||
fpu_all_bits = fpu_enable_mask or fpu_flags_mask or fpu_cause_mask or fpu_rounding_mask;
|
fpu_all_bits = fpu_enable_mask or fpu_flags_mask or fpu_cause_mask or fpu_rounding_mask;
|
||||||
|
|
||||||
|
{$if defined(FPUMIPS2) or defined(FPUMIPS3)}
|
||||||
{$define FPC_SYSTEM_HAS_SYSINITFPU}
|
{$define FPC_SYSTEM_HAS_SYSINITFPU}
|
||||||
procedure SysInitFPU;
|
procedure SysInitFPU;
|
||||||
begin
|
begin
|
||||||
@ -66,13 +67,16 @@ procedure SysInitFPU;
|
|||||||
procedure SysResetFPU;
|
procedure SysResetFPU;
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
{$endif FPUMIPS2 or FPUMIPS3}
|
||||||
|
|
||||||
|
|
||||||
procedure fpc_cpuinit;
|
procedure fpc_cpuinit;
|
||||||
begin
|
begin
|
||||||
|
{$ifndef FPUNONE}
|
||||||
SysResetFPU;
|
SysResetFPU;
|
||||||
if (not IsLibrary) then
|
if (not IsLibrary) then
|
||||||
SysInitFPU;
|
SysInitFPU;
|
||||||
|
{$endif FPUNONE}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ procedure fpc_longjmp(var s : jmp_buf;value:longint);assembler;nostackframe;[Pub
|
|||||||
lw $s7,jmp_buf.s7($a0)
|
lw $s7,jmp_buf.s7($a0)
|
||||||
lw $fp,jmp_buf.fp($a0)
|
lw $fp,jmp_buf.fp($a0)
|
||||||
lw $gp,jmp_buf.gp($a0)
|
lw $gp,jmp_buf.gp($a0)
|
||||||
|
{$if defined(FPUMIPS2) or defined(FPUMIPS3)}
|
||||||
lw $v0,jmp_buf._fcsr($a0)
|
lw $v0,jmp_buf._fcsr($a0)
|
||||||
ctc1 $v0,$31
|
ctc1 $v0,$31
|
||||||
lwc1 $f20,jmp_buf.f20($a0)
|
lwc1 $f20,jmp_buf.f20($a0)
|
||||||
@ -41,7 +42,7 @@ procedure fpc_longjmp(var s : jmp_buf;value:longint);assembler;nostackframe;[Pub
|
|||||||
lwc1 $f29,jmp_buf.f29($a0)
|
lwc1 $f29,jmp_buf.f29($a0)
|
||||||
lwc1 $f30,jmp_buf.f30($a0)
|
lwc1 $f30,jmp_buf.f30($a0)
|
||||||
lwc1 $f31,jmp_buf.f31($a0)
|
lwc1 $f31,jmp_buf.f31($a0)
|
||||||
|
{$endif FPUMIPS2 or FPUMIPS3}
|
||||||
// Put value into register $2 as in setjmp
|
// Put value into register $2 as in setjmp
|
||||||
move $v0,$a1
|
move $v0,$a1
|
||||||
bne $a1,$zero,.L1
|
bne $a1,$zero,.L1
|
||||||
@ -65,6 +66,7 @@ function fpc_setjmp(var S:jmp_buf):longint;assembler;nostackframe;[Public,alias:
|
|||||||
sw $s7,jmp_buf.s7($a0)
|
sw $s7,jmp_buf.s7($a0)
|
||||||
sw $fp,jmp_buf.fp($a0)
|
sw $fp,jmp_buf.fp($a0)
|
||||||
sw $gp,jmp_buf.gp($a0)
|
sw $gp,jmp_buf.gp($a0)
|
||||||
|
{$if defined(FPUMIPS2) or defined(FPUMIPS3)}
|
||||||
cfc1 $v0,$31
|
cfc1 $v0,$31
|
||||||
sw $v0,jmp_buf._fcsr($a0)
|
sw $v0,jmp_buf._fcsr($a0)
|
||||||
swc1 $f20,jmp_buf.f20($a0)
|
swc1 $f20,jmp_buf.f20($a0)
|
||||||
@ -79,5 +81,6 @@ function fpc_setjmp(var S:jmp_buf):longint;assembler;nostackframe;[Public,alias:
|
|||||||
swc1 $f29,jmp_buf.f29($a0)
|
swc1 $f29,jmp_buf.f29($a0)
|
||||||
swc1 $f30,jmp_buf.f30($a0)
|
swc1 $f30,jmp_buf.f30($a0)
|
||||||
swc1 $f31,jmp_buf.f31($a0)
|
swc1 $f31,jmp_buf.f31($a0)
|
||||||
|
{$endif FPUMIPS2 or FPUMIPS3}
|
||||||
move $v0,$zero
|
move $v0,$zero
|
||||||
end;
|
end;
|
||||||
|
@ -17,7 +17,9 @@
|
|||||||
type
|
type
|
||||||
jmp_buf=packed record
|
jmp_buf=packed record
|
||||||
ra,sp,s0,s1,s2,s3,s4,s5,s6,s7,fp,gp: longint;
|
ra,sp,s0,s1,s2,s3,s4,s5,s6,s7,fp,gp: longint;
|
||||||
|
{$if defined(FPUMIPS2) or defined(FPUMIPS3)}
|
||||||
_fcsr,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31: longint;
|
_fcsr,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31: longint;
|
||||||
|
{$endif FPUMIPS2 or FPUMIPS3}
|
||||||
end;
|
end;
|
||||||
Pjmp_buf=^jmp_buf;
|
Pjmp_buf=^jmp_buf;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user