sb.aqrl
Store Byte Acquire Release
This instruction is defined by:
Synopsis
Store the lowest 8 bits of register xs2 to the address in xs1.
This instruction has both acquire and release semantics. No subsequent memory operations (in program order) from this hart can be observed to occur before this store completes, and no previous memory operations can be observed to occur after this store completes.
The address must be naturally aligned; if not, an address-misaligned or access-fault exception will be raised.
Execution
-
Pruned, XLEN == 64
-
Original
XReg virtual_address = X[xs1];
write_memory_aligned(8, virtual_address, X[xs2][7:0], $encoding, 1'b1, 1'b1);
XReg virtual_address = X[xs1];
if (!is_naturally_aligned(8, virtual_address)) {
raise(ExceptionCode::StoreAmoAddressMisaligned, mode(), virtual_address);
}
write_memory_aligned(8, virtual_address, X[xs2][7:0], $encoding, 1'b1, 1'b1);