BSD 4_3_Tahoe development
[unix-history] / usr / src / sys / tahoealign / Aemul.c
CommitLineData
c8cccbb7
C
1/* Aemul.c 1.1 86/07/20 */
2
3
4#include "../tahoealign/align.h"
5emul(infop) process_info *infop;
6/*
7/* Extended precision multiplication.
8/*
9/***************************************/
10{
11 register long Register_12; /* multiplicand */
12 register long Register_11; /* product least */
13 register long Register_10; /* product most */
14 register long Register_9; /* addend */
15 register long Register_8; /* multiplier */
16 quadword result;
17
18 Register_8 = operand(infop, 0)->data;
19 Register_12 = operand(infop, 1)->data;
20 Register_9 = operand(infop, 2)->data;
21 Register_10=psl;
22 Set_psl(r10); /* restore the user psl */
23 asm (" emul r8,r12,r9,r10");
24 asm (" movpsl r8");
25 New_cc (Register_8);
26 result.high = Register_10;
27 result.low = Register_11;
28 write_quadword (infop, result, operand(infop, 3));
29}