xref: /csrg-svn/sys/tahoe/align/Astorer.c (revision 45760)
1*45760Sbostic /*-
2*45760Sbostic  * Copyright (c) 1986 The Regents of the University of California.
3*45760Sbostic  * All rights reserved.
4*45760Sbostic  *
5*45760Sbostic  * This code is derived from software contributed to Berkeley by
6*45760Sbostic  * Computer Consoles Inc.
7*45760Sbostic  *
8*45760Sbostic  * %sccs.include.redist.c%
9*45760Sbostic  *
10*45760Sbostic  *	@(#)Astorer.c	7.1 (Berkeley) 12/06/90
11*45760Sbostic  */
1229636Ssam 
1345699Sbostic #include "align.h"
storer(infop)1429636Ssam storer(infop)	process_info *infop;
1529636Ssam /*
1629636Ssam /*	Store multiple registers.
1729636Ssam /*
1829636Ssam /***************************************/
1929636Ssam {
2029636Ssam 	register int mask, next_register, new_address;
2129636Ssam 
2229636Ssam 	mask = operand(infop,0)->data & 0x3fff;	/* Bits 0 to 13 only */
2329636Ssam 	new_address = operand(infop,1)->address;
2429636Ssam 	next_register = 0;				/* Register # */
2529636Ssam 	while (next_register <= 13)
2629636Ssam 	{
2729636Ssam 		if (mask & 1 << next_register)
2829636Ssam 		{
2929636Ssam 			put_longword (infop, Register (infop, next_register),
3029636Ssam 				new_address);
3129636Ssam 			new_address += 4;
3229636Ssam 		}
3329636Ssam 		next_register++;
3429636Ssam 	}
3529636Ssam }
36