Browse Source

* use different haltproc for arm-linux-eabi, this should be cleaned up by using also pascal units for the startup code for arm-linux

git-svn-id: trunk@12808 -
florian 16 years ago
parent
commit
4bc28de96f
4 changed files with 32 additions and 2 deletions
  1. 9 0
      rtl/linux/arm/cprt0.as
  2. 10 2
      rtl/linux/arm/gprt0.as
  3. 9 0
      rtl/linux/arm/prt0.as
  4. 4 0
      rtl/linux/system.pp

+ 9 - 0
rtl/linux/arm/cprt0.as

@@ -103,6 +103,15 @@ _haltproc:
         swi 0x900001
         swi 0x900001
         b _haltproc
         b _haltproc
 
 
+	.globl  _haltproc_eabi
+        .type   _haltproc_eabi,#function
+_haltproc_eabi:
+        ldr r0,=operatingsystem_result
+        ldrb r0,[r0]
+        mov r7,#248
+	swi 0x0
+	b _haltproc_eabi
+
         /* Define a symbol for the first piece of initialized data.  */
         /* Define a symbol for the first piece of initialized data.  */
         .data
         .data
         .globl __data_start
         .globl __data_start

+ 10 - 2
rtl/linux/arm/gprt0.as

@@ -53,13 +53,21 @@ _start:
 	bl PASCALMAIN
 	bl PASCALMAIN
 
 
 	.globl  _haltproc
 	.globl  _haltproc
-    .type   _haltproc,#function
+        .type   _haltproc,#function
 _haltproc:
 _haltproc:
         /* r0 contains exitcode */
         /* r0 contains exitcode */
 	swi 0x900001
 	swi 0x900001
 	b _haltproc
 	b _haltproc
 
 
-	/* Define a symbol for the first piece of initialized data.  */
+	.globl  _haltproc_eabi
+        .type   _haltproc_eabi,#function
+_haltproc_eabi:
+        /* r0 contains exitcode */
+        mov r7,#248
+	swi 0x0
+	b _haltproc_eabi
+
+        /* Define a symbol for the first piece of initialized data.  */
 	.data
 	.data
 	.globl __data_start
 	.globl __data_start
 __data_start:
 __data_start:

+ 9 - 0
rtl/linux/arm/prt0.as

@@ -78,6 +78,15 @@ _haltproc:
 	swi 0x900001
 	swi 0x900001
 	b _haltproc
 	b _haltproc
 
 
+	.globl  _haltproc_eabi
+        .type   _haltproc_eabi,#function
+_haltproc_eabi:
+        ldr r0,=operatingsystem_result
+        ldrb r0,[r0]
+        mov r7,#248
+	swi 0x0
+	b _haltproc_eabi
+
 	/* Define a symbol for the first piece of initialized data.  */
 	/* Define a symbol for the first piece of initialized data.  */
 	.data
 	.data
 	.globl __data_start
 	.globl __data_start

+ 4 - 0
rtl/linux/system.pp

@@ -81,7 +81,11 @@ const calculated_cmdline:Pchar=nil;
                        Misc. System Dependent Functions
                        Misc. System Dependent Functions
 *****************************************************************************}
 *****************************************************************************}
 
 
+{$if defined(CPUARM) and defined(FPC_ABI_EABI)}
+procedure haltproc(e:longint);cdecl;external name '_haltproc_eabi';
+{$else}
 procedure haltproc(e:longint);cdecl;external name '_haltproc';
 procedure haltproc(e:longint);cdecl;external name '_haltproc';
+{$endif}
 
 
 procedure System_exit;
 procedure System_exit;
 begin
 begin