瀏覽代碼

+ Added alpha cpu and linux for alpha os

michael 26 年之前
父節點
當前提交
20e0eaf145
共有 1 個文件被更改,包括 124 次插入16 次删除
  1. 124 16
      compiler/systems.pas

+ 124 - 16
compiler/systems.pas

@@ -46,19 +46,20 @@ unit systems;
      type
        tasmmode= (asmmode_none
             ,asmmode_i386_direct,asmmode_i386_att,asmmode_i386_intel
-            ,asmmode_m68k_mot
+            ,asmmode_m68k_mot,asmmode_alpha_direct
        );
      const
-       {$ifdef i386} i386asmmodecnt=3; {$else} i386asmmodecnt=0; {$endif}
-       {$ifdef m68k} m68kasmmodecnt=1; {$else} m68kasmmodecnt=0; {$endif}
-       asmmodecnt=i386asmmodecnt+m68kasmmodecnt+1;
+       {$ifdef i386}  i386asmmodecnt=3;  {$else} i386asmmodecnt=0; {$endif}
+       {$ifdef m68k}  m68kasmmodecnt=1;  {$else} m68kasmmodecnt=0; {$endif}
+       {$ifdef alpha} alphaasmmodecnt=1; {$else} alphaasmmodecnt=0; {$endif}
+       asmmodecnt=i386asmmodecnt+m68kasmmodecnt+Alphaasmmodecnt+1;
 
      type
        ttarget = (target_none
             ,target_i386_GO32V1,target_i386_GO32V2,target_i386_linux,
             target_i386_OS2,target_i386_Win32
             ,target_m68k_Amiga,target_m68k_Atari,target_m68k_Mac,
-            target_m68k_linux,target_m68k_PalmOS
+            target_m68k_linux,target_m68k_PalmOS,target_alpha_linux
        );
 
        ttargetflags = (tf_needs_isconsole,tf_supports_stack_checking);
@@ -66,7 +67,8 @@ unit systems;
      const
        {$ifdef i386} i386targetcnt=5; {$else} i386targetcnt=0; {$endif}
        {$ifdef m68k} m68ktargetcnt=5; {$else} m68ktargetcnt=0; {$endif}
-       targetcnt=i386targetcnt+m68ktargetcnt+1;
+       {$ifdef alpha} alphatargetcnt=1; {$else} alphatargetcnt=0; {$endif}
+       targetcnt=i386targetcnt+m68ktargetcnt+alphatargetcnt+1;
 
      type
        tasm = (as_none
@@ -74,13 +76,15 @@ unit systems;
             as_i386_nasmcoff,as_i386_nasmelf,as_i386_nasmobj,
             as_i386_tasm,as_i386_masm,
             as_i386_dbg,as_i386_coff,as_i386_pecoff
-            ,as_m68k_as,as_m68k_gas,as_m68k_mit,as_m68k_mot,as_m68k_mpw
+            ,as_m68k_as,as_m68k_gas,as_m68k_mit,as_m68k_mot,as_m68k_mpw,
+            as_alpha_as
        );
        { binary assembler writers, needed to test for -a }
      const
        {$ifdef i386} i386asmcnt=11; {$else} i386asmcnt=0; {$endif}
        {$ifdef m68k} m68kasmcnt=5; {$else} m68kasmcnt=0; {$endif}
-       asmcnt=i386asmcnt+m68kasmcnt+1;
+       {$ifdef alpha} alphaasmcnt=1; {$else} alphaasmcnt=0; {$endif}
+       asmcnt=i386asmcnt+m68kasmcnt+alphaasmcnt+1;
 
        binassem : set of tasm = [
          as_i386_dbg,as_i386_coff,as_i386_pecoff
@@ -91,22 +95,24 @@ unit systems;
             ,link_i386_ld,link_i386_ldgo32v1,
             link_i386_ldgo32v2,link_i386_ldw,
             link_i386_ldos2
-            ,link_m68k_ld
+            ,link_m68k_ld,link_alpha_ld
        );
      const
        {$ifdef i386} i386linkcnt=5; {$else} i386linkcnt=0; {$endif}
        {$ifdef m68k} m68klinkcnt=1; {$else} m68klinkcnt=0; {$endif}
-       linkcnt=i386linkcnt+m68klinkcnt+1;
+       {$ifdef alpha} alphalinkcnt=1; {$else} alphalinkcnt=0; {$endif}
+       linkcnt=i386linkcnt+m68klinkcnt+alphalinkcnt+1;
 
      type
        tar = (ar_none
             ,ar_i386_ar,ar_i386_arw
-            ,ar_m68k_ar
+            ,ar_m68k_ar,ar_alpha_ar
        );
      const
        {$ifdef i386} i386arcnt=2; {$else} i386arcnt=0; {$endif}
        {$ifdef m68k} m68karcnt=1; {$else} m68karcnt=0; {$endif}
-       arcnt=i386arcnt+m68karcnt+1;
+       {$ifdef alpha} alphaarcnt=1; {$else} alphaarcnt=0; {$endif}
+       arcnt=i386arcnt+m68karcnt+alphaarcnt+1;
 
      type
        tres = (res_none
@@ -115,19 +121,21 @@ unit systems;
      const
        {$ifdef i386} i386rescnt=1; {$else} i386rescnt=0; {$endif}
        {$ifdef m68k} m68krescnt=0; {$else} m68krescnt=0; {$endif}
-       rescnt=i386rescnt+m68krescnt+1;
+       {$ifdef alpha} alpharescnt=0; {$else} alpharescnt=0; {$endif}
+       rescnt=i386rescnt+m68krescnt+alpharescnt+1;
 
      type
        tos = ( os_none,
             os_i386_GO32V1,os_i386_GO32V2,os_i386_Linux,os_i386_OS2,
             os_i386_Win32,
             os_m68k_Amiga,os_m68k_Atari,os_m68k_Mac,os_m68k_Linux,
-            os_m68k_PalmOS
+            os_m68k_PalmOS,os_alpha_linux
        );
      const
        i386oscnt=5;
        m68koscnt=5;
-       oscnt=i386oscnt+m68koscnt+1;
+       alphaoscnt=1;
+       oscnt=i386oscnt+m68koscnt+alphaoscnt+1;
 
    type
        tosinfo = packed record
@@ -473,6 +481,27 @@ implementation
             size_of_longint : 4;
             use_bound_instruction : false;
             use_function_relative_addresses : false
+          ),
+          (
+            id     : os_alpha_linux;
+            name         : 'Linux for Alpha';
+            shortname    : 'linux';
+            sharedlibext : '.so';
+            staticlibext : '.a';
+            sourceext    : '.pp';
+            pasext       : '.pas';
+            exeext       : '';
+            defext       : '.def';
+            scriptext    : '.sh';
+            libprefix    : 'lib';
+            Cprefix      : '';
+            newline      : #10;
+            endian       : endian_little;
+            stackalignment : 8;
+            size_of_pointer : 8;
+            size_of_longint : 4;
+            use_bound_instruction : false;
+            use_function_relative_addresses : true
           )
           );
 
@@ -731,6 +760,23 @@ implementation
               '.stab','.stabstr')
           )
 {$endif m68k}
+{$ifdef alpha}
+          ,(
+            id     : as_alpha_as;
+            idtxt  : 'AS';
+            asmbin : 'as';
+            asmcmd : '-o $OBJ $ASM';
+            allowdirect : true;
+            externals : false;
+            needar : true;
+            labelprefix : '.L';
+            comment : '# ';
+            secnames : ('',
+              '.text','.data','.bss',
+              '','','','','','',
+              '.stab','.stabstr')
+          )
+{$endif}
           );
 
 
@@ -850,6 +896,25 @@ implementation
             libprefix  : '-l'
           )
 {$endif m68k}
+{$ifdef alpha}
+          ,(
+            id      : link_alpha_ld;
+            linkbin : 'ld';
+            linkcmd : '$OPT -o $EXE $RES';
+            binders : 0;
+            bindbin : ('','');
+            bindcmd : ('','');
+            stripopt   : '-s';
+            stripbind  : false;
+            libpathprefix : 'SEARCH_DIR(';
+            libpathsuffix : ')';
+            groupstart : 'GROUP(';
+            groupend   : ')';
+            inputstart : 'INPUT(';
+            inputend   : ')';
+            libprefix  : '-l'
+          )
+{$endif}
           );
 
 {****************************************************************************
@@ -878,6 +943,13 @@ implementation
             arcmd : 'rs $LIB $FILES'
           )
 {$endif m68k}
+{$ifdef alpha}
+          ,(
+            id    : ar_alha_ar;
+            arbin : 'ar';
+            arcmd : 'rs $LIB $FILES'
+          )
+{$endif}
           );
 
 
@@ -1162,6 +1234,33 @@ implementation
             stacksize   : 8192
           )
 {$endif m68k}
+{$ifdef alpha}
+          (
+            target      : target_alpha_LINUX;
+            flags       : [];
+            cpu         : alpha;
+            short_name  : 'LINUX';
+            unit_env    : 'LINUXUNITS';
+            system_unit : 'syslinux';
+            smartext    : '.sl';
+            unitext     : '.ppu';
+            unitlibext  : '.ppl';
+            asmext      : '.s';
+            objext      : '.o';
+            resext      : '.res';
+            resobjext   : '.or';
+            exeext      : '';
+            os          : os_alpha_Linux;
+            link        : link_alpha_ld;
+            assem       : as_alpha_as;
+            assemsrc    : as_alpha_as;
+            ar          : ar_alpha_ar;
+            res         : res_none;
+            heapsize    : 256*1024;
+            maxheapsize : 32768*1024;
+            stacksize   : 8192
+          )
+{$endif}
           );
 
 {****************************************************************************
@@ -1192,6 +1291,12 @@ implementation
             idtxt : 'MOT'
           )
 {$endif m68k}
+{$ifdef alpha}
+          ,(
+            id    : asmmode_alpha_direct;
+            idtxt : 'DIRECT'
+          )
+{$endif}
           );
 
 {****************************************************************************
@@ -1516,7 +1621,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.83  1999-07-10 10:26:20  peter
+  Revision 1.84  1999-08-02 23:56:51  michael
+  + Added alpha cpu and linux for alpha os
+
+  Revision 1.83  1999/07/10 10:26:20  peter
     * merged
 
   Revision 1.82.2.2  1999/07/10 10:03:16  peter