|
|
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.