|
|
1.1 root 1: /* align.c 1.1 86/07/20 */
2:
3: #include "../tahoealign/align.h"
4:
5: /*
6: * Part of the parameter list is set up by locore.s.
7: * First 2 dummy variables MUST BE the first local
8: * variables; leaving place for registers 0 and 1
9: * which are not preserved by the current C compiler.
10: * Then, the array of structures and the last_operand
11: * HAVE to be in the given order, to correspond to the
12: * description of process_info in 'alignment.h'.
13: */
14: alignment()
15: {
16: long space_4_Register_1; /* register 1 */
17: long space_4_Register_0; /* register 0 */
18: struct oprnd space_4_decoded[4];
19: long space_4_opcode;
20: long space_4_last_operand; /* Last operand # processed */
21: long space_4_saved_pc;
22: long space_4_saved_sp;
23:
24: register process_info *infop;
25:
26: infop = (process_info *)&space_4_saved_sp;
27: saved_pc = pc;
28: saved_sp = sp; /* For possible exceptions */
29:
30: last_operand = -1; /* To get the operand routine going correctly */
31:
32: opCODE = 0xff & *(char *)pc;
33: pc++;
34: (*Table[opCODE].routine) (infop); /* Call relevant handler */
35: /*
36: * NOTE: nothing should follow, except the return.
37: * The register variables cannot be trusted anymore,
38: * if an exception is signalled. See 'exception.c'
39: * to understand why.
40: */
41: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.