mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 05:59:27 +02:00
* fixed bctr(l) problems
This commit is contained in:
parent
613edede9b
commit
fb5b623e30
@ -329,12 +329,15 @@ unit agppcgas;
|
|||||||
{ direct BO/BI in op[0] and op[1] not supported, put them in condition! }
|
{ direct BO/BI in op[0] and op[1] not supported, put them in condition! }
|
||||||
case op of
|
case op of
|
||||||
A_B,A_BA,A_BL,A_BLA:
|
A_B,A_BA,A_BL,A_BLA:
|
||||||
s:=#9+op2str[op]+#9
|
s:=#9+op2str[op]+#9;
|
||||||
|
A_BCTR,A_BCTRL,A_BLR,A_BLRL:
|
||||||
|
s:=#9+op2str[op]
|
||||||
else
|
else
|
||||||
s:=cond2str(op,taicpu(hp).condition)+',';
|
s:=cond2str(op,taicpu(hp).condition)+',';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
s:=s+getopstr_jmp(taicpu(hp).oper[0]);
|
if (taicpu(hp).oper[0].typ <> top_none) then
|
||||||
|
s:=s+getopstr_jmp(taicpu(hp).oper[0]);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
{ process operands }
|
{ process operands }
|
||||||
@ -363,7 +366,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.18 2002-09-08 13:03:26 jonas
|
Revision 1.19 2002-11-07 15:50:23 jonas
|
||||||
|
* fixed bctr(l) problems
|
||||||
|
|
||||||
|
Revision 1.18 2002/09/08 13:03:26 jonas
|
||||||
* several large offset-related fixes
|
* several large offset-related fixes
|
||||||
|
|
||||||
Revision 1.17 2002/09/01 21:04:48 florian
|
Revision 1.17 2002/09/01 21:04:48 florian
|
||||||
|
@ -333,12 +333,15 @@ function getreferencestring(var ref : treference) : string;
|
|||||||
case op of
|
case op of
|
||||||
A_B,A_BA,A_BLA:
|
A_B,A_BA,A_BLA:
|
||||||
s:=#9+op2str[op]+#9;
|
s:=#9+op2str[op]+#9;
|
||||||
|
A_BCTR,A_BCTRL,A_BLR,A_BLRL:
|
||||||
|
s:=#9+op2str[op];
|
||||||
A_BL:
|
A_BL:
|
||||||
s:=#9+op2str[op]+#9'.';
|
s:=#9+op2str[op]+#9'.';
|
||||||
else
|
else
|
||||||
s:=cond2str(op,taicpu(hp).condition)+',';
|
s:=cond2str(op,taicpu(hp).condition)+',';
|
||||||
end;
|
end;
|
||||||
s:=s+getopstr_jmp(taicpu(hp).oper[0]);
|
if (taicpu(hp).oper[0].typ <> top_none) then
|
||||||
|
s:=s+getopstr_jmp(taicpu(hp).oper[0]);
|
||||||
if op=A_BL then
|
if op=A_BL then
|
||||||
s:=s+'[PR]';
|
s:=s+'[PR]';
|
||||||
end
|
end
|
||||||
@ -1025,7 +1028,10 @@ initialization
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.13 2002-11-04 18:24:53 olle
|
Revision 1.14 2002-11-07 15:50:23 jonas
|
||||||
|
* fixed bctr(l) problems
|
||||||
|
|
||||||
|
Revision 1.13 2002/11/04 18:24:53 olle
|
||||||
* globals are located in TOC and relative r2, instead of absolute
|
* globals are located in TOC and relative r2, instead of absolute
|
||||||
* symbols which only differs in case are treated as a single symbol
|
* symbols which only differs in case are treated as a single symbol
|
||||||
+ tai_const_symbol supported
|
+ tai_const_symbol supported
|
||||||
|
@ -257,7 +257,7 @@ const
|
|||||||
procedure tcgppc.a_call_reg(list : taasmoutput;reg: tregister);
|
procedure tcgppc.a_call_reg(list : taasmoutput;reg: tregister);
|
||||||
begin
|
begin
|
||||||
list.concat(taicpu.op_reg(A_MTCTR,reg));
|
list.concat(taicpu.op_reg(A_MTCTR,reg));
|
||||||
list.concat(taicpu.op_none(A_BCCTRL));
|
list.concat(taicpu.op_none(A_BCTRL));
|
||||||
if target_info.system=system_powerpc_macos then
|
if target_info.system=system_powerpc_macos then
|
||||||
list.concat(taicpu.op_none(A_NOP));
|
list.concat(taicpu.op_none(A_NOP));
|
||||||
procinfo.flags:=procinfo.flags or pi_do_call;
|
procinfo.flags:=procinfo.flags or pi_do_call;
|
||||||
@ -273,7 +273,7 @@ const
|
|||||||
a_load_ref_reg(list,OS_ADDR,ref,tmpreg);
|
a_load_ref_reg(list,OS_ADDR,ref,tmpreg);
|
||||||
list.concat(taicpu.op_reg(A_MTCTR,tmpreg));
|
list.concat(taicpu.op_reg(A_MTCTR,tmpreg));
|
||||||
free_scratch_reg(list,tmpreg);
|
free_scratch_reg(list,tmpreg);
|
||||||
list.concat(taicpu.op_none(A_BCCTRL));
|
list.concat(taicpu.op_none(A_BCTRL));
|
||||||
if target_info.system=system_powerpc_macos then
|
if target_info.system=system_powerpc_macos then
|
||||||
list.concat(taicpu.op_none(A_NOP));
|
list.concat(taicpu.op_none(A_NOP));
|
||||||
procinfo.flags:=procinfo.flags or pi_do_call;
|
procinfo.flags:=procinfo.flags or pi_do_call;
|
||||||
@ -1924,7 +1924,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.64 2002-11-04 18:24:19 olle
|
Revision 1.65 2002-11-07 15:50:23 jonas
|
||||||
|
* fixed bctr(l) problems
|
||||||
|
|
||||||
|
Revision 1.64 2002/11/04 18:24:19 olle
|
||||||
* macos: globals are located in TOC and relative r2, instead of absolute
|
* macos: globals are located in TOC and relative r2, instead of absolute
|
||||||
|
|
||||||
Revision 1.63 2002/10/28 22:24:28 olle
|
Revision 1.63 2002/10/28 22:24:28 olle
|
||||||
|
Loading…
Reference in New Issue
Block a user