Subversion Repositories tendra.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 7u83 1
/*
7 7u83 2
 * Copyright (c) 2002-2005 The TenDRA Project <http://www.tendra.org/>.
3
 * All rights reserved.
4
 *
5
 * Redistribution and use in source and binary forms, with or without
6
 * modification, are permitted provided that the following conditions are met:
7
 *
8
 * 1. Redistributions of source code must retain the above copyright notice,
9
 *    this list of conditions and the following disclaimer.
10
 * 2. Redistributions in binary form must reproduce the above copyright notice,
11
 *    this list of conditions and the following disclaimer in the documentation
12
 *    and/or other materials provided with the distribution.
13
 * 3. Neither the name of The TenDRA Project nor the names of its contributors
14
 *    may be used to endorse or promote products derived from this software
15
 *    without specific, prior written permission.
16
 *
17
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
18
 * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
19
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
21
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22
 * EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
 *
29
 * $Id$
30
 */
31
/*
2 7u83 32
    		 Crown Copyright (c) 1996
7 7u83 33
 
2 7u83 34
    This TenDRA(r) Computer Program is subject to Copyright
35
    owned by the United Kingdom Secretary of State for Defence
36
    acting through the Defence Evaluation and Research Agency
37
    (DERA).  It is made available to Recipients with a
38
    royalty-free licence for its use, reproduction, transfer
39
    to other parties and amendment for any purpose not excluding
40
    product development provided that any such use et cetera
41
    shall be deemed to be acceptance of the following conditions:-
7 7u83 42
 
2 7u83 43
        (1) Its Recipients shall ensure that this Notice is
44
        reproduced upon any copies or amended versions of it;
7 7u83 45
 
2 7u83 46
        (2) Any amended version of it shall be clearly marked to
47
        show both the nature of and the organisation responsible
48
        for the relevant amendment or amendments;
7 7u83 49
 
2 7u83 50
        (3) Its onward transfer from a recipient to another
51
        party shall be deemed to be that party's acceptance of
52
        these conditions;
7 7u83 53
 
2 7u83 54
        (4) DERA gives no warranty or assurance as to its
55
        quality or suitability for any purpose and DERA accepts
56
        no liability whatsoever in relation to any use to which
57
        it may be put.
58
*/
59
/*
60
			    VERSION INFORMATION
61
			    ===================
62
 
63
--------------------------------------------------------------------------
64
$Header: /u/g/release/CVSROOT/Source/src/installers/680x0/common/ops_shared.h,v 1.1.1.1 1998/01/17 15:55:50 release Exp $
65
--------------------------------------------------------------------------
66
$Log: ops_shared.h,v $
67
 * Revision 1.1.1.1  1998/01/17  15:55:50  release
68
 * First version to be checked into rolling release.
69
 *
70
Revision 1.1.1.1  1997/10/13 12:42:57  ma
71
First version.
72
 
73
Revision 1.3  1997/10/13 08:50:06  ma
74
Made all pl_tests for general proc & exception handling pass.
75
 
76
Revision 1.2  1997/09/25 06:45:30  ma
77
All general_proc tests passed
78
 
79
Revision 1.1.1.1  1997/03/14 07:50:16  ma
80
Imported from DRA
81
 
82
 * Revision 1.1.1.1  1996/09/20  10:56:57  john
83
 *
84
 * Revision 1.2  1996/07/05  14:25:35  john
85
 * Changes for spec 3.1
86
 *
87
 * Revision 1.1.1.1  1996/03/26  15:45:16  john
88
 *
89
 * Revision 1.2  93/03/03  14:50:17  14:50:17  ra (Robert Andrews)
90
 * Added support for jump_overflow routine.
7 7u83 91
 *
2 7u83 92
 * Revision 1.1  93/02/22  17:16:28  17:16:28  ra (Robert Andrews)
93
 * Initial revision
7 7u83 94
 *
2 7u83 95
--------------------------------------------------------------------------
96
*/
97
 
98
 
99
#ifndef OPS_SHARED_INCLUDED
100
#define OPS_SHARED_INCLUDED
101
 
102
 
103
/*
104
    KEY TO OVERFLOW JUMPS
105
 
106
    The argument to jump_overflow is one of the following.
107
*/
108
 
109
typedef enum {
110
   UNCONDITIONAL,
111
   ON_OVERFLOW,
112
   ON_CARRY,
113
   ON_FP_OVERFLOW,
114
   ON_FP_CARRY,
115
   ON_FP_OPERAND_ERROR
7 7u83 116
} overflow_type;
2 7u83 117
 
7 7u83 118
#define ON_SHAPE(s)	(is_signed(s)? ON_OVERFLOW : ON_CARRY)
2 7u83 119
 
120
 
121
/*
122
    PROTOTYPES
123
 
124
    This file is a relic of the old operations.c which was split into
125
    the four ops_*.c files.  These routines were previously static but
126
    now must be external.
127
*/
128
 
7 7u83 129
extern void branch(long, exp, int, int, int);
130
extern int branch_ins(long, int, int, int);
131
extern void jump_overflow(int);
132
extern void test_overflow(overflow_type);
133
extern void test_overflow2(int);
134
extern void push(shape, long, where);
135
extern void push_float(long, where);
136
extern void pop(shape, long, where);
137
extern void pop_float(long, where);
138
extern void shift_aux(shape, where, where, where, int, int);
139
extern void checkalloc_stack(where, int);
140
extern int set_overflow(exp);
141
extern int have_overflow(void);
142
extern void clear_overflow(int);
143
extern void reset_round_mode(void);
144
extern void cmp_zero(shape, long, where);
2 7u83 145
 
146
 
147
/*
148
    CONDITION CODES
149
 
150
    These condition codes are used to eliminate unnecessary comparison
151
    instructions.
152
*/
153
 
7 7u83 154
extern where last_cond;
155
extern where last_cond2;
156
extern where last_cond_alt;
157
extern long last_cond_sz;
2 7u83 158
 
159
 
160
/*
161
    SET CONDITION CODES
162
 
163
    This macro is used to set the condition codes for the where X of
164
    size Y.
165
*/
166
 
7 7u83 167
#define  set_cond(X, Y)		\
2 7u83 168
    {					\
7 7u83 169
	have_cond = 1; \
170
	last_cond = (X);		\
171
	last_cond_sz = (Y);		\
2 7u83 172
    }
173
 
174
 
175
/*
176
    SET ALTERNATIVE CONDITION CODES
177
 
178
    This macro is used to set the alterative last condition to X.
179
*/
180
 
7 7u83 181
#define  set_cond_alt(X)		\
2 7u83 182
    {					\
7 7u83 183
	have_cond = 3; \
184
	last_cond_alt = (X);		\
2 7u83 185
    }
186
 
187
 
188
/*
189
    OUTPUT A COMPARISON INSTRUCTION
190
 
191
    Some assemblers (e.g. HP) reverse the order of the operands in
192
    comparison instructions.  This macro handles this fact.
193
*/
194
 
195
#ifndef asm_cmp_reversed
7 7u83 196
#define ins2_cmp(I, S1, S2, X1, X2, M)ins2(I, S1, S2, X1, X2, M)
2 7u83 197
#else
7 7u83 198
#define ins2_cmp(I, S1, S2, X1, X2, M)ins2(I, S2, S1, X2, X1, M)
2 7u83 199
#endif
200
 
201
 
202
#endif