mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-03 09:29:42 +01:00
+ some files from old fixes branch added
git-svn-id: trunk@2385 -
This commit is contained in:
parent
37024dc4d0
commit
818ac29ba2
6
.gitattributes
vendored
6
.gitattributes
vendored
@ -3894,8 +3894,14 @@ rtl/linux/ipccall.inc svneol=native#text/plain
|
||||
rtl/linux/ipcsys.inc svneol=native#text/plain
|
||||
rtl/linux/linuxvcs.pp -text
|
||||
rtl/linux/m68k/bsyscall.inc svneol=native#text/plain
|
||||
rtl/linux/m68k/cprt0.as -text
|
||||
rtl/linux/m68k/cprt21.as -text
|
||||
rtl/linux/m68k/dllprt0.as -text
|
||||
rtl/linux/m68k/gprt0.as -text
|
||||
rtl/linux/m68k/gprt21.as -text
|
||||
rtl/linux/m68k/prt0.as -text
|
||||
rtl/linux/m68k/prt1.as -text
|
||||
rtl/linux/m68k/signal.inc svneol=native#text/plain
|
||||
rtl/linux/m68k/stat.inc svneol=native#text/plain
|
||||
rtl/linux/osdefs.inc svneol=native#text/plain
|
||||
rtl/linux/osmacro.inc svneol=native#text/plain
|
||||
|
||||
75
rtl/linux/m68k/cprt0.as
Normal file
75
rtl/linux/m68k/cprt0.as
Normal file
@ -0,0 +1,75 @@
|
||||
|
|
||||
| $Id: cprt0.as,v 1.1.2.2 2001/08/01 13:26:17 pierre Exp $
|
||||
| This file is part of the Free Pascal run time library.
|
||||
| Copyright (c) 2001 by Free Pascal Core Team
|
||||
|
|
||||
| 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.
|
||||
|
|
||||
|**********************************************************************}
|
||||
|
|
||||
| Linux m68k ELF startup code for linking with C lib for Free Pascal
|
||||
|
|
||||
.file "cprt0.as"
|
||||
.text
|
||||
.globl _start
|
||||
.type _start,@function
|
||||
_start:
|
||||
.globl __entry
|
||||
.type __entry,@function
|
||||
__entry:
|
||||
move.l 8(%sp),%d0
|
||||
move.l %d0,U_SYSLINUX_ENVP
|
||||
move.l %d0,__environ
|
||||
move.l 4(%sp),%d0
|
||||
move.l %d0,U_SYSLINUX_ARGV
|
||||
move.l (%sp),%d0
|
||||
move.l %d0,U_SYSLINUX_ARGC
|
||||
| The arguments should be in correct order for
|
||||
| calling __libc_init
|
||||
| This code is untested for now PM
|
||||
jsr __libc_init
|
||||
| insert _fini in atexit chain
|
||||
move.l _fini,-(%sp)
|
||||
jsr atexit
|
||||
addq.l #4,%sp
|
||||
| call _init function
|
||||
jsr _init
|
||||
|
||||
jsr PASCALMAIN
|
||||
|
||||
| Used by System_exit procedure
|
||||
.globl _haltproc
|
||||
_haltproc:
|
||||
| Call C exit function
|
||||
move.w U_SYSLINUX_EXITCODE,%d1
|
||||
move.l %d1,-(%sp)
|
||||
jsr exit
|
||||
moveq.l #1,%d0
|
||||
move.l (%sp)+,%d1
|
||||
trap #0
|
||||
bra _haltproc
|
||||
|
||||
|
||||
| Is this still needed ??
|
||||
| .data
|
||||
| .align 4
|
||||
| .globl ___fpc_brk_addr
|
||||
|___fpc_brk_addr:
|
||||
| .long 0
|
||||
|
||||
|
||||
|
|
||||
| $Log: cprt0.as,v $
|
||||
| Revision 1.1.2.2 2001/08/01 13:26:17 pierre
|
||||
| * syntax adapted to GNU as
|
||||
|
|
||||
| Revision 1.1.2.1 2001/07/13 15:29:32 pierre
|
||||
| first version of cprt0.as
|
||||
|
|
||||
|
|
||||
|
||||
144
rtl/linux/m68k/cprt21.as
Normal file
144
rtl/linux/m68k/cprt21.as
Normal file
@ -0,0 +1,144 @@
|
||||
|
|
||||
| $Id: cprt21.as,v 1.1.2.5 2002/02/28 22:44:44 pierre Exp $
|
||||
| This file is part of the Free Pascal run time library.
|
||||
| Copyright (c) 1999-2000 by Michael Van Canneyt and Peter Vreman
|
||||
| members of the Free Pascal development team.
|
||||
|
|
||||
| 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.
|
||||
|
|
||||
|**********************************************************************}
|
||||
|
|
||||
| Linux ELF startup code for Free Pascal
|
||||
|
|
||||
|
||||
.file "prt1.as"
|
||||
.text
|
||||
.globl _start
|
||||
.type _start,@function
|
||||
_start:
|
||||
/* First locate the start of the environment variables */
|
||||
move.l (%sp)+,%d3
|
||||
move.l %d0,%d4
|
||||
|
||||
move.l %sp,%d1 /* Points to the arguments */
|
||||
move.l %d3,%d0
|
||||
addq.l #1,%d0
|
||||
lsl.l #2,%d0
|
||||
add.l %sp,%d0
|
||||
|
||||
move.l %sp,%d7
|
||||
and.l #0xfffffff8,%d7 /* Align stack */
|
||||
move.l %d7,%sp
|
||||
|
||||
move.l %d0,U_SYSLINUX_ENVP /* Move the environment pointer */
|
||||
move.l %d3,U_SYSLINUX_ARGC /* Move the argument counter */
|
||||
move.l %d1,U_SYSLINUX_ARGV /* Move the argument pointer */
|
||||
|
||||
move.l #0,%fp /* Zero frame pointer to end call stack */
|
||||
|
||||
|
|
||||
| Start of args for __libc_start_main
|
||||
|
|
||||
|
|
||||
move.l %d4,-(%sp)
|
||||
move.l %sp,-(%sp)
|
||||
move.l %a1,-(%sp)
|
||||
pea.l _fini_dummy
|
||||
pea.l _init_dummy
|
||||
move.l %d1,-(%sp)
|
||||
move.l %d3,-(%sp)
|
||||
pea.l main
|
||||
jsr __libc_start_main
|
||||
trap #0
|
||||
|
||||
/* fake main routine which will be run from libc */
|
||||
main:
|
||||
/* save return address */
|
||||
move.l (%sp)+,%d0
|
||||
move.l %d0,___fpc_ret
|
||||
move.l %d1,___fpc_ret_d1
|
||||
move.l %fp,___fpc_ret_fp
|
||||
move.l %d0,-(%sp)
|
||||
|
||||
/* start the program */
|
||||
move.l #0,%fp
|
||||
jsr PASCALMAIN
|
||||
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
_haltproc:
|
||||
eor.l %d0,%d0 /* load and save exitcode */
|
||||
move.w U_SYSLINUX_EXITCODE,%d0
|
||||
|
||||
move.l ___fpc_ret,%d3 /* return to libc */
|
||||
move.l ___fpc_ret_fp,%fp
|
||||
move.l ___fpc_ret_d1,%d1
|
||||
move.l %d3,-(%sp)
|
||||
_init_dummy:
|
||||
_fini_dummy:
|
||||
rts
|
||||
|
||||
.data
|
||||
.align 4
|
||||
|
||||
.globl ___fpc_brk_addr /* heap management */
|
||||
.type ___fpc_brk_addr,@object
|
||||
.size ___fpc_brk_addr,4
|
||||
___fpc_brk_addr:
|
||||
.long 0
|
||||
|
||||
___fpc_ret: /* return address to libc */
|
||||
.long 0
|
||||
___fpc_ret_d1:
|
||||
.long 0
|
||||
___fpc_ret_fp:
|
||||
.long 0
|
||||
|
||||
|
||||
|
|
||||
| $Log: cprt21.as,v $
|
||||
| Revision 1.1.2.5 2002/02/28 22:44:44 pierre
|
||||
| + add some comments
|
||||
|
|
||||
| Revision 1.1.2.4 2001/08/02 21:23:59 pierre
|
||||
| * fix the args to __libc_start_main
|
||||
|
|
||||
| Revision 1.1.2.3 2001/07/30 20:05:07 pierre
|
||||
| * fix a assembler syntax eror in last commit
|
||||
|
|
||||
| Revision 1.1.2.2 2001/07/30 16:18:53 pierre
|
||||
| * converted from i386 code
|
||||
|
|
||||
| Revision 1.1.2.2 2001/06/04 18:04:32 peter
|
||||
| * use own dummies for _init and _fini
|
||||
|
|
||||
| Revision 1.1.2.1 2001/02/14 22:18:45 pierre
|
||||
| * fix Sebastian's problem with HeapTrace
|
||||
|
|
||||
| Revision 1.1 2000/07/13 06:30:55 michael
|
||||
| + Initial import
|
||||
|
|
||||
| Revision 1.3 2000/01/07 16:41:42 daniel
|
||||
| * copyright 2000
|
||||
|
|
||||
| Revision 1.2 2000/01/07 16:32:28 daniel
|
||||
| * copyright 2000 added
|
||||
|
|
||||
| Revision 1.1 1999/05/03 21:29:36 peter
|
||||
| + glibc 2.1 support
|
||||
|
|
||||
| Revision 1.3 1998/11/04 10:16:25 peter
|
||||
| + xorl fp,fp to indicate end of backtrace
|
||||
|
|
||||
| Revision 1.2 1998/10/14 21:28:46 peter
|
||||
| * initialize fpu so sigfpe is finally generated for fpu errors
|
||||
|
|
||||
| Revision 1.1 1998/08/12 19:16:09 peter
|
||||
| + loader including libc init and exit
|
||||
|
|
||||
|
|
||||
66
rtl/linux/m68k/dllprt0.as
Normal file
66
rtl/linux/m68k/dllprt0.as
Normal file
@ -0,0 +1,66 @@
|
||||
|
|
||||
| $Id: dllprt0.as,v 1.1.2.4 2001/08/01 13:26:17 pierre Exp $
|
||||
| This file is part of the Free Pascal run time library.
|
||||
| Copyright (c) 2001 by Pierre Muller
|
||||
|
|
||||
| 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.
|
||||
|
|
||||
|**********************************************************************}
|
||||
|
|
||||
| Linux m68k ELF shared library startup code for Free Pascal
|
||||
|
|
||||
.file "dllprt0.as"
|
||||
.text
|
||||
.globl _startlib
|
||||
.type _startlib,@function
|
||||
_startlib:
|
||||
.globl FPC_LIB_START
|
||||
.type FPC_LIB_START,@function
|
||||
FPC_LIB_START:
|
||||
|
|
||||
| The args and envs are not tested yet
|
||||
|
|
||||
move.l (%sp)+, %d0
|
||||
lea 4(%sp,%d0*4),%a0
|
||||
move.l %a0, U_SYSLINUX_ENVP
|
||||
move.l %sp,U_SYSLINUX_ARGV
|
||||
move.l %d0,U_SYSLINUX_ARGC
|
||||
jsr PASCALMAIN
|
||||
rts
|
||||
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
haltproc:
|
||||
moveq.l #1,%d0
|
||||
move.w U_SYSLINUX_EXITCODE,%d1
|
||||
trap #0
|
||||
bra _haltproc
|
||||
|
||||
|
||||
.data
|
||||
.align 4
|
||||
.globl ___fpc_brk_addr
|
||||
___fpc_brk_addr:
|
||||
.long 0
|
||||
|
||||
|
|
||||
| $Log: dllprt0.as,v $
|
||||
| Revision 1.1.2.4 2001/08/01 13:26:17 pierre
|
||||
| * syntax adapted to GNU as
|
||||
|
|
||||
| Revision 1.1.2.3 2001/07/13 15:13:47 pierre
|
||||
| + add and fix some comments
|
||||
|
|
||||
| Revision 1.1.2.2 2001/07/13 15:04:35 pierre
|
||||
| * correct assembler error
|
||||
|
|
||||
| Revision 1.1.2.1 2001/07/13 15:03:02 pierre
|
||||
| + New file converted from i386 version
|
||||
|
|
||||
|
|
||||
|
||||
92
rtl/linux/m68k/gprt0.as
Normal file
92
rtl/linux/m68k/gprt0.as
Normal file
@ -0,0 +1,92 @@
|
||||
|
|
||||
| $Id: gprt0.as,v 1.1.2.3 2001/08/01 13:26:17 pierre Exp $
|
||||
| This file is part of the Free Pascal run time library.
|
||||
| Copyright (c) 2001 by Free Pascal Core Team
|
||||
|
|
||||
| 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.
|
||||
|
|
||||
|**********************************************************************}
|
||||
|
|
||||
| Linux m68k ELF startup code with profiling support for Free Pascal
|
||||
| Note: Needs linking with -lgmon and -lc
|
||||
|
|
||||
.file "gprt0.as"
|
||||
.text
|
||||
.globl _start
|
||||
.type _start,@function
|
||||
_start:
|
||||
.globl __entry
|
||||
.type __entry,@function
|
||||
__entry:
|
||||
move.l 8(%sp),%d0
|
||||
move.l %d0,U_SYSLINUX_ENVP
|
||||
move.l %d0,__environ
|
||||
move.l 4(%sp),%d0
|
||||
move.l %d0,U_SYSLINUX_ARGV
|
||||
move.l (%sp),%d0
|
||||
move.l %d0,U_SYSLINUX_ARGC
|
||||
| Initialize gmon
|
||||
| Should this be done before or after __libc_init call ??
|
||||
|
|
||||
move.l _etext,-(%sp) /* Initialize gmon */
|
||||
move.l _start,-(%sp)
|
||||
jsr monstartup
|
||||
addq.l #8,%sp
|
||||
move.l _mcleanup,-(%sp)
|
||||
jsr atexit
|
||||
addq.l #4,%sp
|
||||
|
||||
|
||||
| The arguments should be in correct order for
|
||||
| calling __libc_init
|
||||
| This code is untested for now PM
|
||||
jsr __libc_init
|
||||
| insert _fini in atexit chain
|
||||
move.l _fini,-(%sp)
|
||||
jsr atexit
|
||||
addq.l #4,%sp
|
||||
| call _init function
|
||||
jsr _init
|
||||
|
||||
jsr PASCALMAIN
|
||||
|
||||
| Used by System_exit procedure
|
||||
.globl _haltproc
|
||||
_haltproc:
|
||||
| Call C exit function
|
||||
move.w U_SYSLINUX_EXITCODE,%d1
|
||||
move.l %d1,-(%sp)
|
||||
jsr exit
|
||||
moveq.l #1,%d0
|
||||
move.l (%sp)+,%d1
|
||||
trap #0
|
||||
bra _haltproc
|
||||
|
||||
|
||||
| Is this still needed ??
|
||||
| .data
|
||||
| .align 4
|
||||
| .globl ___fpc_brk_addr
|
||||
|___fpc_brk_addr:
|
||||
| .long 0
|
||||
|
||||
|
||||
|
|
||||
| $Log: gprt0.as,v $
|
||||
| Revision 1.1.2.3 2001/08/01 13:26:17 pierre
|
||||
| * syntax adapted to GNU as
|
||||
|
|
||||
| Revision 1.1.2.2 2001/07/13 15:43:22 pierre
|
||||
| assembler error corrected
|
||||
|
|
||||
| Revision 1.1.2.1 2001/07/13 15:38:54 pierre
|
||||
| first version of gprt0.as file
|
||||
|
|
||||
|
|
||||
|
|
||||
|
||||
95
rtl/linux/m68k/gprt21.as
Normal file
95
rtl/linux/m68k/gprt21.as
Normal file
@ -0,0 +1,95 @@
|
||||
|
|
||||
| $Id: gprt21.as,v 1.1.2.2 2001/08/01 13:26:17 pierre Exp $
|
||||
| This file is part of the Free Pascal run time library.
|
||||
| Copyright (c) 2001 by Free Pascal Core Team
|
||||
|
|
||||
| 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.
|
||||
|
|
||||
|**********************************************************************}
|
||||
|
|
||||
| Linux m68k ELF startup code with profiling support for Free Pascal
|
||||
| Note: Needs linking with -lgmon and -lc
|
||||
|
|
||||
.file "gprt0.as"
|
||||
.text
|
||||
.globl _start
|
||||
.type _start,@function
|
||||
_start:
|
||||
.globl __entry
|
||||
.type __entry,@function
|
||||
__entry:
|
||||
move.l 8(%sp),%d0
|
||||
move.l %d0,U_SYSLINUX_ENVP
|
||||
move.l %d0,__environ
|
||||
move.l 4(%sp),%d0
|
||||
move.l %d0,U_SYSLINUX_ARGV
|
||||
move.l (%sp),%d0
|
||||
move.l %d0,U_SYSLINUX_ARGC
|
||||
| Initialize gmon
|
||||
| Should this be done before or after __libc_init call ??
|
||||
|
|
||||
move.l _etext,-(%sp) /* Initialize gmon */
|
||||
move.l _start,-(%sp)
|
||||
jsr monstartup
|
||||
addq.l #8,%sp
|
||||
move.l _mcleanup,-(%sp)
|
||||
jsr atexit
|
||||
addq.l #4,%sp
|
||||
|
||||
|
||||
| The arguments should be in correct order for
|
||||
| calling __libc_init
|
||||
| This code is untested for now PM
|
||||
jsr __libc_init
|
||||
| insert _fini in atexit chain
|
||||
move.l _fini,-(%sp)
|
||||
jsr atexit
|
||||
addq.l #4,%sp
|
||||
| call _init function
|
||||
jsr _init
|
||||
|
||||
jsr PASCALMAIN
|
||||
|
||||
| Used by System_exit procedure
|
||||
.globl _haltproc
|
||||
_haltproc:
|
||||
| Call C exit function
|
||||
move.w U_SYSLINUX_EXITCODE,%d1
|
||||
move.l %d1,-(%sp)
|
||||
jsr exit
|
||||
moveq.l #1,%d0
|
||||
move.l (%sp)+,%d1
|
||||
trap #0
|
||||
bra _haltproc
|
||||
|
||||
|
||||
| Is this still needed ??
|
||||
| .data
|
||||
| .align 4
|
||||
| .globl ___fpc_brk_addr
|
||||
|___fpc_brk_addr:
|
||||
| .long 0
|
||||
|
||||
|
||||
|
|
||||
| $Log: gprt21.as,v $
|
||||
| Revision 1.1.2.2 2001/08/01 13:26:17 pierre
|
||||
| * syntax adapted to GNU as
|
||||
|
|
||||
| Revision 1.1.2.1 2001/07/13 15:45:40 pierre
|
||||
| simple copies of cprt0 and gprt0 added
|
||||
|
|
||||
| Revision 1.1.2.2 2001/07/13 15:43:22 pierre
|
||||
| assembler error corrected
|
||||
|
|
||||
| Revision 1.1.2.1 2001/07/13 15:38:54 pierre
|
||||
| first version of gprt0.as file
|
||||
|
|
||||
|
|
||||
|
|
||||
|
||||
220
rtl/linux/m68k/signal.inc
Normal file
220
rtl/linux/m68k/signal.inc
Normal file
@ -0,0 +1,220 @@
|
||||
{
|
||||
$Id: signal.inc,v 1.1.2.2 2002/10/10 19:31:28 pierre Exp $
|
||||
This file is part of the Free Pascal run time library.
|
||||
Copyright (c) 1999-2000 by Pierre Muller,
|
||||
member of the Free Pascal development team.
|
||||
|
||||
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.
|
||||
|
||||
**********************************************************************}
|
||||
|
||||
{$packrecords C}
|
||||
{********************
|
||||
Signal
|
||||
********************}
|
||||
|
||||
Const
|
||||
{ For sending a signal }
|
||||
SA_NOCLDSTOP = 1;
|
||||
SA_SHIRQ = $04000000;
|
||||
SA_STACK = $08000000;
|
||||
SA_RESTART = $10000000;
|
||||
SA_INTERRUPT = $20000000;
|
||||
SA_NOMASK = $40000000;
|
||||
SA_ONESHOT = $80000000;
|
||||
|
||||
SIG_BLOCK = 0;
|
||||
SIG_UNBLOCK = 1;
|
||||
SIG_SETMASK = 2;
|
||||
|
||||
SIG_DFL = 0 ;
|
||||
SIG_IGN = 1 ;
|
||||
SIG_ERR = -1 ;
|
||||
|
||||
SIGHUP = 1;
|
||||
SIGINT = 2;
|
||||
SIGQUIT = 3;
|
||||
SIGILL = 4;
|
||||
SIGTRAP = 5;
|
||||
SIGABRT = 6;
|
||||
SIGIOT = 6;
|
||||
SIGBUS = 7;
|
||||
SIGFPE = 8;
|
||||
SIGKILL = 9;
|
||||
SIGUSR1 = 10;
|
||||
SIGSEGV = 11;
|
||||
SIGUSR2 = 12;
|
||||
SIGPIPE = 13;
|
||||
SIGALRM = 14;
|
||||
SIGTerm = 15;
|
||||
SIGSTKFLT = 16;
|
||||
SIGCHLD = 17;
|
||||
SIGCONT = 18;
|
||||
SIGSTOP = 19;
|
||||
SIGTSTP = 20;
|
||||
SIGTTIN = 21;
|
||||
SIGTTOU = 22;
|
||||
SIGURG = 23;
|
||||
SIGXCPU = 24;
|
||||
SIGXFSZ = 25;
|
||||
SIGVTALRM = 26;
|
||||
SIGPROF = 27;
|
||||
SIGWINCH = 28;
|
||||
SIGIO = 29;
|
||||
SIGPOLL = SIGIO;
|
||||
SIGPWR = 30;
|
||||
SIGUNUSED = 31;
|
||||
|
||||
|
||||
|
||||
{ not sure this value is correct for m68k PM }
|
||||
const
|
||||
SI_PAD_SIZE = ((128 div sizeof(longint)) - 3);
|
||||
|
||||
|
||||
type
|
||||
{ REMARK: floating point regs are defined as arrays of
|
||||
3 longints; I don't know if C does align this to
|
||||
16 byte boundaries for each element of the array PM }
|
||||
{ If C does we might need to define this as
|
||||
array from 0 to 3 }
|
||||
|
||||
tfpreg = array[0..2] of longint;
|
||||
|
||||
pfpstate = ^tfpstate;
|
||||
tfpstate = record
|
||||
pcr,psr,fpiaddr : longint;
|
||||
fpreg : array [0..7] of tfpreg;
|
||||
end;
|
||||
|
||||
Size_T = cardinal;
|
||||
|
||||
SigSet = Longint;
|
||||
PSigSet = ^SigSet;
|
||||
|
||||
{ as defined in asm_m68k/signal.h }
|
||||
Stack_T = Record
|
||||
ss_sp : pointer;
|
||||
ss_flags : longint;
|
||||
ss_size : size_t;
|
||||
end;
|
||||
|
||||
{ SigContextRec corresponds to the ucontext record
|
||||
in linux asm-m68k/ucontext.h include file }
|
||||
PSigContextRec = ^SigContextRec;
|
||||
SigContextRec = record
|
||||
uc_flags : cardinal;
|
||||
uc_link : pSigContextRec;
|
||||
uc_stack : stack_t; { what's that ?? }
|
||||
{ fields from 'version' to 'pc'
|
||||
correspond to the mcontext struct in asm-m68k/ucontext.h file }
|
||||
version : longint; { SigContext version check }
|
||||
{ 18 general registers }
|
||||
d0,d1,d2,d3,d4,d5,d6,d7 : cardinal;
|
||||
a0,a1,a2,a3,a4,a5 : cardinal;
|
||||
fp,sp,ps,pc : cardinal;
|
||||
{ fields from 'pcr' to 'fpreg'
|
||||
are floating point part }
|
||||
pcr,psr,fpiaddr : longint;
|
||||
fpreg : array[0..7] of tfpreg; { how is this aligned ?? }
|
||||
filler : array[0..79] of cardinal;
|
||||
sigmask : SigSet;
|
||||
end;
|
||||
|
||||
|
||||
PSigInfoRec = ^SigInfoRec;
|
||||
SigInfoRec = record
|
||||
si_signo: longint;
|
||||
si_errno: longint;
|
||||
si_code: longint;
|
||||
|
||||
case longint of
|
||||
0:
|
||||
(pad: array[0 .. SI_PAD_SIZE-1] of longint);
|
||||
1: { kill }
|
||||
( kill: record
|
||||
pid: longint; { sender's pid }
|
||||
uid : longint; { sender's uid }
|
||||
end );
|
||||
2: { POSIX.1b timers }
|
||||
( timer : record
|
||||
timer1 : cardinal;
|
||||
timer2 : cardinal;
|
||||
end );
|
||||
3: { POSIX.1b signals }
|
||||
( rt : record
|
||||
pid : longint; { sender's pid }
|
||||
uid : longint; { sender's uid }
|
||||
sigval : longint;
|
||||
end );
|
||||
4: { SIGCHLD }
|
||||
( sigchld : record
|
||||
pid : longint; { which child }
|
||||
uid : longint; { sender's uid }
|
||||
status : longint; { exit code }
|
||||
utime : timeval;
|
||||
stime : timeval;
|
||||
end );
|
||||
5: { SIGILL, SIGFPE, SIGSEGV, SIGBUS }
|
||||
( sigfault : record
|
||||
addr : pointer;{ faulting insn/memory ref. }
|
||||
end );
|
||||
6:
|
||||
( sigpoll : record
|
||||
band : longint; { POLL_IN, POLL_OUT, POLL_MSG }
|
||||
fd : longint;
|
||||
end );
|
||||
end;
|
||||
|
||||
|
||||
SignalHandler = Procedure(Sig : Longint);cdecl;
|
||||
PSignalHandler = ^SignalHandler;
|
||||
SignalRestorer = Procedure;cdecl;
|
||||
PSignalRestorer = ^SignalRestorer;
|
||||
{ the third argument is only a guess for now,
|
||||
asm-m68k/signal.h gives only void * arg type PM }
|
||||
TSigAction = procedure(Sig: Longint; SigInfoPtr : PSigInfoRec; SigContextPtr : PSigContextRec);cdecl;
|
||||
|
||||
|
||||
SigActionRec = packed record
|
||||
Handler : record
|
||||
case byte of
|
||||
0: (Sh: SignalHandler);
|
||||
1: (Sa: TSigAction);
|
||||
end;
|
||||
Sa_Mask : SigSet;
|
||||
Sa_Flags : Longint;
|
||||
Sa_restorer : SignalRestorer; { Obsolete - Don't use }
|
||||
end;
|
||||
PSigActionRec = ^SigActionRec;
|
||||
(*
|
||||
Procedure SigAction(Signum:Integer;Act,OldAct:PSigActionRec );
|
||||
{
|
||||
Change action of process upon receipt of a signal.
|
||||
Signum specifies the signal (all except SigKill and SigStop).
|
||||
If Act is non-nil, it is used to specify the new action.
|
||||
If OldAct is non-nil the previous action is saved there.
|
||||
}
|
||||
Var
|
||||
sr : Syscallregs;
|
||||
begin
|
||||
sr.reg2:=Signum;
|
||||
sr.reg3:=Longint(act);
|
||||
sr.reg4:=Longint(oldact);
|
||||
SysCall(Syscall_nr_sigaction,sr);
|
||||
end; *)
|
||||
|
||||
{
|
||||
$Log: signal.inc,v $
|
||||
Revision 1.1.2.2 2002/10/10 19:31:28 pierre
|
||||
* update those files that are unused currently
|
||||
|
||||
Revision 1.1.2.1 2001/07/13 15:05:40 pierre
|
||||
+ first signal context tries
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user