2
0
Эх сурвалжийг харах

* more z80 support for the compiler

git-svn-id: branches/z80@35678 -
florian 8 жил өмнө
parent
commit
fc4a8c0daa

+ 6 - 0
compiler/options.pas

@@ -3535,6 +3535,12 @@ begin
   def_system_macro('FPC_CURRENCY_IS_INT64');
   def_system_macro('FPC_COMP_IS_INT64');
 {$endif aarch64}
+{$ifdef z80}
+  def_system_macro('CPUZ80');
+  def_system_macro('CPU16');
+  def_system_macro('FPC_CURRENCY_IS_INT64');
+  def_system_macro('FPC_COMP_IS_INT64');
+{$endif z80}
 
 {$if defined(cpu8bitalu)}
   def_system_macro('CPUINT8');

+ 7 - 0
compiler/psystem.pas

@@ -333,6 +333,13 @@ implementation
         sc80floattype:=cfloatdef.create(sc80real,true);
         s64currencytype:=corddef.create(scurrency,low(int64),high(int64),true);
 {$endif avr}
+{$ifdef z80}
+        s32floattype:=cfloatdef.create(s32real,true);
+        s64floattype:=cfloatdef.create(s64real,true);
+        s80floattype:=cfloatdef.create(s80real,true);
+        sc80floattype:=cfloatdef.create(sc80real,true);
+        s64currencytype:=corddef.create(scurrency,low(int64),high(int64),true);
+{$endif z80}
 {$ifdef mips}
         create_fpu_types;
         s64currencytype:=corddef.create(scurrency,low(int64),high(int64),true);

+ 5 - 1
compiler/systems.pas

@@ -1006,7 +1006,11 @@ begin
 
 {$ifdef wasm}
   default_target(system_wasm_wasm32);
-{$endif}
+{$endif wasm}
+
+{$ifdef z80}
+  default_target(system_z80_embedded);
+{$endif z80}
 end;
 
 

+ 70 - 0
compiler/systems/i_embed.pas

@@ -488,6 +488,70 @@ unit i_embed;
             llvmdatalayout : 'TODO';
           );
 
+       system_z80_embedded_info : tsysteminfo =
+          (
+            system       : system_z80_embedded;
+            name         : 'Embedded';
+            shortname    : 'embedded';
+            flags        : [tf_needs_symbol_size,tf_files_case_sensitive,
+                            tf_smartlink_sections];
+            cpu          : cpu_avr;
+            unit_env     : '';
+            extradefines : '';
+            exeext       : '';
+            defext       : '.def';
+            scriptext    : '.sh';
+            smartext     : '.sl';
+            unitext      : '.ppu';
+            unitlibext   : '.ppl';
+            asmext       : '.s';
+            objext       : '.o';
+            resext       : '.res';
+            resobjext    : '.or';
+            sharedlibext : '.so';
+            staticlibext : '.a';
+            staticlibprefix : 'libp';
+            sharedlibprefix : 'lib';
+            sharedClibext : '.so';
+            staticClibext : '.a';
+            staticClibprefix : 'lib';
+            sharedClibprefix : 'lib';
+            importlibprefix : 'libimp';
+            importlibext : '.a';
+            Cprefix      : '';
+            newline      : #10;
+            dirsep       : '/';
+            assem        : as_gas;
+            assemextern  : as_gas;
+            link         : ld_none;
+            linkextern   : ld_embedded;
+            ar           : ar_gnu_ar;
+            res          : res_none;
+            dbg          : dbg_dwarf2;
+            script       : script_unix;
+            endian       : endian_little;
+            alignment    :
+              (
+                procalign       : 1;
+                loopalign       : 1;
+                jumpalign       : 0;
+                constalignmin   : 0;
+                constalignmax   : 1;
+                varalignmin     : 0;
+                varalignmax     : 1;
+                localalignmin   : 0;
+                localalignmax   : 1;
+                recordalignmin  : 0;
+                recordalignmax  : 1;
+                maxCrecordalign : 1
+              );
+            first_parm_offset : 0;
+            stacksize    : 1024;
+            stackalign   : 1;
+            abi : abi_default;
+            llvmdatalayout : 'todo';
+          );
+
   implementation
 
 initialization
@@ -526,4 +590,10 @@ initialization
     set_source_info(system_m68k_embedded_info);
   {$endif embedded}
 {$endif cpum68k}
+{$ifdef CPUZ80}
+  {$ifdef embedded}
+    set_source_info(system_z80_embedded_info);
+  {$endif embedded}
+{$endif CPUZ80}
 end.
+

+ 5 - 0
compiler/systems/t_embed.pas

@@ -1514,4 +1514,9 @@ initialization
   RegisterLinker(ld_embedded,TLinkerEmbedded);
   RegisterTarget(system_m68k_embedded_info);
 {$endif m68k}
+
+{$ifdef z80}
+  RegisterLinker(ld_embedded,TLinkerEmbedded);
+  RegisterTarget(system_z80_embedded_info);
+{$endif z80}
 end.