/* Copyright (c) 1993 Xerox Corporation. All rights reserved. */ /* $Id$ $Date$ * * PCR architecture */ #ifndef ←←PCR←Arch←h #define ←←PCR←Arch←h 1 /* * known architectures -- define *only* the one(s) that apply */ #undef PCR←Arch←SPARC #undef PCR←Arch←SUN4 #if defined(PCR←Arch←SPARC) || defined(PCR←Arch←SUN4) # define PCR←Arch←name "SPARC" #endif #undef PCR←Arch←IBMR6000 #if defined(PCR←Arch←IBMR6000) # define PCR←Arch←name "IBMR6000" #endif #undef PCR←Arch←MIPS #undef PCR←Arch←IRIS #if defined(PCR←Arch←IRIS) # undef PCR←Arch←MIPS # define PCR←Arch←MIPS # define PCR←Arch←name "SGI IRIS" #elif defined(PCR←Arch←MIPS) # define PCR←Arch←name "MIPS" #endif /* * Dimensions of variation ... * * these should *all* be defined with appropriate values. */ /* test-and-set-like instruction exists */ #define PCR←Arch←TAS 0 /* endianness */ #define PCR←Arch←ENDIAN3210 0 /* big */ #define PCR←Arch←ENDIAN0123 0 /* little */ #define PCR←Arch←ENDIAN1032 0 /* weird */ #define PCR←Arch←ENDIAN2301 0 /* weird */ /* word size */ #undef PCR←Arch←STD←SIZES /* 8-bit byte, 16-bit short, 32-bit int/long/ptr */ /* alignment constraint: 0, 0x1, 0x3, 0x7, ... */ #undef PCR←Arch←ALIGN←MASK /* stack direction: > 0 or < 0 */ #undef PCR←Arch←STK←PUSH←DIR /* * Here we actually set this stuff for the chosen architecture */ #if (PCR←Arch←SPARC) || (PCR←Arch←SUN4) # undef PCR←Arch←ENDIAN3210 # define PCR←Arch←ENDIAN3210 1 # define PCR←Arch←STD←SIZES 1 # define PCR←Arch←ALIGN←MASK 0x7 # define PCR←Arch←STK←PUSH←DIR (-1) #elif (PCR←Arch←IBMR6000) # error IBMR6000 NYI #elif (PCR←Arch←IRIS) #else # error unknown arch #endif /* sanity checks */ #if ! PCR←Arch←STD←SIZES # error nonstandard sizes -- someday I will figure this out #endif #if ! defined(PCR←Arch←ALIGN←MASK) # error alignment constraint required #endif #if ! defined(PCR←Arch←STK←PUSH←DIR) # error no stack push direction defined #endif #endif /* ! ←←PCR←Arch←h */ /* $Log$ */