File: macros.h

package info (click to toggle)
pm3 1.1.13-11
  • links: PTS
  • area: main
  • in suites: potato
  • size: 174,164 kB
  • ctags: 133,819
  • sloc: ansic: 982,617; modula3: 548,483; cpp: 57,119; exp: 21,673; sh: 17,053; lisp: 13,693; makefile: 13,492; asm: 11,795; yacc: 8,575; sed: 1,100; objc: 476; csh: 254; awk: 223; pascal: 95; fortran: 5
file content (90 lines) | stat: -rw-r--r-- 3,268 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/* @(#)macros.h	5.19 93/07/30 16:39:54, Srini, AMD */
/******************************************************************************
 * Copyright 1991 Advanced Micro Devices, Inc.
 *
 * This software is the property of Advanced Micro Devices, Inc  (AMD)  which
 * specifically  grants the user the right to modify, use and distribute this
 * software provided this notice is not removed or altered.  All other rights
 * are reserved by AMD.
 *
 * AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS
 * SOFTWARE.  IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL
 * DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR
 * USE OF THIS SOFTWARE.
 *
 * So that all may benefit from your experience, please report  any  problems
 * or  suggestions about this software to the 29K Technical Support Center at
 * 800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131  in  the  UK,  or
 * 0031-11-1129 in Japan, toll free.  The direct dial number is 512-462-4118.
 *
 * Advanced Micro Devices, Inc.
 * 29K Support Products
 * Mail Stop 573
 * 5900 E. Ben White Blvd.
 * Austin, TX 78741
 * 800-292-9263
 *****************************************************************************
 *      Engineer: Srini Subramanian.
 *****************************************************************************
 * This header file defines various macros used by the host module of 
 * MiniMON29K.
 *****************************************************************************
 */

#ifndef	_MACROS_H_INCLUDED_
#define	_MACROS_H_INCLUDED_

/*
** Macros
*/

#define MIN(x,y)            ((x)<(y) ? (x) : (y))
#define MAX(x,y)            ((x)<(y) ? (y) : (x))

/* Does the memory space contain registers? */
#define ISREG(x)      (((x) == LOCAL_REG) ||\
                       ((x) == ABSOLUTE_REG) ||\
                       ((x) == GLOBAL_REG) ||\
                       ((x) == SPECIAL_REG) ||\
                       ((x) == A_SPCL_REG) ||\
                       ((x) == TLB_REG) ||\
                       ((x) == PC_SPACE) ||\
                       ((x) == COPROC_REG))

#define ISMEM(x)      (((x) == I_MEM) ||\
                       ((x) == D_MEM) ||\
                       ((x) == I_ROM) ||\
                       ((x) == D_ROM) ||\
                       ((x) == PC_RELATIVE) ||\
                       ((x) == GENERIC_SPACE) ||\
                       ((x) == I_O))

#define ISGENERAL(x)   (((x) == LOCAL_REG) ||\
                       ((x) == ABSOLUTE_REG) ||\
                       ((x) == GLOBAL_REG))

#define ISSPECIAL(x)   (((x) == SPECIAL_REG) ||\
			((x) == A_SPCL_REG))

#define ISTLB(x)       (((x) == TLB_REG))

/*
** These macros are used to align addresses to 64, 32
** 16 and 8 bit boundaries (rounding upward).  The
** ALIGN8() macro is usually not necessary, but included
** for completeness.
*/

#define ALIGN64(x)     (((x) + 0x07) & 0xfffffff8);
#define ALIGN32(x)     (((x) + 0x03) & 0xfffffffc);
#define ALIGN16(x)     (((x) + 0x01) & 0xfffffffe);
#define ALIGN8(x)      (((x) + 0x00) & 0xffffffff);

/*
** This macro is used to get the processor from the PRL.
** It is assumed that the PRL is an eight bit quantity.
*/

#define PROCESSOR(prl)  (prl & 0xf1)

#endif /* _MACROS_H_INCLUDED_ */