1 /*- 2 * Copyright (c) 1986 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Computer Consoles Inc. 7 * 8 * %sccs.include.redist.c% 9 * 10 * @(#)Aemul.c 7.1 (Berkeley) 12/06/90 11 */ 12 13 #include "align.h" emul(infop)14emul(infop) process_info *infop; 15 /* 16 /* Extended precision multiplication. 17 /* 18 /***************************************/ 19 { 20 register long Register_12; /* multiplicand */ 21 register long Register_11; /* product least */ 22 register long Register_10; /* product most */ 23 register long Register_9; /* addend */ 24 register long Register_8; /* multiplier */ 25 quadword result; 26 27 Register_8 = operand(infop, 0)->data; 28 Register_12 = operand(infop, 1)->data; 29 Register_9 = operand(infop, 2)->data; 30 Register_10=psl; 31 Set_psl(r10); /* restore the user psl */ 32 asm (" emul r8,r12,r9,r10"); 33 asm (" movpsl r8"); 34 New_cc (Register_8); 35 result.high = Register_10; 36 result.low = Register_11; 37 write_quadword (infop, result, operand(infop, 3)); 38 } 39