Răsfoiți Sursa

+ first startup code implementation for amigaos4

git-svn-id: trunk@2200 -
Károly Balogh 19 ani în urmă
părinte
comite
c723aa9c86
2 a modificat fișierele cu 128 adăugiri și 0 ștergeri
  1. 1 0
      .gitattributes
  2. 127 0
      rtl/amiga/powerpc/prt0.as

+ 1 - 0
.gitattributes

@@ -3580,6 +3580,7 @@ rtl/amiga/crt.pp svneol=native#text/plain
 rtl/amiga/dos.pp svneol=native#text/plain
 rtl/amiga/m68k/prt0.as -text
 rtl/amiga/os.inc svneol=native#text/plain
+rtl/amiga/powerpc/prt0.as -text
 rtl/amiga/printer.pp svneol=native#text/plain
 rtl/amiga/readme -text
 rtl/arm/arm.inc svneol=native#text/plain

+ 127 - 0
rtl/amiga/powerpc/prt0.as

@@ -0,0 +1,127 @@
+#
+#  This file is part of the Free Pascal run time library.
+#  Copyright (c) 2005 by Karoly Balogh
+#
+#  Startup code for AmigaOS/PowerPC RTL
+#
+#  See the file COPYING.FPC, included in this distribution,
+#  for details about the copyright.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY;without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+        .section ".text"
+        .globl _start
+        .align 4
+_start:
+        mflr 0
+        stw  0,4(1)
+        stwu 1,-16(1)
+
+        # Get ExecBase
+        lwz  3,4(0)
+        lis  4,_ExecBase@ha
+        stw  3,_ExecBase@l(4)
+
+        # Get Exec Main Interface
+        lwz  5,632(3)               # MainInterface
+        lis  6,_IExec@ha
+        stw  5,_IExec@l(6)
+
+        # Make use of stack cookie, to avoid 
+        # stripping the symbol in all cases
+        lis  6,__stack_cookie@ha
+
+        # Store start of stack area
+        mr   6,1
+        addi 6,6,16
+        lis  4,stackArea@ha
+        stw  6,stackArea@l(4)
+
+        # Store regs
+        stwu 1,-128(1)
+        stw  13,52(1)
+        stw  14,56(1)
+        stw  15,60(1)
+        stw  16,64(1)
+        stw  17,68(1)
+        stw  18,72(1)
+        stw  19,76(1)
+        stw  20,80(1)
+        stw  21,84(1)
+        stw  22,88(1)
+        stw  23,92(1)
+        stw  24,96(1)
+        stw  25,100(1)
+        stw  26,104(1)
+        stw  27,108(1)
+        stw  28,112(1)
+        stw  29,116(1)
+        stw  30,120(1)
+        stw  31,124(1)
+
+        # Save Stackpointer
+        lis  4,OriginalStkPtr@ha
+        stw  1,OriginalStkPtr@l(4)
+
+        bl PASCALMAIN
+
+        .globl  _haltproc
+_haltproc:
+        # Restore Stackpointer
+        lis 4,OriginalStkPtr@ha
+        lwz 1,OriginalStkPtr@l(4)
+
+        lwz  13,52(1)
+        lwz  14,56(1)
+        lwz  15,60(1)
+        lwz  16,64(1)
+        lwz  17,68(1)
+        lwz  18,72(1)
+        lwz  19,76(1)
+        lwz  20,80(1)
+        lwz  21,84(1)
+        lwz  22,88(1)
+        lwz  23,92(1)
+        lwz  24,96(1)
+        lwz  25,100(1)
+        lwz  26,104(1)
+        lwz  27,108(1)
+        lwz  28,112(1)
+        lwz  29,116(1)
+        lwz  30,120(1)
+        lwz  31,124(1)
+        addi 1,1,128
+_exit:
+        addi 1,1,16
+        lwz  0,4(1)
+        mtlr 0
+        blr
+
+
+        .section ".data"
+        .globl _data_start
+_data_start:
+
+        .globl _ExecBase
+        .globl SysBase
+        .align 4
+SysBase:
+_ExecBase:
+        .long 0
+
+        .globl _IExec
+        .align 4
+_IExec:
+        .long 0
+
+        .globl OriginalStkPtr
+        .align 4
+OriginalStkPtr:
+        .long 0
+
+        .globl stackArea
+        .align 4
+stackArea:
+        .long 0