msgsync
Message Synchronize
msgsync
Provides an ordering function for stores relative to data accesses by other threads after a Directed Ultravisor Doorbell or Directed Hypervisor Doorbell interrupt.
Encoding
Binary Layout
31
0:5
/
6:10
/
11:15
/
16:20
894
21:30
/
31
Operands
Related
More in Privileged
Reference
View in PowerISA v3.1C Specification ↗
OPF Power ISA v3.1C
Description
Provides memory ordering semantics for stores relative to data accesses by other threads following a Directed Ultravisor Doorbell or Directed Hypervisor Doorbell interrupt. This privileged instruction acts as a synchronization point with no operands.
Operation
// Memory synchronization point for message-based interrupts
Memory_Synchronize()
Programming Note
When used in conjunction with msgsndu or msgsnd, Synchronize with L = 0 or 2 is executed on the thread that will execute the msgsndu or msgsnd, and msgsync is executed on another thread, typically the thread that is the target of the msgsndu or msgsnd, but possibly any other thread (partly because the software that services the Directed Ultravisor Doorbell or Directed Hypervisor Doorbell interrupt may ultimately run on a thread other than that which received the exception). The Synchronize precedes the msgsndu or msgsnd; the msgsync is executed after the Directed Ultravisor Doorbell or Directed Hypervisor Doorbell interrupt occurs, and precedes all instructions that need to 'see' the values stored by the stores that are in set A of the memory barrier created by the Synchronize.