Bläddra i källkod

* some m68k and amiga related stuff fixed

florian 21 år sedan
förälder
incheckning
91733f9237
5 ändrade filer med 168 tillägg och 47 borttagningar
  1. 60 31
      rtl/amiga/Makefile
  2. 9 2
      rtl/amiga/Makefile.fpc
  3. 79 3
      rtl/amiga/system.pas
  4. 9 5
      rtl/inc/systemh.inc
  5. 11 6
      rtl/m68k/setjumph.inc

+ 60 - 31
rtl/amiga/Makefile

@@ -1,24 +1,15 @@
 #
-# Don't edit, this file is generated by FPCMake Version 1.1 [2004/04/21]
+# Don't edit, this file is generated by FPCMake Version 1.1 [2004/04/12]
 #
 default: all
 MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos darwin emx watcom
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) sunos qnx
-FORCE:
-.PHONY: FORCE
 override PATH:=$(subst \,/,$(PATH))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
 ifeq ($(findstring ;,$(PATH)),)
 inUnix=1
 SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
 else
 SEARCHPATH:=$(subst ;, ,$(PATH))
 endif
-endif
 SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
 PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
 ifeq ($(PWD),)
@@ -119,6 +110,7 @@ FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
 endif
 export FPC FPC_VERSION FPC_COMPILERINFO
 unexport CHECKDEPEND ALLDEPENDENCIES
+BSDTARGETS=freebsd netbsd openbsd darwin
 ifndef CPU_TARGET
 ifdef CPU_TARGET_DEFAULT
 CPU_TARGET=$(CPU_TARGET_DEFAULT)
@@ -157,7 +149,7 @@ ifeq ($(findstring $(OS_TARGET),$(MAKEFILETARGETS)),)
 $(error The Makefile doesn't support target $(OS_TARGET), please run fpcmake first)
 endif
 endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
+ifneq ($(findstring $(OS_TARGET),$(BSDTARGETS)),)
 BSDhier=1
 endif
 ifeq ($(OS_TARGET),linux)
@@ -229,6 +221,11 @@ override FPCOPT+=-Ur
 endif
 endif
 endif
+ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
+SYSTEMUNIT=system
+else
+SYSTEMUNIT=syslinux
+endif
 OBJPASDIR=$(RTL)/objpas
 GRAPHDIR=$(INC)/graph
 override TARGET_UNITS+=system exec strings dos crt objects printer objpas heaptrc lineinfo getopts graph sysutils math typinfo
@@ -245,12 +242,48 @@ ifdef REQUIRE_PACKAGESDIR
 override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
 endif
 ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
+ifeq ($(OS_TARGET),linux)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),freebsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),netbsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),openbsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),darwin)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),sunos)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),qnx)
+UNIXINSTALLDIR=1
 endif
 else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
+ifeq ($(OS_SOURCE),linux)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),freebsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),netbsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),openbsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),darwin)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),sunos)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),qnx)
+UNIXINSTALLDIR=1
 endif
 endif
 ifndef INSTALL_PREFIX
@@ -259,7 +292,7 @@ INSTALL_PREFIX=$(PREFIX)
 endif
 endif
 ifndef INSTALL_PREFIX
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 INSTALL_PREFIX=/usr/local
 else
 ifdef INSTALL_FPCPACKAGE
@@ -278,7 +311,7 @@ DIST_DESTDIR:=$(BASEDIR)
 endif
 export DIST_DESTDIR
 ifndef INSTALL_BASEDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef INSTALL_FPCPACKAGE
 INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
 else
@@ -289,7 +322,7 @@ INSTALL_BASEDIR:=$(INSTALL_PREFIX)
 endif
 endif
 ifndef INSTALL_BINDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef CROSSCOMPILE
 INSTALL_BINDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin
 else
@@ -319,14 +352,14 @@ endif
 endif
 endif
 ifndef INSTALL_LIBDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
 else
 INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
 endif
 endif
 ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef BSDhier
 SRCPREFIXDIR=share/src
 else
@@ -358,7 +391,7 @@ endif
 endif
 endif
 ifndef INSTALL_DOCDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef BSDhier
 DOCPREFIXDIR=share/doc
 else
@@ -382,7 +415,7 @@ endif
 endif
 endif
 ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
+ifdef UNIXINSTALLDIR
 ifdef INSTALL_FPCPACKAGE
 ifdef BSDhier
 INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
@@ -1198,9 +1231,6 @@ override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
 endif
 ifdef CLEANPPUFILES
 override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES)) 
-endif
 override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
 override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
 endif
@@ -1222,9 +1252,11 @@ ifdef CLEAN_FILES
 endif
 ifdef LIB_NAME
 	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+ifdef DEBUGSYMEXT
+	-$(DEL) *$(DEBUGSYMEXT)
 endif
 	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
 fpc_distclean: clean
 ifdef COMPILER_UNITTARGETDIR
 TARGETDIRCLEAN=fpc_clean
@@ -1240,9 +1272,6 @@ endif
 ifdef AOUTEXT
 	-$(DEL) *$(AOUTEXT)
 endif
-ifdef DEBUGSYMEXT
-	-$(DEL) *$(DEBUGSYMEXT)
-endif
 .PHONY: fpc_baseinfo
 override INFORULES+=fpc_baseinfo
 fpc_baseinfo:
@@ -1375,8 +1404,8 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 prt0$(OEXT) : prt0$(LOADEREXT)
 	-$(AS) prt0$(LOADEREXT) -o prt0$(OEXT)
-system$(PPUEXT) : sysamiga.pas $(SYSLINUXDEPS) $(SYSDEPS)
-	$(COMPILER) -ui386 -dm68k -Us -Sg sysamiga.pas $(REDIR)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pas $(SYSLINUXDEPS) $(SYSDEPS)
+	$(COMPILER) -ui386 -dm68k -Us -Sg $(SYSTEMUNIT).pas $(REDIR)
 strings$(PPUEXT) : ../template/strings.pp system$(PPUEXT)
 	$(COMPILER) ../template/strings.pp $(REDIR)
 exec$(PPUEXT) : exec.pp exec.inc system$(PPUEXT)

+ 9 - 2
rtl/amiga/Makefile.fpc

@@ -51,6 +51,13 @@ endif
 endif
 endif
 
+ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
+SYSTEMUNIT=system
+else
+SYSTEMUNIT=syslinux
+endif
+
+
 # Paths
 OBJPASDIR=$(RTL)/objpas
 GRAPHDIR=$(INC)/graph
@@ -86,8 +93,8 @@ prt0$(OEXT) : prt0$(LOADEREXT)
 # Base Units (System, strings, os-dependent-base-unit)
 #
 
-system$(PPUEXT) : sysamiga.pas $(SYSLINUXDEPS) $(SYSDEPS)
-	$(COMPILER) -ui386 -dm68k -Us -Sg sysamiga.pas $(REDIR)
+$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pas $(SYSLINUXDEPS) $(SYSDEPS)
+	$(COMPILER) -ui386 -dm68k -Us -Sg $(SYSTEMUNIT).pas $(REDIR)
 
 strings$(PPUEXT) : ../template/strings.pp system$(PPUEXT)
 	$(COMPILER) ../template/strings.pp $(REDIR)

+ 79 - 3
rtl/amiga/system.pas

@@ -89,7 +89,80 @@ const
     (0,0,0,0,0,0,0,0);
 
 
-    {$I exec.inc}
+  TYPE
+   { from exec.inc}
+    BPTR     = Longint;
+    ULONG    = Longint;
+
+
+  pNode = ^tNode;
+  tNode =  packed Record
+      ln_Succ,                { * Pointer to next (successor) * }
+      ln_Pred  : pNode;       { * Pointer to previous (predecessor) * }
+      ln_Type  : Byte;
+      ln_Pri   : Shortint;        { * Priority, for sorting * }
+      ln_Name  : PChar;      { * ID string, null terminated * }
+      End;  { * Note: Integer aligned * }
+
+  pMinNode = ^tMinNode;
+  tMinNode =  packed Record
+    mln_Succ,
+    mln_Pred  : pMinNode;
+  End;
+
+ pList = ^tList;
+    tList =  packed record
+    lh_Head     : pNode;
+    lh_Tail     : pNode;
+    lh_TailPred : pNode;
+    lh_Type     : Byte;
+    l_pad       : Byte;
+    end;
+
+{ minimum list -- no type checking possible }
+
+    pMinList = ^tMinList;
+    tMinList =  packed record
+    mlh_Head        : pMinNode;
+    mlh_Tail        : pMinNode;
+    mlh_TailPred    : pMinNode;
+    end;
+
+   pMsgPort = ^tMsgPort;
+    tMsgPort = packed record
+    mp_Node     : tNode;
+    mp_Flags    : Byte;
+    mp_SigBit   : Byte;     { signal bit number    }
+    mp_SigTask  : Pointer;   { task to be signalled (TaskPtr) }
+    mp_MsgList  : tList;     { message linked list  }
+    end;
+
+    pTask = ^tTask;
+    tTask =  packed record
+        tc_Node         : tNode;
+        tc_Flags        : Byte;
+        tc_State        : Byte;
+        tc_IDNestCnt    : Shortint;         { intr disabled nesting         }
+        tc_TDNestCnt    : Shortint;         { task disabled nesting         }
+        tc_SigAlloc     : ULONG;        { sigs allocated                }
+        tc_SigWait      : ULONG;        { sigs we are waiting for       }
+        tc_SigRecvd     : ULONG;        { sigs we have received         }
+        tc_SigExcept    : ULONG;        { sigs we will take excepts for }
+        tc_TrapAlloc    : Word;        { traps allocated               }
+        tc_TrapAble     : Word;        { traps enabled                 }
+        tc_ExceptData   : Pointer;      { points to except data         }
+        tc_ExceptCode   : Pointer;      { points to except code         }
+        tc_TrapData     : Pointer;      { points to trap data           }
+        tc_TrapCode     : Pointer;      { points to trap code           }
+        tc_SPReg        : Pointer;      { stack pointer                 }
+        tc_SPLower      : Pointer;      { stack lower bound             }
+        tc_SPUpper      : Pointer;      { stack upper bound + 2         }
+        tc_Switch       : Pointer;      { task losing CPU               }
+        tc_Launch       : Pointer;      { task getting CPU              }
+        tc_MemEntry     : tList;        { allocated memory              }
+        tc_UserData     : Pointer;      { per task data                 }
+    end;
+    { end exec.inc}
 
   TYPE
     TDateStamp = packed record
@@ -1833,7 +1906,10 @@ end.
 
 {
   $Log$
-  Revision 1.10  2004-01-20 23:05:31  hajny
+  Revision 1.11  2004-05-05 21:26:34  florian
+    * some m68k and amiga related stuff fixed
+
+  Revision 1.10  2004/01/20 23:05:31  hajny
     * ExecuteProcess fixes, ProcessID and ThreadID added
 
   Revision 1.9  2003/10/25 23:42:35  hajny
@@ -1855,4 +1931,4 @@ end.
   Revision 1.4  2002/09/07 16:01:16  peter
     * old logs removed and tabs fixed
 
-}
+}

+ 9 - 5
rtl/inc/systemh.inc

@@ -62,7 +62,7 @@
 Type
 {$Ifdef HAS_INTERNAL_INTTYPES}
   { The compiler has all integer types defined internally. Here
-    we define only aliases }  
+    we define only aliases }
   DWord    = LongWord;
   Cardinal = LongWord;
   Integer  = SmallInt;
@@ -111,8 +111,6 @@ Type
 {$ifdef CPUM68K}
   ValReal = Real;
 
-  { Comp type does not exist on fpu }
-  Comp    = int64;
   {$define SUPPORT_SINGLE}
   {$IFDEF Unix}
     { Linux FPU emulator will be used }
@@ -123,6 +121,9 @@ Type
     { then support double type.       }
     {$define SUPPORT_DOUBLE}
   {$ENDIF}
+  { Comp type does not exist on fpu }
+  Comp    = int64;
+  PComp = ^Comp;
 {$endif CPUM68K}
 
 {$ifdef CPUPOWERPC}
@@ -239,7 +240,7 @@ Type
   PInt64              = ^Int64;
   PPtrInt             = ^PtrInt;
   PSizeInt            = ^SizeInt;
-  
+
   PPointer            = ^Pointer;
   PPPointer           = ^PPointer;
 
@@ -729,7 +730,10 @@ const
 
 {
   $Log$
-  Revision 1.91  2004-05-01 23:55:18  peter
+  Revision 1.92  2004-05-05 21:26:34  florian
+    * some m68k and amiga related stuff fixed
+
+  Revision 1.91  2004/05/01 23:55:18  peter
     * replace strlenint with sizeint
 
   Revision 1.90  2004/05/01 20:52:50  peter

+ 11 - 6
rtl/m68k/setjumph.inc

@@ -18,20 +18,25 @@
  **********************************************************************}
 
 Type
-  // CARL, CHANGE THESE TO THE NEEDED VALUES !  (MVC)
   jmp_buf = packed record
-    ebx,esi,edi : Longint;
-    bp,sp,pc : Pointer;
-    end;
+    fp : longint;                    { frame pointer     }
+    sp : longint;                    { stack pointer     }
+    pc : longint;                    { program counter   }
+    aregs : array[0..3] of dword;    { address registers (a2,a3,a4,a5) }
+  end;
   PJmp_buf = ^jmp_buf;
 
 Function Setjmp (Var S : Jmp_buf) : longint;
 Procedure longjmp (Var S : Jmp_buf; value : longint);
+
+{
   $Log$
-  Revision 1.4  2002-10-20 11:53:14  carl
+  Revision 1.5  2004-05-05 21:26:34  florian
+    * some m68k and amiga related stuff fixed
+
+  Revision 1.4  2002/10/20 11:53:14  carl
     * make the jmp_buf record packed, just in case
 
   Revision 1.3  2002/09/07 16:01:20  peter
     * old logs removed and tabs fixed
-
 }