mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-07 01:38:30 +02:00
* MIPS: updated registers, dropped special registers not recognized by GAS (actually, "pc" is recognized, but it is used only for MIPS16 mode, so it is easier to add back if/when this mode is supported), added FPU condition code registers ($fcc0..$fcc7).
* cpubase.pas, std_regname: changed logic to lookup known names for special registers before resorting to default name, so that $fcc0..$fcc7 can be used as operands. git-svn-id: trunk@27992 -
This commit is contained in:
parent
c77225d2c4
commit
c260879439
@ -379,23 +379,20 @@ unit cpubase;
|
|||||||
p : tregisterindex;
|
p : tregisterindex;
|
||||||
hr : tregister;
|
hr : tregister;
|
||||||
begin
|
begin
|
||||||
if getregtype(r)=R_SPECIALREGISTER then
|
hr:=r;
|
||||||
|
case getsubreg(hr) of
|
||||||
|
R_SUBFD:
|
||||||
|
setsubreg(hr, R_SUBFS);
|
||||||
|
R_SUBL, R_SUBW, R_SUBD, R_SUBQ:
|
||||||
|
setsubreg(hr, R_SUBD);
|
||||||
|
end;
|
||||||
|
p:=findreg_by_number_table(hr,regnumber_index);
|
||||||
|
if p<>0 then
|
||||||
|
result:=std_regname_table[p]
|
||||||
|
else if getregtype(r)=R_SPECIALREGISTER then
|
||||||
result:=tostr(getsupreg(r))
|
result:=tostr(getsupreg(r))
|
||||||
else
|
else
|
||||||
begin
|
result:=generic_regname(r);
|
||||||
hr:=r;
|
|
||||||
case getsubreg(hr) of
|
|
||||||
R_SUBFD:
|
|
||||||
setsubreg(hr, R_SUBFS);
|
|
||||||
R_SUBL, R_SUBW, R_SUBD, R_SUBQ:
|
|
||||||
setsubreg(hr, R_SUBD);
|
|
||||||
end;
|
|
||||||
p:=findreg_by_number_table(hr,regnumber_index);
|
|
||||||
if p<>0 then
|
|
||||||
result:=std_regname_table[p]
|
|
||||||
else
|
|
||||||
result:=generic_regname(r);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function dwarf_reg(r:tregister):shortint;
|
function dwarf_reg(r:tregister):shortint;
|
||||||
|
@ -72,12 +72,12 @@ F29,$02,$06,$1D,f29,$f29,61,61
|
|||||||
F30,$02,$06,$1E,f30,$f30,62,62
|
F30,$02,$06,$1E,f30,$f30,62,62
|
||||||
F31,$02,$06,$1F,f31,$f31,63,63
|
F31,$02,$06,$1F,f31,$f31,63,63
|
||||||
|
|
||||||
PC,$05,$00,$00,PC,pc,-1,-1
|
; mips4+ floating-point condition code registers (1-bit)
|
||||||
HI,$05,$00,$01,HI,hi,68,68
|
FCC0,$05,$00,$00,fcc0,$fcc0,-1,-1
|
||||||
LO,$05,$00,$02,LO,lo,69,69
|
FCC1,$05,$00,$01,fcc1,$fcc1,-1,-1
|
||||||
CR,$05,$00,$03,CR,cr,70,70
|
FCC2,$05,$00,$02,fcc2,$fcc2,-1,-1
|
||||||
FCR0,$05,$00,$04,fcr0,fcr0,71,71
|
FCC3,$05,$00,$03,fcc3,$fcc3,-1,-1
|
||||||
FCR25,$05,$00,$05,fcr25,fcr25,72,72
|
FCC4,$05,$00,$04,fcc4,$fcc4,-1,-1
|
||||||
FCR26,$05,$00,$06,fcr26,fcr26,73,73
|
FCC5,$05,$00,$05,fcc5,$fcc5,-1,-1
|
||||||
FCR28,$05,$00,$07,fcr28,fcr28,74,74
|
FCC6,$05,$00,$06,fcc6,$fcc6,-1,-1
|
||||||
FCSR,$05,$00,$08,fcsr,fcsr,75,75
|
FCC7,$05,$00,$07,fcc7,$fcc7,-1,-1
|
||||||
|
@ -64,12 +64,11 @@ NR_F28 = tregister($0206001C);
|
|||||||
NR_F29 = tregister($0206001D);
|
NR_F29 = tregister($0206001D);
|
||||||
NR_F30 = tregister($0206001E);
|
NR_F30 = tregister($0206001E);
|
||||||
NR_F31 = tregister($0206001F);
|
NR_F31 = tregister($0206001F);
|
||||||
NR_PC = tregister($05000000);
|
NR_FCC0 = tregister($05000000);
|
||||||
NR_HI = tregister($05000001);
|
NR_FCC1 = tregister($05000001);
|
||||||
NR_LO = tregister($05000002);
|
NR_FCC2 = tregister($05000002);
|
||||||
NR_CR = tregister($05000003);
|
NR_FCC3 = tregister($05000003);
|
||||||
NR_FCR0 = tregister($05000004);
|
NR_FCC4 = tregister($05000004);
|
||||||
NR_FCR25 = tregister($05000005);
|
NR_FCC5 = tregister($05000005);
|
||||||
NR_FCR26 = tregister($05000006);
|
NR_FCC6 = tregister($05000006);
|
||||||
NR_FCR28 = tregister($05000007);
|
NR_FCC7 = tregister($05000007);
|
||||||
NR_FCSR = tregister($05000008);
|
|
||||||
|
@ -65,11 +65,10 @@
|
|||||||
62,
|
62,
|
||||||
63,
|
63,
|
||||||
-1,
|
-1,
|
||||||
68,
|
-1,
|
||||||
69,
|
-1,
|
||||||
70,
|
-1,
|
||||||
71,
|
-1,
|
||||||
72,
|
-1,
|
||||||
73,
|
-1,
|
||||||
74,
|
-1
|
||||||
75
|
|
||||||
|
@ -64,12 +64,11 @@
|
|||||||
'$f29',
|
'$f29',
|
||||||
'$f30',
|
'$f30',
|
||||||
'$f31',
|
'$f31',
|
||||||
'pc',
|
'$fcc0',
|
||||||
'hi',
|
'$fcc1',
|
||||||
'lo',
|
'$fcc2',
|
||||||
'cr',
|
'$fcc3',
|
||||||
'fcr0',
|
'$fcc4',
|
||||||
'fcr25',
|
'$fcc5',
|
||||||
'fcr26',
|
'$fcc6',
|
||||||
'fcr28',
|
'$fcc7'
|
||||||
'fcsr'
|
|
||||||
|
@ -63,13 +63,12 @@
|
|||||||
40,
|
40,
|
||||||
41,
|
41,
|
||||||
42,
|
42,
|
||||||
0,
|
65,
|
||||||
|
66,
|
||||||
|
67,
|
||||||
68,
|
68,
|
||||||
69,
|
69,
|
||||||
70,
|
70,
|
||||||
71,
|
71,
|
||||||
72,
|
72,
|
||||||
73,
|
0
|
||||||
66,
|
|
||||||
67,
|
|
||||||
65
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
{ don't edit, this file is generated from mipsreg.dat }
|
{ don't edit, this file is generated from mipsreg.dat }
|
||||||
74
|
73
|
||||||
|
@ -64,12 +64,11 @@ NR_F28,
|
|||||||
NR_F29,
|
NR_F29,
|
||||||
NR_F30,
|
NR_F30,
|
||||||
NR_F31,
|
NR_F31,
|
||||||
NR_PC,
|
NR_FCC0,
|
||||||
NR_HI,
|
NR_FCC1,
|
||||||
NR_LO,
|
NR_FCC2,
|
||||||
NR_CR,
|
NR_FCC3,
|
||||||
NR_FCR0,
|
NR_FCC4,
|
||||||
NR_FCR25,
|
NR_FCC5,
|
||||||
NR_FCR26,
|
NR_FCC6,
|
||||||
NR_FCR28,
|
NR_FCC7
|
||||||
NR_FCSR
|
|
||||||
|
@ -71,5 +71,4 @@
|
|||||||
69,
|
69,
|
||||||
70,
|
70,
|
||||||
71,
|
71,
|
||||||
72,
|
72
|
||||||
73
|
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
{ don't edit, this file is generated from mipsreg.dat }
|
{ don't edit, this file is generated from mipsreg.dat }
|
||||||
68,
|
|
||||||
66,
|
|
||||||
0,
|
0,
|
||||||
67,
|
|
||||||
65,
|
|
||||||
5,
|
5,
|
||||||
6,
|
6,
|
||||||
7,
|
7,
|
||||||
@ -41,11 +37,14 @@
|
|||||||
40,
|
40,
|
||||||
41,
|
41,
|
||||||
42,
|
42,
|
||||||
|
65,
|
||||||
|
66,
|
||||||
|
67,
|
||||||
|
68,
|
||||||
69,
|
69,
|
||||||
70,
|
70,
|
||||||
71,
|
71,
|
||||||
72,
|
72,
|
||||||
73,
|
|
||||||
31,
|
31,
|
||||||
29,
|
29,
|
||||||
27,
|
27,
|
||||||
|
@ -65,11 +65,10 @@
|
|||||||
62,
|
62,
|
||||||
63,
|
63,
|
||||||
-1,
|
-1,
|
||||||
68,
|
-1,
|
||||||
69,
|
-1,
|
||||||
70,
|
-1,
|
||||||
71,
|
-1,
|
||||||
72,
|
-1,
|
||||||
73,
|
-1,
|
||||||
74,
|
-1
|
||||||
75
|
|
||||||
|
@ -64,12 +64,11 @@
|
|||||||
'f29',
|
'f29',
|
||||||
'f30',
|
'f30',
|
||||||
'f31',
|
'f31',
|
||||||
'PC',
|
'fcc0',
|
||||||
'HI',
|
'fcc1',
|
||||||
'LO',
|
'fcc2',
|
||||||
'CR',
|
'fcc3',
|
||||||
'fcr0',
|
'fcc4',
|
||||||
'fcr25',
|
'fcc5',
|
||||||
'fcr26',
|
'fcc6',
|
||||||
'fcr28',
|
'fcc7'
|
||||||
'fcsr'
|
|
||||||
|
@ -64,12 +64,11 @@ RS_F28 = $1C;
|
|||||||
RS_F29 = $1D;
|
RS_F29 = $1D;
|
||||||
RS_F30 = $1E;
|
RS_F30 = $1E;
|
||||||
RS_F31 = $1F;
|
RS_F31 = $1F;
|
||||||
RS_PC = $00;
|
RS_FCC0 = $00;
|
||||||
RS_HI = $01;
|
RS_FCC1 = $01;
|
||||||
RS_LO = $02;
|
RS_FCC2 = $02;
|
||||||
RS_CR = $03;
|
RS_FCC3 = $03;
|
||||||
RS_FCR0 = $04;
|
RS_FCC4 = $04;
|
||||||
RS_FCR25 = $05;
|
RS_FCC5 = $05;
|
||||||
RS_FCR26 = $06;
|
RS_FCC6 = $06;
|
||||||
RS_FCR28 = $07;
|
RS_FCC7 = $07;
|
||||||
RS_FCSR = $08;
|
|
||||||
|
Loading…
Reference in New Issue
Block a user