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)143caa8999Ssamint 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