|
|
1.1 root 1:
2: #include "../machine/alignment.h"
3: emul(infop) process_info *infop;
4: /*
5: /* Extended precision multiplication.
6: /*
7: /***************************************/
8: {
9: register long Register_12; /* multiplicand */
10: register long Register_11; /* product least */
11: register long Register_10; /* product most */
12: register long Register_9; /* addend */
13: register long Register_8; /* multiplier */
14: quadword result;
15:
16: Register_8 = operand(infop, 0)->data;
17: Register_12 = operand(infop, 1)->data;
18: Register_9 = operand(infop, 2)->data;
19: Register_10=psl;
20: Set_psl(r10); /* restore the user psl */
21: asm (" emul r8,r12,r9,r10");
22: asm (" movpsl r8");
23: New_cc (Register_8);
24: result.high = Register_10;
25: result.low = Register_11;
26: write_quadword (infop, result, operand(infop, 3));
27: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.