OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [include/] [sh-signal.h] - Blame information for rev 757

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 757 jeremybenn
// sh-signal.h - Catch runtime signals and turn them into exceptions
2
// on a SuperH based Linux system.
3
 
4
/* Copyright (C) 2004, 2006  Free Software Foundation
5
 
6
   This file is part of libgcj.
7
 
8
This software is copyrighted work licensed under the terms of the
9
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
10
details.  */
11
 
12
 
13
#ifndef JAVA_SIGNAL_H
14
#define JAVA_SIGNAL_H 1
15
 
16
#include <signal.h>
17
#include <sys/syscall.h>
18
 
19
#define HANDLE_SEGV 1
20
#define HANDLE_FPE 1
21
 
22
/* The third parameter to the signal handler points to something with
23
 * this structure defined in asm/ucontext.h, but the name clashes with
24
 * struct ucontext from sys/ucontext.h so this private copy is used.  */
25
typedef struct _sig_ucontext {
26
  unsigned long uc_flags;
27
  struct _sig_ucontext *uc_link;
28
  stack_t uc_stack;
29
  struct sigcontext uc_mcontext;
30
  sigset_t uc_sigmask;
31
} sig_ucontext_t;
32
 
33
#define SIGNAL_HANDLER(_name)                                           \
34
  static void _name (int , siginfo_t *, sig_ucontext_t *_uc)
35
 
36
#define MAKE_THROW_FRAME(_exception)
37
 
38
/* For an explanation why we cannot simply use sigaction to
39
   install the handlers, see i386-signal.h.  */
40
 
41
/* We use kernel_old_sigaction here because we're calling the kernel
42
   directly rather than via glibc.  The sigaction structure that the
43
   syscall uses is a different shape from the one in userland and not
44
   visible to us in a header file so we define it here.  */
45
 
46
struct kernel_old_sigaction {
47
  void (*k_sa_handler) (int, siginfo_t *, sig_ucontext_t *);
48
  unsigned long k_sa_mask;
49
  unsigned long k_sa_flags;
50
  void (*k_sa_restorer) (void);
51
};
52
 
53
#define INIT_SEGV                                                       \
54
do                                                                      \
55
  {                                                                     \
56
    struct kernel_old_sigaction kact;                                   \
57
    kact.k_sa_handler = catch_segv;                                     \
58
    kact.k_sa_mask = 0;                                                  \
59
    kact.k_sa_flags = SA_SIGINFO | SA_NODEFER;                          \
60
    syscall (SYS_sigaction, SIGSEGV, &kact, NULL);                      \
61
  }                                                                     \
62
while (0)
63
 
64
#define INIT_FPE                                                        \
65
do                                                                      \
66
  {                                                                     \
67
    struct kernel_old_sigaction kact;                                   \
68
    kact.k_sa_handler = catch_fpe;                                      \
69
    kact.k_sa_mask = 0;                                                  \
70
    kact.k_sa_flags = SA_SIGINFO | SA_NODEFER;                          \
71
    syscall (SYS_sigaction, SIGFPE, &kact, NULL);                       \
72
  }                                                                     \
73
while (0)
74
 
75
#endif /* JAVA_SIGNAL_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.