* Copyright (c) 1986 The Regents of the University of California.
* This code is derived from software contributed to Berkeley by
* %sccs.include.redist.c%
* @(#)Aadwc.c 7.1 (Berkeley) %G%
adwc(infop
) process_info
*infop
;
/* Note : the play with 'tmp' just before the 'asm' line makes
/* sure that when the adwc 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_12
, operand(infop
,1) );