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