/sys/tahoealign -> /sys/tahoe/align
[unix-history] / usr / src / sys / tahoe / align / align.c
CommitLineData
6499767c 1/* align.c 1.2 90/12/04 */
3a3c3fa2 2
6499767c 3#include "align.h"
3a3c3fa2
SL
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 */
14alignment()
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}