1 |
578 |
markom |
/* @(#)macros.h 5.19 93/07/30 16:39:54, Srini, AMD */
|
2 |
|
|
/******************************************************************************
|
3 |
|
|
* Copyright 1991 Advanced Micro Devices, Inc.
|
4 |
|
|
*
|
5 |
|
|
* This software is the property of Advanced Micro Devices, Inc (AMD) which
|
6 |
|
|
* specifically grants the user the right to modify, use and distribute this
|
7 |
|
|
* software provided this notice is not removed or altered. All other rights
|
8 |
|
|
* are reserved by AMD.
|
9 |
|
|
*
|
10 |
|
|
* AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS
|
11 |
|
|
* SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL
|
12 |
|
|
* DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR
|
13 |
|
|
* USE OF THIS SOFTWARE.
|
14 |
|
|
*
|
15 |
|
|
* So that all may benefit from your experience, please report any problems
|
16 |
|
|
* or suggestions about this software to the 29K Technical Support Center at
|
17 |
|
|
* 800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or
|
18 |
|
|
* 0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118.
|
19 |
|
|
*
|
20 |
|
|
* Advanced Micro Devices, Inc.
|
21 |
|
|
* 29K Support Products
|
22 |
|
|
* Mail Stop 573
|
23 |
|
|
* 5900 E. Ben White Blvd.
|
24 |
|
|
* Austin, TX 78741
|
25 |
|
|
* 800-292-9263
|
26 |
|
|
*****************************************************************************
|
27 |
|
|
* Engineer: Srini Subramanian.
|
28 |
|
|
*****************************************************************************
|
29 |
|
|
* This header file defines various macros used by the host module of
|
30 |
|
|
* MiniMON29K.
|
31 |
|
|
*****************************************************************************
|
32 |
|
|
*/
|
33 |
|
|
|
34 |
|
|
#ifndef _MACROS_H_INCLUDED_
|
35 |
|
|
#define _MACROS_H_INCLUDED_
|
36 |
|
|
|
37 |
|
|
/*
|
38 |
|
|
** Macros
|
39 |
|
|
*/
|
40 |
|
|
|
41 |
|
|
#define MIN(x,y) ((x)<(y) ? (x) : (y))
|
42 |
|
|
#define MAX(x,y) ((x)<(y) ? (y) : (x))
|
43 |
|
|
|
44 |
|
|
/* Does the memory space contain registers? */
|
45 |
|
|
#define ISREG(x) (((x) == LOCAL_REG) ||\
|
46 |
|
|
((x) == ABSOLUTE_REG) ||\
|
47 |
|
|
((x) == GLOBAL_REG) ||\
|
48 |
|
|
((x) == SPECIAL_REG) ||\
|
49 |
|
|
((x) == A_SPCL_REG) ||\
|
50 |
|
|
((x) == TLB_REG) ||\
|
51 |
|
|
((x) == PC_SPACE) ||\
|
52 |
|
|
((x) == COPROC_REG))
|
53 |
|
|
|
54 |
|
|
#define ISMEM(x) (((x) == I_MEM) ||\
|
55 |
|
|
((x) == D_MEM) ||\
|
56 |
|
|
((x) == I_ROM) ||\
|
57 |
|
|
((x) == D_ROM) ||\
|
58 |
|
|
((x) == PC_RELATIVE) ||\
|
59 |
|
|
((x) == GENERIC_SPACE) ||\
|
60 |
|
|
((x) == I_O))
|
61 |
|
|
|
62 |
|
|
#define ISGENERAL(x) (((x) == LOCAL_REG) ||\
|
63 |
|
|
((x) == ABSOLUTE_REG) ||\
|
64 |
|
|
((x) == GLOBAL_REG))
|
65 |
|
|
|
66 |
|
|
#define ISSPECIAL(x) (((x) == SPECIAL_REG) ||\
|
67 |
|
|
((x) == A_SPCL_REG))
|
68 |
|
|
|
69 |
|
|
#define ISTLB(x) (((x) == TLB_REG))
|
70 |
|
|
|
71 |
|
|
/*
|
72 |
|
|
** These macros are used to align addresses to 64, 32
|
73 |
|
|
** 16 and 8 bit boundaries (rounding upward). The
|
74 |
|
|
** ALIGN8() macro is usually not necessary, but included
|
75 |
|
|
** for completeness.
|
76 |
|
|
*/
|
77 |
|
|
|
78 |
|
|
#define ALIGN64(x) (((x) + 0x07) & 0xfffffff8);
|
79 |
|
|
#define ALIGN32(x) (((x) + 0x03) & 0xfffffffc);
|
80 |
|
|
#define ALIGN16(x) (((x) + 0x01) & 0xfffffffe);
|
81 |
|
|
#define ALIGN8(x) (((x) + 0x00) & 0xffffffff);
|
82 |
|
|
|
83 |
|
|
/*
|
84 |
|
|
** This macro is used to get the processor from the PRL.
|
85 |
|
|
** It is assumed that the PRL is an eight bit quantity.
|
86 |
|
|
*/
|
87 |
|
|
|
88 |
|
|
#define PROCESSOR(prl) (prl & 0xf1)
|
89 |
|
|
|
90 |
|
|
#endif /* _MACROS_H_INCLUDED_ */
|