X86_Backend: set fences correctly for memory barriers and synchronization.
This commit is contained in:
parent
0cafcc1af9
commit
a8cbfd9af4
2 changed files with 4 additions and 2 deletions
|
@ -715,10 +715,11 @@ void A32EmitX64::EmitA32SetGEFlagsCompressed(A32EmitContext& ctx, IR::Inst* inst
|
||||||
|
|
||||||
void A32EmitX64::EmitA32DataSynchronizationBarrier(A32EmitContext&, IR::Inst*) {
|
void A32EmitX64::EmitA32DataSynchronizationBarrier(A32EmitContext&, IR::Inst*) {
|
||||||
code.mfence();
|
code.mfence();
|
||||||
|
code.lfence();
|
||||||
}
|
}
|
||||||
|
|
||||||
void A32EmitX64::EmitA32DataMemoryBarrier(A32EmitContext&, IR::Inst*) {
|
void A32EmitX64::EmitA32DataMemoryBarrier(A32EmitContext&, IR::Inst*) {
|
||||||
code.lfence();
|
code.mfence();
|
||||||
}
|
}
|
||||||
|
|
||||||
void A32EmitX64::EmitA32InstructionSynchronizationBarrier(A32EmitContext& ctx, IR::Inst*) {
|
void A32EmitX64::EmitA32InstructionSynchronizationBarrier(A32EmitContext& ctx, IR::Inst*) {
|
||||||
|
|
|
@ -668,10 +668,11 @@ void A64EmitX64::EmitA64InstructionCacheOperationRaised(A64EmitContext& ctx, IR:
|
||||||
|
|
||||||
void A64EmitX64::EmitA64DataSynchronizationBarrier(A64EmitContext&, IR::Inst*) {
|
void A64EmitX64::EmitA64DataSynchronizationBarrier(A64EmitContext&, IR::Inst*) {
|
||||||
code.mfence();
|
code.mfence();
|
||||||
|
code.lfence();
|
||||||
}
|
}
|
||||||
|
|
||||||
void A64EmitX64::EmitA64DataMemoryBarrier(A64EmitContext&, IR::Inst*) {
|
void A64EmitX64::EmitA64DataMemoryBarrier(A64EmitContext&, IR::Inst*) {
|
||||||
code.lfence();
|
code.mfence();
|
||||||
}
|
}
|
||||||
|
|
||||||
void A64EmitX64::EmitA64InstructionSynchronizationBarrier(A64EmitContext& ctx, IR::Inst*) {
|
void A64EmitX64::EmitA64InstructionSynchronizationBarrier(A64EmitContext& ctx, IR::Inst*) {
|
||||||
|
|
Loading…
Reference in a new issue