diff options
Diffstat (limited to 'compiler/systems/i_linux.pas')
-rw-r--r-- | compiler/systems/i_linux.pas | 142 |
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. |