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