summaryrefslogtreecommitdiff
path: root/rtl/linux/arm/sighnd.inc
diff options
context:
space:
mode:
Diffstat (limited to 'rtl/linux/arm/sighnd.inc')
-rw-r--r--rtl/linux/arm/sighnd.inc58
1 files changed, 58 insertions, 0 deletions
diff --git a/rtl/linux/arm/sighnd.inc b/rtl/linux/arm/sighnd.inc
new file mode 100644
index 0000000000..797f854ffb
--- /dev/null
+++ b/rtl/linux/arm/sighnd.inc
@@ -0,0 +1,58 @@
+{
+ $Id: sighnd.inc,v 1.5 2005/04/24 21:19:22 peter Exp $
+ This file is part of the Free Pascal run time library.
+ Copyright (c) 1999-2000 by Michael Van Canneyt,
+ member of the Free Pascal development team.
+
+ Signal handler is arch dependant due to processor to language
+ exception conversion.
+
+ 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.
+
+ **********************************************************************}
+
+
+procedure SignalToRunerror(Sig: longint; _a2,_a3,_a4 : dword; SigContext: PSigInfo; uContext : PuContext); cdecl;
+
+var
+ res,fpustate : word;
+begin
+ res:=0;
+ case sig of
+ SIGFPE :
+ begin
+ { don't know how to find the different causes, maybe via xer? }
+ res := 207;
+ end;
+ SIGILL,
+ SIGBUS,
+ SIGSEGV :
+ res:=216;
+ end;
+ reenable_signal(sig);
+ { give runtime error at the position where the signal was raised }
+ if res<>0 then
+ HandleErrorAddrFrame(res,pointer(uContext^.uc_mcontext.arm_ip),pointer(uContext^.uc_mcontext.arm_fp));
+end;
+
+{
+ $Log: sighnd.inc,v $
+ Revision 1.5 2005/04/24 21:19:22 peter
+ * unblock signal in signalhandler, remove the sigprocmask call
+ from setjmp
+
+ Revision 1.4 2005/02/14 17:13:30 peter
+ * truncate log
+
+ Revision 1.3 2005/01/30 18:01:15 peter
+ * signal cleanup for linux
+ * sigactionhandler instead of tsigaction for bsds
+ * sigcontext moved to cpu dir
+
+}
+