mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 07:39:13 +02:00
* fixed sparc compilation after addr_lo/hi changes
git-svn-id: trunk@8107 -
This commit is contained in:
parent
4c5d8a9c79
commit
20dbda751a
@ -65,7 +65,7 @@ interface
|
||||
addr_no,
|
||||
addr_full,
|
||||
addr_pic
|
||||
{$IF defined(POWERPC) or defined(POWERPC64)}
|
||||
{$IF defined(POWERPC) or defined(POWERPC64) or defined(SPARC)}
|
||||
,
|
||||
addr_low, // bits 48-63
|
||||
addr_high, // bits 32-47
|
||||
|
@ -185,7 +185,7 @@ implementation
|
||||
begin
|
||||
inherited create(op);
|
||||
{ only allowed to load the address }
|
||||
if not(_op2.refaddr in [addr_lo,addr_hi]) then
|
||||
if not(_op2.refaddr in [addr_low,addr_high]) then
|
||||
internalerror(200305311);
|
||||
ops:=3;
|
||||
loadreg(0,_op1);
|
||||
|
@ -187,17 +187,17 @@ implementation
|
||||
reference_reset(tmpref);
|
||||
tmpref.symbol:=ref.symbol;
|
||||
tmpref.offset:=ref.offset;
|
||||
tmpref.refaddr:=addr_hi;
|
||||
tmpref.refaddr:=addr_high;
|
||||
list.concat(taicpu.op_ref_reg(A_SETHI,tmpref,tmpreg));
|
||||
if (ref.offset=0) and (ref.index=NR_NO) and
|
||||
(ref.base=NR_NO) then
|
||||
begin
|
||||
ref.refaddr:=addr_lo;
|
||||
ref.refaddr:=addr_low;
|
||||
end
|
||||
else
|
||||
begin
|
||||
{ Load the low part is left }
|
||||
tmpref.refaddr:=addr_lo;
|
||||
tmpref.refaddr:=addr_low;
|
||||
list.concat(taicpu.op_reg_ref_reg(A_OR,tmpreg,tmpref,tmpreg));
|
||||
ref.offset:=0;
|
||||
{ symbol is loaded }
|
||||
@ -636,10 +636,10 @@ implementation
|
||||
reference_reset(tmpref);
|
||||
tmpref.symbol := href.symbol;
|
||||
tmpref.offset := href.offset;
|
||||
tmpref.refaddr := addr_hi;
|
||||
tmpref.refaddr := addr_high;
|
||||
list.concat(taicpu.op_ref_reg(A_SETHI,tmpref,hreg));
|
||||
{ Only the low part is left }
|
||||
tmpref.refaddr:=addr_lo;
|
||||
tmpref.refaddr:=addr_low;
|
||||
list.concat(taicpu.op_reg_ref_reg(A_OR,hreg,tmpref,hreg));
|
||||
if href.base<>NR_NO then
|
||||
begin
|
||||
|
@ -70,9 +70,9 @@ implementation
|
||||
else if offset<0 then
|
||||
GetReferenceString:=GetReferenceString+ToStr(offset);
|
||||
case refaddr of
|
||||
addr_hi:
|
||||
addr_high:
|
||||
GetReferenceString:='%hi('+GetReferenceString+')';
|
||||
addr_lo:
|
||||
addr_low:
|
||||
GetReferenceString:='%lo('+GetReferenceString+')';
|
||||
end;
|
||||
end
|
||||
@ -80,7 +80,7 @@ implementation
|
||||
begin
|
||||
{$ifdef extdebug}
|
||||
if assigned(symbol) and
|
||||
not(refaddr in [addr_pic,addr_lo]) then
|
||||
not(refaddr in [addr_pic,addr_low]) then
|
||||
internalerror(2003052601);
|
||||
{$endif extdebug}
|
||||
if base<>NR_NO then
|
||||
@ -99,7 +99,7 @@ implementation
|
||||
}
|
||||
if assigned(symbol) then
|
||||
begin
|
||||
if refaddr=addr_lo then
|
||||
if refaddr=addr_low then
|
||||
GetReferenceString:='%lo('+symbol.name+')+'+GetReferenceString
|
||||
else
|
||||
GetReferenceString:=symbol.name+'+'+GetReferenceString;
|
||||
@ -127,7 +127,7 @@ implementation
|
||||
top_const:
|
||||
getopstr:=tostr(longint(val));
|
||||
top_ref:
|
||||
if (oper.ref^.refaddr in [addr_no,addr_pic]) or ((oper.ref^.refaddr=addr_lo) and ((oper.ref^.base<>NR_NO) or
|
||||
if (oper.ref^.refaddr in [addr_no,addr_pic]) or ((oper.ref^.refaddr=addr_low) and ((oper.ref^.base<>NR_NO) or
|
||||
(oper.ref^.index<>NR_NO))) then
|
||||
getopstr:='['+getreferencestring(ref^)+']'
|
||||
else
|
||||
|
@ -105,9 +105,9 @@ Interface
|
||||
if actasmtoken=AS_ID then
|
||||
begin
|
||||
if upper(actasmpattern)='LO' then
|
||||
oper.opr.ref.refaddr:=addr_lo
|
||||
oper.opr.ref.refaddr:=addr_low
|
||||
else if upper(actasmpattern)='HI' then
|
||||
oper.opr.ref.refaddr:=addr_hi
|
||||
oper.opr.ref.refaddr:=addr_high
|
||||
else
|
||||
Message(asmr_e_invalid_reference_syntax);
|
||||
Consume(AS_ID);
|
||||
@ -352,9 +352,9 @@ Interface
|
||||
memory location) }
|
||||
oper.InitRef;
|
||||
if actasmtoken=AS_LO then
|
||||
oper.opr.ref.refaddr:=addr_lo
|
||||
oper.opr.ref.refaddr:=addr_low
|
||||
else
|
||||
oper.opr.ref.refaddr:=addr_hi;
|
||||
oper.opr.ref.refaddr:=addr_high;
|
||||
Consume(actasmtoken);
|
||||
Consume(AS_LPAREN);
|
||||
BuildConstSymbolExpression(false, true,false,l,tempstr,tempsymtyp);
|
||||
|
@ -104,10 +104,10 @@ implementation
|
||||
|
||||
reference_reset(tmpref);
|
||||
tmpref.offset:=spilltemp.offset;
|
||||
tmpref.refaddr:=addr_hi;
|
||||
tmpref.refaddr:=addr_high;
|
||||
helplist.concat(taicpu.op_ref_reg(A_SETHI,tmpref,hreg));
|
||||
|
||||
tmpref.refaddr:=addr_lo;
|
||||
tmpref.refaddr:=addr_low;
|
||||
helplist.concat(taicpu.op_reg_ref_reg(A_OR,hreg,tmpref,hreg));
|
||||
|
||||
reference_reset_base(tmpref,hreg,0);
|
||||
@ -140,10 +140,10 @@ implementation
|
||||
|
||||
reference_reset(tmpref);
|
||||
tmpref.offset:=spilltemp.offset;
|
||||
tmpref.refaddr:=addr_hi;
|
||||
tmpref.refaddr:=addr_high;
|
||||
helplist.concat(taicpu.op_ref_reg(A_SETHI,tmpref,hreg));
|
||||
|
||||
tmpref.refaddr:=addr_lo;
|
||||
tmpref.refaddr:=addr_low;
|
||||
helplist.concat(taicpu.op_reg_ref_reg(A_OR,hreg,tmpref,hreg));
|
||||
|
||||
reference_reset_base(tmpref,hreg,0);
|
||||
|
Loading…
Reference in New Issue
Block a user