/sys$common/syshlp/helplib.hlb MACRO, VAX MACRO Assembler, Instructions, REMQHI *Conan The Librarian (sorry for the slow response - running on an old VAX) |
Purpose: Remove entry from queue at head, interlocked Format: opcode header.aq,addr.wl Operation: if {removal succeded} then begin N <- 0; Z <- (header) EQL (entry+4);! Queue empty after interval V <- {queue empty before this instruction}; C <- 0; end; else begin N <- 0; Z <- 0; V <- 1; ! Did not remove anything C <- 1; ! Secondary interlock failed end; Exceptions: Reserved operand Opcode: 5E REMQHI Remove entry from queue at head, interlocked Description: If the secondary interlock is clear, the queue entry following the header is removed from the queue and the address operand is replaced by the address of the entry removed. If the queue was empty prior to this instruction, or if the secondary interlock failed, the V-bit is set; otherwise it is cleared. If the interlock succeded and the queue is empty at the end of this instruction, the Z-bit is set; otherwise it is cleared. The removal is a noninterruptable operation. The entire operation is validated before any portion of it is attempted. The queue will be left in a consistent state if a memory management violation occurs.
|