LOCKSET

Instruction: Set lock to true and get its previous state.

LOCKSET ID


Result: Optionally, previous state of lock is written to C flag.

  • ID (d-field) is the register containing the ID (0 – 7) of the lock to set.

Opcode Table:

–INSTR–   ZCR  I–CON–    –DEST–        –SRC–

Z Result

C Result

Result

Clocks

  000011    0001    1111    ddddddddd    ------110

ID = 0

Prior Lock State

Not Written

8..23

Concise Truth Table:

In

Out

Destination

Source1

Z

C

Effects

Destination2, 3

Z

C

$0000_0005; 5

%0_00000110; 6

-

-

wr wz wc

$0000_0005; 5

0

0

$0000_0005; 5

%0_00000110; 6

-

-

wr wz wc

$0000_0005; 5

0

14

$0000_0000; 0

%0_00000110; 6

-

-

wr wz wc

$0000_0000; 0

1

0

$0000_0000; 0

%0_00000110; 6

-

-

wr wz wc

$0000_0000; 0

1

14

$0000_0008; 8 5

%0_00000110; 6

-

-

wr wz wc

$0000_0000; 0

1

14

1 Source is automatically set to immediate value 6 by the assembler to indicate that this is the LOCKSET hub instruction.
2 Destination is not written unless the WR effect is given.
3 Destination Out (written Destination) indicates the ID of the lock bit that was set.
4 The C flag indicates the previous state of the lock bit; in these cases the lock bit was already set from the previous example.
5 Only the lowest 3 bits of Destination In are utilized, so a value of 8 is seen as lock bit ID 0.

Explanation

LOCKSET is one of four lock instructions (LOCKNEW, LOCKRET, LOCKSET, and LOCKCLR) used to manage resources that are user-defined and deemed mutually exclusive. LOCKSET sets the lock described by the register ID to one (1) and returns the previous state of that lock in the C flag; if the WC effect is specified. The LOCKSET instruction behaves similar to Spin's LOCKSET command; see LOCKSET.

If the WZ effect is specified, the Z flag is set (1) if the ID of the set lock is zero (0). If the WC effect is specified, the C flag is set equal to the previous state of the lock. If the WR effect is specified, the ID of the set lock is written to ID.

LOCKSET is a hub instruction. Hub instructions require 8 to 23 clock cycles to execute depending on the relation between the cog's hub access window and the instruction's moment of execution. See Hub for more information.

Unless otherwise noted, content on this site is licensed under the
Creative Commons Attribution-ShareAlike 4.0 International License.