mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-08 15:19:46 +01:00
* experimental sparc interface wrapper patch
git-svn-id: trunk@10991 -
This commit is contained in:
parent
cf220e1044
commit
77e5e0525c
@ -1343,20 +1343,20 @@ implementation
|
|||||||
Internalerror(200006139);
|
Internalerror(200006139);
|
||||||
{ mov 0(%rdi),%rax ; load vmt}
|
{ mov 0(%rdi),%rax ; load vmt}
|
||||||
reference_reset_base(href,NR_O0,0);
|
reference_reset_base(href,NR_O0,0);
|
||||||
cg.a_load_ref_reg(list,OS_ADDR,OS_ADDR,href,NR_L0);
|
cg.a_load_ref_reg(list,OS_ADDR,OS_ADDR,href,NR_G1);
|
||||||
{ jmp *vmtoffs(%eax) ; method offs }
|
{ jmp *vmtoffs(%eax) ; method offs }
|
||||||
reference_reset_base(href,NR_L0,procdef._class.vmtmethodoffset(procdef.extnumber));
|
reference_reset_base(href,NR_G1,procdef._class.vmtmethodoffset(procdef.extnumber));
|
||||||
list.concat(taicpu.op_ref_reg(A_LD,href,NR_L1));
|
list.concat(taicpu.op_ref_reg(A_LD,href,NR_G1));
|
||||||
list.concat(taicpu.op_reg(A_JMP,NR_L1));
|
list.concat(taicpu.op_reg(A_JMP,NR_G1));
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(procdef.mangledname),0);
|
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(procdef.mangledname),0);
|
||||||
href.refaddr := addr_hi;
|
href.refaddr := addr_high;
|
||||||
list.concat(taicpu.op_ref_reg(A_SETHI,href,NR_L1));
|
list.concat(taicpu.op_ref_reg(A_SETHI,href,NR_G1));
|
||||||
href.refaddr := addr_lo;
|
href.refaddr := addr_low;
|
||||||
list.concat(taicpu.op_reg_ref_reg(A_OR,NR_G0,href,NR_L1));
|
list.concat(taicpu.op_reg_ref_reg(A_OR,NR_G0,href,NR_G1));
|
||||||
list.concat(taicpu.op_reg(A_JMP,NR_L1));
|
list.concat(taicpu.op_reg(A_JMP,NR_G1));
|
||||||
end;
|
end;
|
||||||
{ Delay slot }
|
{ Delay slot }
|
||||||
list.Concat(TAiCpu.Op_none(A_NOP));
|
list.Concat(TAiCpu.Op_none(A_NOP));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user