|
|
@@ -146,13 +146,13 @@ namespace ARMeilleure.Instructions
|
|
|
var exclusive = (accType & AccessType.Exclusive) != 0;
|
|
|
var ordered = (accType & AccessType.Ordered) != 0;
|
|
|
|
|
|
- if (ordered)
|
|
|
- {
|
|
|
- EmitBarrier(context);
|
|
|
- }
|
|
|
-
|
|
|
if ((accType & AccessType.Load) != 0)
|
|
|
{
|
|
|
+ if (ordered)
|
|
|
+ {
|
|
|
+ EmitBarrier(context);
|
|
|
+ }
|
|
|
+
|
|
|
if (size == DWordSizeLog2)
|
|
|
{
|
|
|
// Keep loads atomic - make the call to get the whole region and then decompose it into parts
|
|
|
@@ -219,6 +219,11 @@ namespace ARMeilleure.Instructions
|
|
|
Operand value = context.ZeroExtend32(OperandType.I64, GetIntA32(context, op.Rt));
|
|
|
EmitStoreExclusive(context, address, value, exclusive, size, op.Rd, a32: true);
|
|
|
}
|
|
|
+
|
|
|
+ if (ordered)
|
|
|
+ {
|
|
|
+ EmitBarrier(context);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|