|
|
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.