]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/ultra3-xdep.c
import gdb-1999-07-07 post reformat
[thirdparty/binutils-gdb.git] / gdb / ultra3-xdep.c
1 /* Host-dependent code for GDB, for NYU Ultra3 running Sym1 OS.
2 Copyright (C) 1988, 1989, 1991, 1992 Free Software Foundation, Inc.
3 Contributed by David Wood (wood@nyu.edu) at New York University.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. */
21
22 #define DEBUG
23 #include "defs.h"
24 #include "frame.h"
25 #include "inferior.h"
26 #include "symtab.h"
27 #include "value.h"
28
29 #include <sys/types.h>
30 #include <sys/param.h>
31 #include <signal.h>
32 #include <sys/ioctl.h>
33 #include <fcntl.h>
34
35 #include "gdbcore.h"
36
37 #include <sys/file.h>
38 #include "gdb_stat.h"
39
40 /* Assorted operating system circumventions */
41
42 #ifdef SYM1
43
44 /* FIXME: Kludge this for now. It really should be system call. */
45 int
46 getpagesize ()
47 {
48 return (8192);
49 }
50
51 /* FIXME: Fake out the fcntl() call, which we don't have. */
52 fcntl (fd, cmd, arg)
53 int fd, cmd, arg;
54 {
55
56 switch (cmd)
57 {
58 case F_GETFL:
59 return (O_RDONLY);
60 break;
61 default:
62 printf_unfiltered ("Ultra3's fcntl() failing, cmd = %d.\n", cmd);
63 return (-1);
64 }
65 }
66
67
68 /*
69 * 4.2 Signal support, requires linking with libjobs.
70 */
71 static int _SigMask;
72 #define sigbit(s) (1L << ((s)-1))
73
74 init_SigMask ()
75 {
76 /* Taken from the sym1 kernel in machdep.c:startup() */
77 _SigMask = sigbit (SIGTSTP) | sigbit (SIGTTOU) | sigbit (SIGTTIN) |
78 sigbit (SIGCHLD) | sigbit (SIGTINT);
79 }
80
81 sigmask (signo)
82 int signo;
83 {
84 return (1 << (signo - 1));
85 }
86
87 sigsetmask (sigmask)
88 unsigned int sigmask;
89 {
90 int i, mask = 1;
91 int lastmask = _SigMask;
92
93 for (i = 0; i < NSIG; i++)
94 {
95 if (sigmask & mask)
96 {
97 if (!(_SigMask & mask))
98 {
99 sighold (i + 1);
100 _SigMask |= mask;
101 }
102 }
103 else if (_SigMask & mask)
104 {
105 sigrelse (i + 1);
106 _SigMask &= ~mask;
107 }
108 mask <<= 1;
109 }
110 return (lastmask);
111 }
112
113 sigblock (sigmask)
114 unsigned int sigmask;
115 {
116 int i, mask = 1;
117 int lastmask = _SigMask;
118
119 for (i = 0; i < NSIG; i++)
120 {
121 if ((sigmask & mask) && !(_SigMask & mask))
122 {
123 sighold (i + 1);
124 _SigMask |= mask;
125 }
126 mask <<= 1;
127 }
128 return (lastmask);
129 }
130 #endif /* SYM1 */
131
132
133 /* Initialization code for this module. */
134
135 void
136 _initialize_ultra3 ()
137 {
138 #ifdef SYM1
139 init_SigMask ();
140 #endif
141 }