* 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 cpu64bit}
{$define cpuextended}
{$define callparatemp}
{$endif x86_64}
{$ifdef alpha}
{$define cpu64bit}
{$undef cpuflags}
{$define callparatemp}
{$endif alpha}
{$ifdef sparc}
@ -65,6 +67,10 @@
{$define callparatemp}
{$endif powerpc}
{$ifdef arm}
{$define callparatemp}
{$endif arm}
{ FPU Emulator support }
{$ifdef m68k}
{$define cpufpemu}
@ -77,7 +83,10 @@
{
$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
should be used because other processors with reigster calling conventions
depend on this as well
@ -140,5 +149,4 @@
Revision 1.3 2002/07/04 18:56:50 florian
+ log added
}
}

View File

@ -111,8 +111,9 @@ interface
system_x86_64_linux, { 26 }
system_powerpc_darwin, { 27 }
system_i386_EMX, { 28 }
system_powerpc_netbsd, { 29 }
system_powerpc_openbsd { 30 }
system_powerpc_netbsd, { 29 }
system_powerpc_openbsd, { 30 }
system_arm_linux { 31 }
);
tasm = (as_none
@ -132,7 +133,6 @@ interface
,as_i386_pecoffwdosx
,as_m68k_mit
,as_powerpc_mpw
,as_x86_64_as
);
tar = (ar_none
@ -347,7 +347,6 @@ implementation
cutils;
{****************************************************************************
Target setting
****************************************************************************}
@ -634,8 +633,8 @@ end;
procedure InitSystems;
begin
{ Now default target, this is dependent on the i386 or m68k define,
when the define is the same as the current cpu then we use the source
{ Now default target, this is dependent on the target cpu define,
when the define is the same as the source cpu then we use the source
os, else we pick a default }
{$ifdef i386}
{$ifdef cpu86}
@ -672,9 +671,20 @@ begin
default_target(system_powerpc_linux);
{$endif cpupowerpc}
{$endif powerpc}
{$IFDEF sparc}
default_target(system_sparc_linux);
{$ENDIF sparc}
{$ifdef sparc}
{$ifdef cpusparc}
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;
@ -685,7 +695,10 @@ finalization
end.
{
$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
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
- remove duplicate comment
}
}

View File

@ -414,6 +414,70 @@ unit i_linux;
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
initialization
@ -450,11 +514,18 @@ initialization
set_source_info(system_powerpc_linux_info);
{$endif linux}
{$endif CPUPOWERPC}
{$ifdef CPUARM}
{$ifdef linux}
set_source_info(system_arm_linux_info);
{$endif linux}
{$endif CPUARM}
end.
{
$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
* parent framepointer code more generic

View File

@ -545,11 +545,20 @@ initialization
RegisterExport(system_SPARC_linux,texportliblinux);
RegisterTarget(system_SPARC_linux_info);
{$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.
{
$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
a new procdef declaration
* aktprocsym removed