1 /* $OpenBSD: mpyaccs.c,v 1.6 2003/04/10 17:27:58 mickey Exp $ */ 2 /* 3 (c) Copyright 1986 HEWLETT-PACKARD COMPANY 4 To anyone who acknowledges that this file is provided "AS IS" 5 without any express or implied warranty: 6 permission to use, copy, modify, and distribute this file 7 for any purpose is hereby granted without fee, provided that 8 the above copyright notice and this notice appears in all 9 copies, and that the name of Hewlett-Packard Company not be 10 used in advertising or publicity pertaining to distribution 11 of the software without specific, written prior permission. 12 Hewlett-Packard Company makes no representations about the 13 suitability of this software for any purpose. 14 */ 15 /* @(#)mpyaccs.c: Revision: 1.6.88.1 Date: 93/12/07 15:06:39 */ 16 17 #include "md.h" 18 19 void 20 mpyaccs(opnd1,opnd2,result) 21 int opnd1, opnd2; 22 struct mdsfu_register *result; 23 { 24 struct mdsfu_register temp; 25 int carry, sign; 26 27 s_xmpy(&opnd1,&opnd2,&temp); 28 29 /* get result of low word add, and check for carry out */ 30 if ((result_lo += (unsigned)temp.rslt_lo) < (unsigned)temp.rslt_lo) 31 carry = 1; 32 else 33 carry = 0; 34 35 /* get result of high word add, and determine overflow status */ 36 sign = result_hi ^ temp.rslt_hi; 37 result_hi += temp.rslt_hi + carry; 38 if (sign >= 0 && (temp.rslt_hi ^ result_hi) < 0) 39 overflow = TRUE; 40 } 41