xref: /original-bsd/sys/tahoe/align/Aregister.c (revision 3b6250d9)
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  *	@(#)Aregister.c	7.1 (Berkeley) 12/06/90
11  */
12 
13 #include "align.h"
14 
15 /*
16  * Return the specified register from the big structure.
17  */
18 
19 long
20 Register (infop, number)
21 process_info	*infop;
22 long		number;
23 {
24 
25 	switch (number) {
26 		case 0:	return (r0);
27 		case 1:	return (r1);
28 		case 2:	return (r2);
29 		case 3:	return (r3);
30 		case 4:	return (r4);
31 		case 5:	return (r5);
32 		case 6:	return (r6);
33 		case 7:	return (r7);
34 		case 8:	return (r8);
35 		case 9:	return (r9);
36 		case 10:	return (r10);
37 		case 11:	return (r11);
38 		case 12:	return (r12);
39 		case 13:	return (fp);
40 		case 14:	return (sp);
41 		case 15:	return (pc);
42 	}
43 }
44 
45 
46 /*
47  * Replace a given register with the given value.
48  */
49 Replace (infop,number, newvalue)
50 process_info	*infop;
51 long		number;
52 long		newvalue;
53 {
54 
55 	switch (number) {
56 		case 0:	r0 = newvalue; return;
57 		case 1:	r1 = newvalue; return;
58 		case 2:	r2 = newvalue; return;
59 		case 3:	r3 = newvalue; return;
60 		case 4:	r4 = newvalue; return;
61 		case 5:	r5 = newvalue; return;
62 		case 6:	r6 = newvalue; return;
63 		case 7:	r7 = newvalue; return;
64 		case 8:	r8 = newvalue; return;
65 		case 9:	r9 = newvalue; return;
66 		case 10:	r10 = newvalue; return;
67 		case 11:	r11 = newvalue; return;
68 		case 12:	r12 = newvalue; return;
69 		case 13:	fp = newvalue; return;
70 		case 14:	sp = newvalue & ~3; return;
71 		case 15:	pc = newvalue; return;
72 	}
73 }
74