Commit | Line | Data |
---|---|---|
7c27088c KB |
1 | /*- |
2 | * Copyright (c) 1986 The Regents of the University of California. | |
3 | * All rights reserved. | |
4 | * | |
5 | * This code is derived from software contributed to Berkeley by | |
6 | * Computer Consoles Inc. | |
7 | * | |
8 | * %sccs.include.redist.c% | |
9 | * | |
10 | * @(#)Awrite_quad.c 7.1 (Berkeley) %G% | |
11 | */ | |
8bf43721 | 12 | |
6499767c | 13 | #include "align.h" |
8bf43721 SL |
14 | |
15 | write_quadword (infop, qword, where) | |
16 | process_info *infop; | |
17 | quadword qword; | |
18 | struct oprnd *where; | |
19 | /* | |
20 | /* Put the quadword at the given address in memory. | |
21 | /* | |
22 | /* | |
23 | /**************************************************/ | |
24 | { | |
25 | if (! (where->mode & W)) exception(infop, ILL_ADDRMOD); | |
26 | switch (where->mode & ADDFIELD) /* Mask out R/W bits */ | |
27 | { | |
28 | case Add: | |
29 | put_longword (infop, qword.high, where->address); | |
30 | where->address += 4; | |
31 | put_longword (infop, qword.low, where->address); | |
32 | break; | |
33 | case Dir: | |
34 | if ( where->reg_number >= SPOINTER || (where->reg_number & 1) == 1 ) | |
35 | exception (infop, ILL_OPRND); | |
36 | Replace (infop, where->reg_number, qword.high); | |
37 | Replace (infop, where->reg_number+1, qword.low); | |
38 | break; | |
39 | case SPmode: | |
40 | exception(infop, ILL_ADDRMOD); | |
41 | break; | |
42 | default: | |
43 | printf("Unknown destination in write_quad (alignment code)\n"); | |
44 | }; | |
45 | } |