xref: /original-bsd/sys/tahoe/align/Aget_long.c (revision b65ab6e5)
1*b65ab6e5Sbostic /*-
2*b65ab6e5Sbostic  * Copyright (c) 1986 The Regents of the University of California.
3*b65ab6e5Sbostic  * All rights reserved.
4*b65ab6e5Sbostic  *
5*b65ab6e5Sbostic  * This code is derived from software contributed to Berkeley by
6*b65ab6e5Sbostic  * Computer Consoles Inc.
7*b65ab6e5Sbostic  *
8*b65ab6e5Sbostic  * %sccs.include.redist.c%
9*b65ab6e5Sbostic  *
10*b65ab6e5Sbostic  *	@(#)Aget_long.c	7.1 (Berkeley) 12/06/90
11*b65ab6e5Sbostic  */
123caa8999Ssam 
13f5878f6dSbostic #include	"align.h"
get_longword(infop,address)143caa8999Ssam int get_longword (infop, address)
153caa8999Ssam process_info	*infop;
163caa8999Ssam char		*address;
173caa8999Ssam /*
183caa8999Ssam /*	Fetch the longword at the given 'address' from memory.
193caa8999Ssam /*	Caveat: It's quite difficult to find a pte reference
203caa8999Ssam /*		fault.  So I took the easy way out and just signal
213caa8999Ssam /*		an illegal access.
223caa8999Ssam /*
233caa8999Ssam /**************************************************/
243caa8999Ssam {
253caa8999Ssam 	register long code, value;
263caa8999Ssam 
273caa8999Ssam 	code = readable(infop, address, 4);
283caa8999Ssam 	if (code == TRUE) {
293caa8999Ssam 		value = *address++;
303caa8999Ssam 		value = (value << 8) | *address++ & 0xff;
313caa8999Ssam 		value = (value << 8) | *address++ & 0xff;
323caa8999Ssam 		value = (value << 8) | *address & 0xff;
333caa8999Ssam 		return(value);
343caa8999Ssam 	} else exception (infop, ILL_ACCESS, address, code);
353caa8999Ssam }
36