mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 03:39:40 +01:00 
			
		
		
		
	* first fixes to compile the x86-64 system unit
This commit is contained in:
		
							parent
							
								
									f84979f02d
								
							
						
					
					
						commit
						6d3d97e845
					
				@ -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
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
        );
 | 
			
		||||
    const subreg2cgsize:array[Tsubregister] of Tcgsize =
 | 
			
		||||
          (OS_NO,OS_8,OS_8,OS_16,OS_32,OS_64,OS_NO);
 | 
			
		||||
 | 
			
		||||
    begin
 | 
			
		||||
        result := opsize_2_cgsize[reg2opsize(reg)];
 | 
			
		||||
      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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user