|
|
1.1 root 1: /* alignment.c */
2:
3: #include "../machine/alignment.h"
4:
5: alignment()
6: {
7: /* Part of the parameter list is set up by locore.s.
8: * First 2 dummy variables MUST BE the first local
9: * variables; leaving place for registers 0 and 1
10: * which are not preserved by the current C compiler.
11: * Then, the array of structures and the last_operand
12: * HAVE to be in the given order, to correspond to the
13: * description of process_info in 'alignment.h'.
14: */
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. The register variables
37: * cannot be trusted anymore, if an exception is signalled.
38: * See 'exception.c' to understand why.
39: */
40: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.