* experimental sparc interface wrapper patch

git-svn-id: trunk@10991 -
This commit is contained in:
florian 2008-05-17 20:10:35 +00:00
parent cf220e1044
commit 77e5e0525c

View File

@ -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));