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 } 36