ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/uae_cpu/spcflags.h
Revision: 1.5
Committed: 2012-03-30T01:25:46Z (12 years, 8 months ago) by asvitkine
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.4: +21 -7 lines
Log Message:
Add GPLv2 notices to files from UAE Amiga Emulator, as retrieved from the
COPYING file of uae-0.8.29, retrieved from http://www.amigaemulator.org/
via uae-0.8.29.tar.bz2 (MD5 = 54abbabb5e8580b679c52de019141d61).

File Contents

# Content
1 /*
2 * UAE - The Un*x Amiga Emulator
3 *
4 * MC68000 emulation
5 *
6 * Copyright 1995 Bernd Schmidt
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */
22
23 #ifndef SPCFLAGS_H
24 #define SPCFLAGS_H
25
26 typedef uae_u32 spcflags_t;
27
28 enum {
29 SPCFLAG_STOP = 0x01,
30 SPCFLAG_INT = 0x02,
31 SPCFLAG_BRK = 0x04,
32 SPCFLAG_TRACE = 0x08,
33 SPCFLAG_DOTRACE = 0x10,
34 SPCFLAG_DOINT = 0x20,
35 #if USE_JIT
36 SPCFLAG_JIT_END_COMPILE = 0x40,
37 SPCFLAG_JIT_EXEC_RETURN = 0x80,
38 #else
39 SPCFLAG_JIT_END_COMPILE = 0,
40 SPCFLAG_JIT_EXEC_RETURN = 0,
41 #endif
42
43 SPCFLAG_ALL = SPCFLAG_STOP
44 | SPCFLAG_INT
45 | SPCFLAG_BRK
46 | SPCFLAG_TRACE
47 | SPCFLAG_DOTRACE
48 | SPCFLAG_DOINT
49 | SPCFLAG_JIT_END_COMPILE
50 | SPCFLAG_JIT_EXEC_RETURN
51 ,
52
53 SPCFLAG_ALL_BUT_EXEC_RETURN = SPCFLAG_ALL & ~SPCFLAG_JIT_EXEC_RETURN
54 };
55
56 #define SPCFLAGS_TEST(m) \
57 ((regs.spcflags & (m)) != 0)
58
59 /* Macro only used in m68k_reset() */
60 #define SPCFLAGS_INIT(m) do { \
61 regs.spcflags = (m); \
62 } while (0)
63
64 #if !(ENABLE_EXCLUSIVE_SPCFLAGS)
65
66 #define SPCFLAGS_SET(m) do { \
67 regs.spcflags |= (m); \
68 } while (0)
69
70 #define SPCFLAGS_CLEAR(m) do { \
71 regs.spcflags &= ~(m); \
72 } while (0)
73
74 #elif (defined(__i386__) || defined(__x86_64__)) && defined(X86_ASSEMBLY)
75
76 #define HAVE_HARDWARE_LOCKS
77
78 #define SPCFLAGS_SET(m) do { \
79 __asm__ __volatile__("lock\n\torl %1,%0" : "=m" (regs.spcflags) : "i" ((m))); \
80 } while (0)
81
82 #define SPCFLAGS_CLEAR(m) do { \
83 __asm__ __volatile__("lock\n\tandl %1,%0" : "=m" (regs.spcflags) : "i" (~(m))); \
84 } while (0)
85
86 #else
87
88 #undef HAVE_HARDWARE_LOCKS
89
90 #include "main.h"
91 extern B2_mutex *spcflags_lock;
92
93 #define SPCFLAGS_SET(m) do { \
94 B2_lock_mutex(spcflags_lock); \
95 regs.spcflags |= (m); \
96 B2_unlock_mutex(spcflags_lock); \
97 } while (0)
98
99 #define SPCFLAGS_CLEAR(m) do { \
100 B2_lock_mutex(spcflags_lock); \
101 regs.spcflags &= ~(m); \
102 B2_unlock_mutex(spcflags_lock); \
103 } while (0)
104
105 #endif
106
107 #endif /* SPCFLAGS_H */