|
|
1.1 ! root 1: /* Copyright (c) 1991 NeXT Computer, Inc. All rights reserved. ! 2: * ! 3: * File: architecture/m88k/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 _ARCH_M88K_REG_HELP_H_ ! 15: #define _ARCH_M88K_REG_HELP_H_ ! 16: ! 17: #import <architecture/nrw/reg_help.h> ! 18: ! 19: /* Stack pointer must always be a multiple of 16 */ ! 20: #define STACK_INCR 16 ! 21: #define ROUND_FRAME(x) ((((unsigned)(x)) + STACK_INCR - 1) & ~(STACK_INCR-1)) ! 22: ! 23: /* ! 24: * REG_PAIR_DEF -- define a register pair ! 25: * Register pairs are appropriately aligned to allow access via ! 26: * ld.d and st.d. ! 27: * ! 28: * Usage: ! 29: * struct foo { ! 30: * REG_PAIR_DEF( ! 31: * bar_t *, barp, ! 32: * afu_t, afu ! 33: * ); ! 34: * }; ! 35: * ! 36: * Access to individual entries of the pair is via the REG_PAIR ! 37: * macro (below). ! 38: */ ! 39: #define REG_PAIR_DEF(type0, name0, type1, name1) \ ! 40: struct { \ ! 41: type0 name0 __attribute__(( aligned(8) )); \ ! 42: type1 name1; \ ! 43: } name0##_##name1 ! 44: ! 45: /* ! 46: * REG_PAIR -- Macro to define names for accessing individual registers ! 47: * of register pairs. ! 48: * ! 49: * Usage: ! 50: * arg0 is first element of pair ! 51: * arg1 is second element of pair ! 52: * arg2 is desired element of pair ! 53: * eg: ! 54: * #define foo_barp REG_PAIR(barp, afu, afu) ! 55: */ ! 56: #define REG_PAIR(name0, name1, the_name) \ ! 57: name0##_##name1.the_name ! 58: ! 59: #endif _ARCH_M88K_REG_HELP_H_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.