* fixed exception reason size for 64 bit systems

This commit is contained in:
florian 2004-02-22 18:27:21 +00:00
parent 8bfb707401
commit 01d16548f4
4 changed files with 32 additions and 50 deletions

View File

@ -321,7 +321,7 @@ implementation
if not onlyfree then
begin
cg.g_exception_reason_load(list, href);
cg.a_cmp_const_reg_label(list,OS_S32,OC_EQ,a,NR_FUNCTION_RESULT_REG,endexceptlabel);
cg.a_cmp_const_reg_label(list,OS_INT,OC_EQ,a,NR_FUNCTION_RESULT_REG,endexceptlabel);
end;
end;
@ -2141,7 +2141,10 @@ implementation
end.
{
$Log$
Revision 1.192 2004-02-08 17:48:59 jonas
Revision 1.193 2004-02-22 18:27:21 florian
* fixed exception reason size for 64 bit systems
Revision 1.192 2004/02/08 17:48:59 jonas
* fixed regvars
Revision 1.191 2004/02/05 19:35:27 florian

View File

@ -1477,22 +1477,21 @@ unit cgx86;
procedure tcgx86.g_exception_reason_save(list : taasmoutput; const href : treference);
begin
list.concat(Taicpu.op_reg(A_PUSH,tcgsize2opsize[OS_INT],NR_FUNCTION_RESULT_REG));
end;
begin
list.concat(Taicpu.op_reg(A_PUSH,tcgsize2opsize[OS_ADDR],NR_FUNCTION_RESULT_REG));
end;
procedure tcgx86.g_exception_reason_save_const(list : taasmoutput;const href : treference; a: aword);
begin
list.concat(Taicpu.op_const(A_PUSH,tcgsize2opsize[OS_INT],a));
end;
begin
list.concat(Taicpu.op_const(A_PUSH,tcgsize2opsize[OS_ADDR],a));
end;
procedure tcgx86.g_exception_reason_load(list : taasmoutput; const href : treference);
begin
list.concat(Taicpu.op_reg(A_POP,tcgsize2opsize[OS_ADDR],NR_FUNCTION_RESULT_REG));
end;
begin
list.concat(Taicpu.op_reg(A_POP,tcgsize2opsize[OS_INT],NR_FUNCTION_RESULT_REG));
end;
{****************************************************************************
@ -1781,7 +1780,10 @@ unit cgx86;
end.
{
$Log$
Revision 1.113 2004-02-22 16:48:10 florian
Revision 1.114 2004-02-22 18:27:21 florian
* fixed exception reason size for 64 bit systems
Revision 1.113 2004/02/22 16:48:10 florian
* x86_64 uses generic concatcopy_valueopenarray for now
Revision 1.112 2004/02/21 19:46:37 florian

View File

@ -321,40 +321,8 @@ uses
LOC_CSSEREGISTER = LOC_CMMREGISTER;
max_operands = 3;
maxfpuregs = 8;
(*
{ low and high of the available maximum width integer general purpose }
{ registers }
LoGPReg = RS_EAX;
HiGPReg = RS_EDX;
{ Table of registers which can be allocated by the code generator
internally, when generating the code.
}
{ legend: }
{ xxxregs = set of all possibly used registers of that type in the code }
{ generator }
{ usableregsxxx = set of all 32bit components of registers that can be }
{ possible allocated to a regvar or using getregisterxxx (this }
{ excludes registers which can be only used for parameter }
{ passing on ABI's that define this) }
{ c_countusableregsxxx = amount of registers in the usableregsxxx set }
// maxintregs = 4;
// intregs = [R_EAX..R_BL]-[R_ESI,R_SI];
{ to determine how many registers to use for regvars }
maxintscratchregs = 1;
maxfpuregs = 8;
usableregsfpu = [];
c_countusableregsfpu = 0;
usableregsmm = [RS_MM0..RS_MM7];
c_countusableregsmm = 8;
*)
{*****************************************************************************
CPU Dependent Constants
*****************************************************************************}
@ -539,7 +507,10 @@ implementation
end.
{
$Log$
Revision 1.40 2004-02-05 18:28:37 peter
Revision 1.41 2004-02-22 18:27:21 florian
* fixed exception reason size for 64 bit systems
Revision 1.40 2004/02/05 18:28:37 peter
* x86_64 fixes for opsize
Revision 1.39 2004/02/04 22:01:13 peter

View File

@ -55,10 +55,13 @@ unit cgcpu;
begin
inherited init_register_allocators;
if cs_create_pic in aktmoduleswitches then
rg[R_INTREGISTER]:=trgcpu.create(R_INTREGISTER,R_SUBWHOLE,[RS_EAX,RS_EDX,RS_ECX,RS_ESI,RS_EDI],first_int_imreg,[RS_EBP,RS_EBX])
rg[R_INTREGISTER]:=trgcpu.create(R_INTREGISTER,R_SUBWHOLE,[RS_RAX,RS_RDX,RS_RCX,RS_RSI,RS_RDI,
RS_R8,RS_R9,RS_R10,RS_R11,RS_R12,RS_R13,RS_R14,RS_R15],first_int_imreg,[RS_EBP,RS_EBX])
else
rg[R_INTREGISTER]:=trgcpu.create(R_INTREGISTER,R_SUBWHOLE,[RS_EAX,RS_EDX,RS_ECX,RS_EBX,RS_ESI,RS_EDI],first_int_imreg,[RS_EBP]);
rg[R_MMXREGISTER]:=trgcpu.create(R_MMXREGISTER,R_SUBNONE,[RS_XMM0,RS_XMM1,RS_XMM2,RS_XMM3,RS_XMM4,RS_XMM5,RS_XMM6,RS_XMM7],first_sse_imreg,[]);
rg[R_INTREGISTER]:=trgcpu.create(R_INTREGISTER,R_SUBWHOLE,[RS_RAX,RS_RDX,RS_RCX,RS_RBX,RS_RSI,RS_RDI,
RS_R8,RS_R9,RS_R10,RS_R11,RS_R12,RS_R13,RS_R14,RS_R15],first_int_imreg,[RS_EBP]);
rg[R_MMXREGISTER]:=trgcpu.create(R_MMXREGISTER,R_SUBNONE,[RS_XMM0,RS_XMM1,RS_XMM2,RS_XMM3,RS_XMM4,RS_XMM5,RS_XMM6,RS_XMM7,
RS_XMM8,RS_XMM9,RS_XMM10,RS_XMM11,RS_XMM12,RS_XMM13,RS_XMM14,RS_XMM15],first_sse_imreg,[]);
rg[R_MMREGISTER]:=trgcpu.create(R_MMREGISTER,R_SUBNONE,[RS_XMM0,RS_XMM1,RS_XMM2,RS_XMM3,RS_XMM4,RS_XMM5,RS_XMM6,RS_XMM7],first_sse_imreg,[]);
rgfpu:=Trgx86fpu.create;
end;
@ -108,7 +111,10 @@ begin
end.
{
$Log$
Revision 1.11 2004-02-09 22:14:17 peter
Revision 1.12 2004-02-22 18:27:21 florian
* fixed exception reason size for 64 bit systems
Revision 1.11 2004/02/09 22:14:17 peter
* more x86_64 parameter fixes
* tparalocation.lochigh is now used to indicate if registerhigh
is used and what the type is