|
|
1.1 ! root 1: /* Awrite_quad.c 1.1 86/07/20 */ ! 2: ! 3: #include "../tahoealign/align.h" ! 4: ! 5: write_quadword (infop, qword, where) ! 6: process_info *infop; ! 7: quadword qword; ! 8: struct oprnd *where; ! 9: /* ! 10: /* Put the quadword at the given address in memory. ! 11: /* ! 12: /* ! 13: /**************************************************/ ! 14: { ! 15: if (! (where->mode & W)) exception(infop, ILL_ADDRMOD); ! 16: switch (where->mode & ADDFIELD) /* Mask out R/W bits */ ! 17: { ! 18: case Add: ! 19: put_longword (infop, qword.high, where->address); ! 20: where->address += 4; ! 21: put_longword (infop, qword.low, where->address); ! 22: break; ! 23: case Dir: ! 24: if ( where->reg_number >= SPOINTER || (where->reg_number & 1) == 1 ) ! 25: exception (infop, ILL_OPRND); ! 26: Replace (infop, where->reg_number, qword.high); ! 27: Replace (infop, where->reg_number+1, qword.low); ! 28: break; ! 29: case SPmode: ! 30: exception(infop, ILL_ADDRMOD); ! 31: break; ! 32: default: ! 33: printf("Unknown destination in write_quad (alignment code)\n"); ! 34: }; ! 35: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.