/* Copyright Motorola, Inc. 1993, 1994 ALL RIGHTS RESERVED You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE so long as this entire notice is retained without alteration in any modified and/or redistributed versions, and that such modified versions are clearly identified as such. No licenses are granted by implication, estoppel or otherwise under any patents or trademarks of Motorola, Inc. The SOFTWARE is provided on an "AS IS" basis and without warranty. To the maximum extent permitted by applicable law, MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY ACCOMPANYING WRITTEN MATERIALS. To the maximum extent permitted by applicable law, IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE. Motorola assumes no responsibility for the maintenance and support of the SOFTWARE. */ /* 1 2 3 4 5 6 7 8 01234567890123456789012345678901234567890123456789012345678901234567890123456789 */ /* --------------------------------------------------------------------- ======================= Register File Defines ======================= --------------------------------------------------------------------- */ #include "config.h" /* these are necessary defines to help us set up the size of the registers and the size of one memory element. So the type INTEGER should be dependent on the number of bits in a single integer register. The type REAL is used for a single floating point register. For the 98601 it is 32 bits. Therefore the user must "#define" INT_32_BITS to properly initialize the types INTEGER and REAL. */ #ifdef INT_32_BITS #define INTEGER unsigned long #ifdef ON_BOARD #define REAL double #else #define REAL long #endif #endif /* if we have a 64-bit machine then we need to define INT_64_BITS to initialize the types... ----------NOTICE------------------ There is no ANSI standard for the naming of a 64-bit integer. long long is the best estimate to date for this type of integer */ #ifdef INT_64_BITS #define INTEGER long long #define REAL double #endif /* ----------- SPECIAL PURPOSE ----*/ /* This is the number of special purpose registers on the chip. This is an aid to defining the MEMORY requirements for DINK32. */ #define MAX_SPECIAL_REG 155 /* this is the number of possible tokens in the SPR family. This aids in defining the NUMBER OF TOKENS needed for the SPRs */ #define MAX_SPECIAL_REG_TOKENS 2010 /*------------- GENERAL PURPOSE ------*/ /* This is the number of general purpose registers on the chip. This is an aid to defining the MEMORY requirements for DINK32. */ #define MAX_GENERAL_REG 32 /* this is the number of possible tokens in the SPR family. This aids in defining the NUMBER OF TOKENS needed for the SPRs */ #define MAX_GENERAL_REG_TOKENS 100 /*------------- FLOATING POINT ------*/ /* This is the number of floating- point registers on the chip. This is an aid to defining the MEMORY requirements for DINK32. */ #define MAX_FP_REG 32 /* this is the number of possible tokens in the SPR family. This aids in defining the NUMBER OF TOKENS needed for the SPRs */ #define MAX_FP_REG_TOKENS 100 /*------------- AltiVec VECTOR ------*/ /* This is the number of 128 bit wide vector registers on the chip. This is an aid to defining the MEMORY requirements for DINK32. */ #define MAX_V_REG 32 /* this is the number of possible tokens in the SPR family. This aids in defining the NUMBER OF TOKENS needed for the SPRs */ #define MAX_V_REG_TOKENS 100