From 91733f9237e7300a15ebc925022082f92668e448 Mon Sep 17 00:00:00 2001 From: florian Date: Wed, 5 May 2004 21:26:34 +0000 Subject: [PATCH] * some m68k and amiga related stuff fixed --- rtl/amiga/Makefile | 91 ++++++++++++++++++++++++++++-------------- rtl/amiga/Makefile.fpc | 11 ++++- rtl/amiga/system.pas | 82 +++++++++++++++++++++++++++++++++++-- rtl/inc/systemh.inc | 14 ++++--- rtl/m68k/setjumph.inc | 17 +++++--- 5 files changed, 168 insertions(+), 47 deletions(-) diff --git a/rtl/amiga/Makefile b/rtl/amiga/Makefile index fd6a00b8a2..4549f305f2 100644 --- a/rtl/amiga/Makefile +++ b/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) diff --git a/rtl/amiga/Makefile.fpc b/rtl/amiga/Makefile.fpc index cfbedb110e..db7951fed1 100644 --- a/rtl/amiga/Makefile.fpc +++ b/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) diff --git a/rtl/amiga/system.pas b/rtl/amiga/system.pas index 7e70189d52..7fc6ee39dd 100644 --- a/rtl/amiga/system.pas +++ b/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 -} \ No newline at end of file +} diff --git a/rtl/inc/systemh.inc b/rtl/inc/systemh.inc index e124055813..acfc0737c2 100644 --- a/rtl/inc/systemh.inc +++ b/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 diff --git a/rtl/m68k/setjumph.inc b/rtl/m68k/setjumph.inc index dc265b942c..35c61c4f4f 100644 --- a/rtl/m68k/setjumph.inc +++ b/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 - }