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 * @(#)Amull3.c 7.1 (Berkeley) 12/06/90 11*b65ab6e5Sbostic */ 1286266f2bSsam 13f5878f6dSbostic #include "align.h" mull3(infop)1486266f2bSsammull3(infop) process_info *infop; 1586266f2bSsam /* 1686266f2bSsam /* Multiply longwords, 3 operands. 1786266f2bSsam /* 1886266f2bSsam /*****************************************/ 1986266f2bSsam { 2086266f2bSsam register long Register_12; /* Has to be first reg ! */ 2186266f2bSsam register long result, data0, data1; 2286266f2bSsam 2386266f2bSsam data0 = operand(infop,0)->data; 2486266f2bSsam data1 = operand(infop,1)->data; 2586266f2bSsam Register_12=psl; 2686266f2bSsam Set_psl(r12); /* restore the user psl */ 2786266f2bSsam result = data0 * data1; 2886266f2bSsam asm (" movpsl r12"); 2986266f2bSsam New_cc (Register_12); 3086266f2bSsam write_back (infop,result, operand(infop,2) ); 3186266f2bSsam } 32