|
|
1.1 root 1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)machdep.h 5.2 (Berkeley) 11/12/86
7: */
8:
9: #ifdef ADDR32
10: #define pushaddr push4
11: #define popaddr (char *)pop4
12: #endif ADDR32
13: #ifdef ADDR16
14: #define pushaddr push2
15: #define popaddr (char *)pop2
16: #endif ADDR16
17:
18: /*
19: * Machine specific macros for reading quantities from the
20: * interpreter instruction stream. Operands in the instruction
21: * stream are aligned to short, but not long boundries. Blockmarks
22: * are always long aligned. Stack alignment indicates whether the
23: * stack is short or long aligned. Stack alignment is assumed to
24: * be no more than long aligned for ADDR32 machines, short aligned
25: * for ADDR16 machines.
26: */
27: #if defined(vax) || defined(mc68000) || defined(pdp11)
28: #define PCLONGVAL(target) target = *pc.lp++
29: #define GETLONGVAL(target, srcptr) target = *(long *)(srcptr)
30: #define STACKALIGN(target, value) target = ((value) + 1) &~ 1
31: #endif vax || mc68000 || pdp11
32:
33: #ifdef tahoe
34: #define PCLONGVAL(target) target = *pc.sp++ << 16, target += *pc.usp++
35: #define GETLONGVAL(target, srcptr) \
36: tsp = (short *)(srcptr), \
37: target = *tsp++ << 16, target += *(unsigned short *)tsp
38: #define STACKALIGN(target, value) target = ((value) + 3) &~ 3
39: #endif tahoe
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.