|
|
1.1 root 1: /* Aemul.c 1.1 86/07/20 */
2:
3:
4: #include "../tahoealign/align.h"
5: emul(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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.