1*45699Sbostic /* Asub3.c 1.2 90/12/04 */ 229638Ssam 3*45699Sbostic #include "align.h" 429638Ssam sub3(infop) process_info *infop; 529638Ssam /* 629638Ssam /* Subtract , 3 operands. 729638Ssam /* 829638Ssam /*****************************************/ 929638Ssam { 1029638Ssam 1129638Ssam register long Register_12; /* Has to be first reg ! */ 1229638Ssam register long data0, data1, result; 1329638Ssam 1429638Ssam data0 = operand(infop,0)->data; 1529638Ssam data1 = operand(infop,1)->data; 1629638Ssam Register_12=psl; 1729638Ssam Set_psl(r12); /* restore the user psl */ 1829638Ssam result = data1 - data0; /* 32 bits of true result */ 1929638Ssam asm (" movpsl r12"); 2029638Ssam New_cc (Register_12); 2129638Ssam write_back (infop,result, operand(infop,2) ); 2229638Ssam } 23