* very basic stuff for the arm

This commit is contained in:
florian 2003-07-21 11:52:57 +00:00
parent d73acd12f6
commit d2035fd6b4
4 changed files with 118 additions and 17 deletions

View File

@ -50,11 +50,13 @@
{$define x86} {$define x86}
{$define cpu64bit} {$define cpu64bit}
{$define cpuextended} {$define cpuextended}
{$define callparatemp}
{$endif x86_64} {$endif x86_64}
{$ifdef alpha} {$ifdef alpha}
{$define cpu64bit} {$define cpu64bit}
{$undef cpuflags} {$undef cpuflags}
{$define callparatemp}
{$endif alpha} {$endif alpha}
{$ifdef sparc} {$ifdef sparc}
@ -65,6 +67,10 @@
{$define callparatemp} {$define callparatemp}
{$endif powerpc} {$endif powerpc}
{$ifdef arm}
{$define callparatemp}
{$endif arm}
{ FPU Emulator support } { FPU Emulator support }
{$ifdef m68k} {$ifdef m68k}
{$define cpufpemu} {$define cpufpemu}
@ -77,7 +83,10 @@
{ {
$Log$ $Log$
Revision 1.20 2003-05-24 21:12:57 florian Revision 1.21 2003-07-21 11:52:57 florian
* very basic stuff for the arm
Revision 1.20 2003/05/24 21:12:57 florian
* if something doesn't work with callparatemp, the define callparatemp * if something doesn't work with callparatemp, the define callparatemp
should be used because other processors with reigster calling conventions should be used because other processors with reigster calling conventions
depend on this as well depend on this as well
@ -140,5 +149,4 @@
Revision 1.3 2002/07/04 18:56:50 florian Revision 1.3 2002/07/04 18:56:50 florian
+ log added + log added
}
}

View File

@ -111,8 +111,9 @@ interface
system_x86_64_linux, { 26 } system_x86_64_linux, { 26 }
system_powerpc_darwin, { 27 } system_powerpc_darwin, { 27 }
system_i386_EMX, { 28 } system_i386_EMX, { 28 }
system_powerpc_netbsd, { 29 } system_powerpc_netbsd, { 29 }
system_powerpc_openbsd { 30 } system_powerpc_openbsd, { 30 }
system_arm_linux { 31 }
); );
tasm = (as_none tasm = (as_none
@ -132,7 +133,6 @@ interface
,as_i386_pecoffwdosx ,as_i386_pecoffwdosx
,as_m68k_mit ,as_m68k_mit
,as_powerpc_mpw ,as_powerpc_mpw
,as_x86_64_as
); );
tar = (ar_none tar = (ar_none
@ -347,7 +347,6 @@ implementation
cutils; cutils;
{**************************************************************************** {****************************************************************************
Target setting Target setting
****************************************************************************} ****************************************************************************}
@ -634,8 +633,8 @@ end;
procedure InitSystems; procedure InitSystems;
begin begin
{ Now default target, this is dependent on the i386 or m68k define, { Now default target, this is dependent on the target cpu define,
when the define is the same as the current cpu then we use the source when the define is the same as the source cpu then we use the source
os, else we pick a default } os, else we pick a default }
{$ifdef i386} {$ifdef i386}
{$ifdef cpu86} {$ifdef cpu86}
@ -672,9 +671,20 @@ begin
default_target(system_powerpc_linux); default_target(system_powerpc_linux);
{$endif cpupowerpc} {$endif cpupowerpc}
{$endif powerpc} {$endif powerpc}
{$IFDEF sparc} {$ifdef sparc}
default_target(system_sparc_linux); {$ifdef cpusparc}
{$ENDIF sparc} default_target(source_info.system);
{$else cpusparc}
default_target(system_sparc_linux);
{$endif cpusparc}
{$endif sparc}
{$ifdef arm}
{$ifdef cpuarm}
default_target(source_info.system);
{$else cpuarm}
default_target(system_arm_linux);
{$endif cpuarm}
{$endif arm}
end; end;
@ -685,7 +695,10 @@ finalization
end. end.
{ {
$Log$ $Log$
Revision 1.65 2003-05-31 16:17:27 marco Revision 1.66 2003-07-21 11:52:57 florian
* very basic stuff for the arm
Revision 1.65 2003/05/31 16:17:27 marco
* cpuppc -> cpupowerpc. Target compiler was always linux for ppc * cpuppc -> cpupowerpc. Target compiler was always linux for ppc
Revision 1.64 2003/05/28 23:18:31 florian Revision 1.64 2003/05/28 23:18:31 florian
@ -788,4 +801,4 @@ end.
Revision 1.38 2002/04/14 16:56:30 carl Revision 1.38 2002/04/14 16:56:30 carl
- remove duplicate comment - remove duplicate comment
} }

View File

@ -414,6 +414,70 @@ unit i_linux;
use_function_relative_addresses : true use_function_relative_addresses : true
); );
system_arm_linux_info : tsysteminfo =
(
system : system_arm_Linux;
name : 'Linux for ARM';
shortname : 'linux';
flags : [];
cpu : cpu_SPARC;
unit_env : 'LINUXUNITS';
extradefines : 'UNIX;HASUNIX';
sourceext : '.pp';
pasext : '.pas';
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';
Cprefix : '';
newline : #10;
dirsep : '/';
files_case_relevent : true;
assem : as_gas;
assemextern : as_gas;
link : nil;
linkextern : nil;
ar : ar_gnu_ar;
res : res_none;
script : script_unix;
endian : endian_big;
alignment :
(
procalign : 4;
loopalign : 4;
jumpalign : 0;
constalignmin : 0;
constalignmax : 4;
varalignmin : 0;
varalignmax : 4;
localalignmin : 0;
localalignmax : 4;
paraalign : 4;
recordalignmin : 4;
recordalignmax : 4;
maxCrecordalign : 4
);
first_parm_offset : 8;
heapsize : 256*1024;
stacksize : 262144;
DllScanSupported:false;
use_function_relative_addresses : true
);
implementation implementation
initialization initialization
@ -450,11 +514,18 @@ initialization
set_source_info(system_powerpc_linux_info); set_source_info(system_powerpc_linux_info);
{$endif linux} {$endif linux}
{$endif CPUPOWERPC} {$endif CPUPOWERPC}
{$ifdef CPUARM}
{$ifdef linux}
set_source_info(system_arm_linux_info);
{$endif linux}
{$endif CPUARM}
end. end.
{ {
$Log$ $Log$
Revision 1.9 2003-07-06 17:58:22 peter Revision 1.10 2003-07-21 11:52:57 florian
* very basic stuff for the arm
Revision 1.9 2003/07/06 17:58:22 peter
* framepointer fixes for sparc * framepointer fixes for sparc
* parent framepointer code more generic * parent framepointer code more generic

View File

@ -545,11 +545,20 @@ initialization
RegisterExport(system_SPARC_linux,texportliblinux); RegisterExport(system_SPARC_linux,texportliblinux);
RegisterTarget(system_SPARC_linux_info); RegisterTarget(system_SPARC_linux_info);
{$endif SPARC} {$endif SPARC}
{$ifdef ARM}
RegisterExternalLinker(system_arm_linux_info,TLinkerLinux);
RegisterImport(system_arm_linux,timportliblinux);
RegisterExport(system_arm_linux,texportliblinux);
RegisterTarget(system_arm_linux_info);
{$endif ARM}
end. end.
{ {
$Log$ $Log$
Revision 1.8 2003-04-27 07:29:52 peter Revision 1.9 2003-07-21 11:52:57 florian
* very basic stuff for the arm
Revision 1.8 2003/04/27 07:29:52 peter
* aktprocdef cleanup, aktprocdef is now always nil when parsing * aktprocdef cleanup, aktprocdef is now always nil when parsing
a new procdef declaration a new procdef declaration
* aktprocsym removed * aktprocsym removed