Skip to content
Snippets Groups Projects
Commit d9ae8992 authored by André Santos's avatar André Santos
Browse files

[project @ 2000-06-13 15:35:29 by andre]

RS6000/AIX patches
parent 6ec55b65
No related merge requests found
......@@ -483,13 +483,7 @@ sub mangle_asm {
$chk[++$i] = $_;
$chkcat[$i] = 'toc';
$chksymb[$i] = $1;
} elsif ( $TargetPlatform =~ /^powerpc-|^rs6000-/ && /^CC_.*$/ ) {
# all CC_ symbols go in the data section...
$chk[++$i] = $_;
$chkcat[$i] = 'data';
$chksymb[$i] = '';
} elsif ( /^($TUS[@]?(ret_|djn_)[A-Za-z0-9_]+)/o ) {
$chk[++$i] = $_;
$chkcat[$i] = 'misc';
......@@ -518,6 +512,10 @@ sub mangle_asm {
# I guess this is never entered, since all _upds are
# either vtbl_'s or ret_'s, caught above. - andre
$chksymb[$i] = '';
# if ($TargetPlatform =~ /^powerpc-/)
# { $chksymb[$i] = $symbtmp;}
# else { $chksymb[$i] = ''; };
} elsif ( $TargetPlatform =~ /^i386-.*-solaris2/
&& /^(_uname|uname|stat|fstat):/ ) {
......@@ -579,6 +577,7 @@ sub mangle_asm {
# HPPAs, MIPSen: also start medding at chunk 1
# AIX hack for the moment, to join up multiple identical tocs
if ($TargetPlatform =~ /^powerpc|^rs6000/) {
print OUTASM $T_HDR_toc; # yes, we have to put a .toc
# in the beginning of every file!
......@@ -588,9 +587,7 @@ sub mangle_asm {
$chk[$i] =~ s/\[RW\]//g;
$chk[$i] =~ s/\[DS\]//g;
$chk[$i] =~ s/^\.csect .*\[DS\]$//g;
if ( $chkcat[$i] eq 'toc' && $chk[$i] !~ /\.byte/ )
#ToDo: instead of all these changes, just fix mangle_powerpc_tailjump and delete/ignore these tocs?
{ $chk[$i] =~ s/$T_MOVE_DIRVS//g;
$chk[$i] =~ s/\t\.tc (\S+)\[TC\],(\S+_fast\d+)/\t\.tc \1\[TC\],\.\2/;
$chk[$i] =~ s/\t\.tc (\S+)\[TC\],(\S+_entry)\n/\t\.tc \1\[TC\],\.\2\n/;
......@@ -600,11 +597,6 @@ sub mangle_asm {
$chk[$i] =~ s/\t\.tc (\S+)\[TC\],ErrorIO_innards/\t\.tc \1\[TC\],\.ErrorIO_innards/;
$chk[$i] =~ s/\t\.tc (\S+)\[TC\],startStgWorld/\t\.tc \1\[TC\],\.startStgWorld/;
$chk[$i] =~ s/\.tc UpdatePAP\[TC\],UpdatePAP/\.tc UpdatePAP\[TC\],\.UpdatePAP/;
$chk[$i] =~ s/\.tc _regMain\[TC\],_regMain/\.tc _regMain\[TC\],\._regMain/; #PROF
$chk[$i] =~ s/\.tc resumeThread\[TC\],resumeThread/\.tc resumeThread\[TC\],\.resumeThread/; #CONC
$chk[$i] =~ s/\.tc EnterNodeCode\[TC\],EnterNodeCode/\.tc EnterNodeCode\[TC\],\.EnterNodeCode/; #CONC
$chk[$i] =~ s/\.tc StackUnderflowEnterNode\[TC\],StackUnderflowEnterNode/\.tc StackUnderflowEnterNode\[TC\],\.StackUnderflowEnterNode/; #CONC
$chk[$i] =~ s/\.tc stopThreadDirectReturn\[TC\],stopThreadDirectReturn/\.tc stopThreadDirectReturn\[TC\],\.stopThreadDirectReturn/; #CONC
$chk[$i] =~ s/\.tc IndUpdRetDir\[TC\],IndUpdRetDir/\.tc IndUpdRetDir\[TC\],\.IndUpdRetDir/;
$chk[$i] =~ s/\t\.tc (_PRStart_\S+)\[TC\],_PRStart_\S+/\t\.tc \1\[TC\],\.\1/;
......@@ -665,9 +657,7 @@ sub mangle_asm {
} elsif ($TargetPlatform =~ /^powerpc-|^rs6000/) {
$p =~ s/^\tmflr 0\n//;
$p =~ s/^\tstm \d+,-\d+\(1\)\n//;
$p =~ s/^\tstw? 0,\d+\(1\)\n//g;
$p =~ s/^\tstw? 1,\d+\(1\)\n//g; #mc
$p =~ s/^\tlw?z 0,0\(1\)\n//g; #mc
$p =~ s/^\tstw? 0,\d+\(1\)\n//;
$p =~ s/^\tstw?u 1,-\d+\(1\)\n//;
$p =~ s/^\tstw? \d+,-\d+\(1\)\n//g;
$p =~ s/^\tstfd \d+,-\d+\(1\)\n//g;
......@@ -858,8 +848,7 @@ sub mangle_asm {
#new if ($chksymb[$i] =~ /ret.*upd/ || $KNOWN_FUNNY_THING{$chksymb[$i]}
#new || $chksymb[$i] =~ /^$.{T_US}_(PRIn|PRStart).*${T_POST_LBL}$/o )
#new { print OUTASM "\t\.globl $chksymb[$i]\n"; }
# if ($chksymb[$i] ne '' && $chksymb[$i] !~ /ret_[a-z]/ && $chksymb[$i] !~ /djn_[a-z]/)
if ($chksymb[$i] ne '')
if ($chksymb[$i] ne '')
{ print OUTASM "\t\.globl \.$chksymb[$i]\n"; };
if ($chk[$i] =~ /TOC\[tc0\], 0\n/)
{ ($p, $r) = split(/TOC\[tc0\], 0\n/, $chk[$i]); $printDS = 1;}
......@@ -868,10 +857,8 @@ sub mangle_asm {
};
&print_doctored($chk[$i], 0);
if ($TargetPlatform =~ /^powerpc-|^rs6000-/ && $printDS) {
#ok if ($chksymb[$i] !~ /\_regMain/) {
print OUTASM "\.csect ${chksymb[$i]}[DS]\n";
print OUTASM "${p}TOC[tc0], 0\n";
#ok }
print OUTASM "\.csect ${chksymb[$i]}[DS]\n";
print OUTASM "${p}TOC[tc0], 0\n";
}
}
......@@ -925,11 +912,6 @@ sub mangle_asm {
print OUTASM $T_HDR_info;
if ($TargetPlatform =~ /^powerpc-|^rs6000-/) {
if ( !defined($slowchk{$symb}) && defined($fastchk{$symb}) ) {
$fastname = $chk[$fastchk{$symb}];
$fastname =~ s/([_A-Za-z]*_fast\d+):.*(.*\n)*/\1/;
$chk[$infochk{$symb}] =~ s/\.long StdErrorCode/\.long $fastname/;
}
$chk[$infochk{$symb}] =~ s/\.long ([_A-Za-z]\S+_entry)/\.long \.\1/;
$chk[$infochk{$symb}] =~ s/\.long ([A-Za-z]\S+_upd)/\.long \.\1/;
$chk[$infochk{$symb}] =~ s/\.long (IndUpdRet\S+)/\.long \.\1/;
......@@ -1023,7 +1005,7 @@ sub mangle_asm {
if ( $fullname =~ /^[A-Z]/)
{ print OUTASM "\t\.globl \.${fullname}\n";
} else {
# print OUTASM "\t\.lglobl \.${fullname}\n"; #todo: rm - andre
print OUTASM "\t\.lglobl \.${fullname}\n"; #todo: rm - andre
};
$c =~ s/((.*\n)*)\t.long \S+, TOC\[tc0\], 0\n\.csect \.text\[PR\]\n((.*\n)*)/\1\3/;
$c = &mangle_powerpc_tailjump($c);
......@@ -1082,11 +1064,7 @@ sub mangle_asm {
print OUTASM $T_HDR_toc;
local($j) = $i;
while ($chkcat[$j] eq 'toc')
{ if ( $chk[$j] !~ /\.tc UpdatePAP\[TC\]/ # not needed: always turned into a jump.
)
{
print OUTASM $chk[$j];
}
{ print OUTASM $chk[$j];
$chkcat[$j] = 'DONE ALREADY';
$j++;
}
......@@ -1547,8 +1525,6 @@ sub mini_mangle_asm_powerpc {
s/long _PRMarking_MarkNextCAF\[DS\]/long ._PRMarking_MarkNextCAF/;
s/long _PRMarking_MarkNextAStack\[DS\]/long ._PRMarking_MarkNextAStack/;
s/long _PRMarking_MarkNextBStack\[DS\]/long ._PRMarking_MarkNextBStack/;
s/\.tc EnterNodeCode\[TC]\,EnterNodeCode\[DS\]/\.tc EnterNodeCode\[TC]\,.EnterNodeCode/; # CONC
s/\.tc CheckHeapCode\[TC]\,CheckHeapCode\[DS\]/\.tc CheckHeapCode\[TC]\,.CheckHeapCode/; # CONC
print OUTASM;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment