* first fixes to compile the x86-64 system unit

This commit is contained in:
florian 2003-12-24 01:47:22 +00:00
parent f84979f02d
commit 6d3d97e845
3 changed files with 56 additions and 12 deletions

View File

@ -2831,10 +2831,24 @@ implementation
cachedsize := elesize;
if (cachedsize>0) and
(
{$ifdef cpu64bit}
{$ifdef VER1_0}
{ 1.0.x can't handle this and while bootstrapping with 1.0.x we can forget about it }
false
{$else}
(TConstExprInt(highrange)-TConstExprInt(lowrange) > $7fffffffffffffff) or
{ () are needed around cachedsize-1 to avoid a possible
integer overflow for cachedsize=1 !! PM }
(($7fffffffffffffff div cachedsize + (cachedsize -1)) < (int64(highrange) - int64(lowrange)))
{$endif VER1_0}
{$else cpu64bit}
(TConstExprInt(highrange)-TConstExprInt(lowrange) > $7fffffff) or
{ () are needed around cachedsize-1 to avoid a possible
integer overflow for cachedsize=1 !! PM }
(($7fffffff div cachedsize + (cachedsize -1)) < (int64(highrange) - int64(lowrange)))
{$endif cpu64bit}
) Then
Message(sym_e_segment_too_large);
end;
@ -6138,7 +6152,10 @@ implementation
end.
{
$Log$
Revision 1.194 2003-12-21 19:42:43 florian
Revision 1.195 2003-12-24 01:47:22 florian
* first fixes to compile the x86-64 system unit
Revision 1.194 2003/12/21 19:42:43 florian
* fixed ppc inlining stuff
* fixed wrong unit writing
+ added some sse stuff

View File

@ -147,10 +147,17 @@ unit cgx86;
end;
const
{$ifdef x86_64}
TCGSize2OpSize: Array[tcgsize] of topsize =
(S_NO,S_B,S_W,S_L,S_D,S_B,S_W,S_L,S_D,
S_FS,S_FL,S_FX,S_IQ,S_FXX,
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO);
{$else x86_64}
TCGSize2OpSize: Array[tcgsize] of topsize =
(S_NO,S_B,S_W,S_L,S_L,S_B,S_W,S_L,S_L,
S_FS,S_FL,S_FX,S_IQ,S_FXX,
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO);
{$endif x86_64}
implementation
@ -1901,7 +1908,10 @@ unit cgx86;
end.
{
$Log$
Revision 1.94 2003-12-24 00:10:03 florian
Revision 1.95 2003-12-24 01:47:23 florian
* first fixes to compile the x86-64 system unit
Revision 1.94 2003/12/24 00:10:03 florian
- delete parameter in cg64 methods removed
Revision 1.93 2003/12/21 19:42:43 florian

View File

@ -49,15 +49,29 @@ unit cgcpu;
class function tcgx86_64.reg_cgsize(const reg: tregister): tcgsize;
const
opsize_2_cgsize: array[topsize] of tcgsize = (OS_NO,
OS_8,OS_16,OS_32,OS_NO,OS_NO,OS_NO,OS_NO,OS_NO,OS_NO,
OS_32,OS_64,OS_64,
OS_F32,OS_F64,OS_F80,OS_F32,OS_F64,OS_NO,OS_NO,
OS_NO,OS_NO,OS_NO
);
begin
result := opsize_2_cgsize[reg2opsize(reg)];
const subreg2cgsize:array[Tsubregister] of Tcgsize =
(OS_NO,OS_8,OS_8,OS_16,OS_32,OS_64,OS_NO);
begin
case getregtype(reg) of
R_INTREGISTER :
reg_cgsize:=subreg2cgsize[getsubreg(reg)];
R_FPUREGISTER :
reg_cgsize:=OS_F80;
R_MMXREGISTER:
reg_cgsize:=OS_M64;
R_MMREGISTER:
reg_cgsize:=OS_M128;
R_SPECIALREGISTER :
case reg of
NR_CS,NR_DS,NR_ES,NR_SS,NR_FS,NR_GS:
reg_cgsize:=OS_16
else
reg_cgsize:=OS_32
end
else
internalerror(200303181);
end;
end;
@ -192,7 +206,10 @@ begin
end.
{
$Log$
Revision 1.6 2003-12-22 19:00:17 florian
Revision 1.7 2003-12-24 01:47:23 florian
* first fixes to compile the x86-64 system unit
Revision 1.6 2003/12/22 19:00:17 florian
* fixed some x86-64 issues
Revision 1.5 2003/09/25 13:13:32 florian