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