|
|
1.1 ! root 1: #include "../machine/alignment.h" ! 2: divl2(infop) process_info *infop; ! 3: /* ! 4: /* Arithmetic division, 2 operands. ! 5: /* ! 6: /**************************************/ ! 7: { ! 8: register long Register_12; /* Has to be first reg ! */ ! 9: register long divident, divisor, result; ! 10: ! 11: divisor = operand(infop,0)->data; ! 12: divident = operand(infop,1)->data; ! 13: if (divisor == 0) { ! 14: exception (infop, ARITHMETIC, 2); ! 15: } else { ! 16: Register_12=psl; ! 17: Set_psl(r12); /* restore the user psl */ ! 18: result = divident / divisor; ! 19: asm (" movpsl r12"); ! 20: New_cc (Register_12); ! 21: } ! 22: write_back (infop,result, operand(infop,1)); ! 23: } ! 24: ! 25:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.