|
|
1.1 ! root 1: /* Copyright (c) 1991 NeXT Computer, Inc. All rights reserved. ! 2: * ! 3: * File: architecture/nrw/reg_help.h ! 4: * Author: Mike DeMoney, NeXT Computer, Inc. ! 5: * ! 6: * This header file defines cpp macros useful for defining ! 7: * machine register and doing machine-level operations. ! 8: * ! 9: * HISTORY ! 10: * 23-Jan-91 Mike DeMoney ([email protected]) ! 11: * Created. ! 12: */ ! 13: ! 14: #ifndef _NRW_REG_HELP_H_ ! 15: #define _NRW_REG_HELP_H_ ! 16: ! 17: /* Bitfield definition aid */ ! 18: #define BITS_WIDTH(msb, lsb) ((msb)-(lsb)+1) ! 19: #define BIT_WIDTH(pos) (1) /* mostly to record the position */ ! 20: ! 21: /* Mask creation */ ! 22: #define MKMASK(width, offset) (((unsigned)-1)>>(32-(width))<<(offset)) ! 23: #define BITSMASK(msb, lsb) MKMASK(BITS_WIDTH(msb, lsb), lsb & 0x1f) ! 24: #define BITMASK(pos) MKMASK(BIT_WIDTH(pos), pos & 0x1f) ! 25: ! 26: /* Register addresses */ ! 27: #if __ASSEMBLER__ ! 28: # define REG_ADDR(type, addr) (addr) ! 29: #else __ASSEMBLER__ ! 30: # define REG_ADDR(type, addr) (*(volatile type *)(addr)) ! 31: #endif __ASSEMBLER__ ! 32: ! 33: /* Cast a register to be an unsigned */ ! 34: #define CONTENTS(foo) (*(unsigned *) &(foo)) ! 35: ! 36: /* STRINGIFY -- perform all possible substitutions, then stringify */ ! 37: #define __STR(x) #x /* just a helper macro */ ! 38: #define STRINGIFY(x) __STR(x) ! 39: ! 40: ! 41: #endif _NRW_REG_HELP_H_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.