/* Asbwc.c 1.1 86/07/20 */
#include "../tahoealign/align.h"
sbwc(infop
) process_info
*infop
;
/* Note : the play with 'tmp' just before the 'asm' line makes
/* sure that when the sbwc opcode is executed, the current
/* carry in psl is the same as the 'offending' process'.
/* Don't change unless you know exactly what you're doing.
/*****************************/
register long Register_12
; /* Has to be first reg ! */
register long Register_11
;
register long Register_10
;
Register_12
= operand(infop
,0)->data
;
Register_11
= operand(infop
,1)->data
;
if (carry
) /* If process' carry set */
tmp
++; /* 0 => carry set. 1 => carry clear */
Set_psl(r10
); /* restore the user psl */
write_back(infop
, Register_11
, operand(infop
,1) );