summaryrefslogtreecommitdiff
path: root/compiler/systems/i_linux.pas
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/systems/i_linux.pas')
-rw-r--r--compiler/systems/i_linux.pas142
1 files changed, 142 insertions, 0 deletions
diff --git a/compiler/systems/i_linux.pas b/compiler/systems/i_linux.pas
index 701dca158f..c65535df91 100644
--- a/compiler/systems/i_linux.pas
+++ b/compiler/systems/i_linux.pas
@@ -1029,6 +1029,138 @@ unit i_linux;
llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
);
+ system_riscv32_linux_info : tsysteminfo =
+ (
+ system : system_riscv32_linux;
+ name : 'Linux for RISC-V 32';
+ shortname : 'Linux';
+ flags : [tf_needs_symbol_size,tf_smartlink_sections,
+ tf_needs_symbol_type,tf_files_case_sensitive,
+ tf_requires_proper_alignment,tf_has_winlike_resources];
+ cpu : cpu_riscv32;
+ unit_env : 'LINUXUNITS';
+ extradefines : 'UNIX;HASUNIX';
+ 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';
+// p_ext_support : false;
+ Cprefix : '';
+ newline : #10;
+ dirsep : '/';
+ assem : as_gas;
+ assemextern : as_gas;
+ link : ld_none;
+ linkextern : ld_linux;
+ ar : ar_gnu_ar;
+ res : res_elf;
+ dbg : dbg_stabs;
+ script : script_unix;
+ endian : endian_little;
+ alignment :
+ (
+ procalign : 4;
+ loopalign : 4;
+ jumpalign : 0;
+ constalignmin : 0;
+ constalignmax : 8;
+ varalignmin : 0;
+ varalignmax : 8;
+ localalignmin : 4;
+ localalignmax : 8;
+ recordalignmin : 0;
+ recordalignmax : 8;
+ maxCrecordalign : 8
+ );
+ first_parm_offset : 0;
+ stacksize : 32*1024*1024;
+ stackalign : 8;
+ abi : abi_riscv_hf;
+ llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
+ );
+
+ system_riscv64_linux_info : tsysteminfo =
+ (
+ system : system_riscv64_linux;
+ name : 'Linux for RISC-V 64';
+ shortname : 'Linux';
+ flags : [tf_needs_symbol_size,tf_smartlink_sections,
+ tf_needs_symbol_type,tf_files_case_sensitive,
+ tf_requires_proper_alignment,tf_has_winlike_resources];
+ cpu : cpu_riscv64;
+ unit_env : 'LINUXUNITS';
+ extradefines : 'UNIX;HASUNIX';
+ 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';
+// p_ext_support : false;
+ Cprefix : '';
+ newline : #10;
+ dirsep : '/';
+ assem : as_gas;
+ assemextern : as_gas;
+ link : ld_none;
+ linkextern : ld_linux;
+ ar : ar_gnu_ar;
+ res : res_elf;
+ dbg : dbg_dwarf2;
+ script : script_unix;
+ endian : endian_little;
+ alignment :
+ (
+ procalign : 8;
+ loopalign : 4;
+ jumpalign : 0;
+ constalignmin : 4;
+ constalignmax : 16;
+ varalignmin : 4;
+ varalignmax : 16;
+ localalignmin : 8;
+ localalignmax : 16;
+ recordalignmin : 0;
+ recordalignmax : 16;
+ maxCrecordalign : 16
+ );
+ first_parm_offset : 16;
+ stacksize : 10*1024*1024;
+ stackalign : 16;
+ abi : abi_riscv_hf;
+ llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:64:64-v128:128:128-n32:64';
+ );
+
implementation
initialization
@@ -1095,4 +1227,14 @@ initialization
set_source_info(system_mipsel_linux_info);
{$endif linux}
{$endif CPUMIPSEL}
+{$ifdef CPURISCV32}
+ {$ifdef linux}
+ set_source_info(system_riscv32_linux_info);
+ {$endif linux}
+{$endif CPURISCV32}
+{$ifdef CPURISCV64}
+ {$ifdef linux}
+ set_source_info(system_riscv64_linux_info);
+ {$endif linux}
+{$endif CPURISCV64}
end.