diff --git a/src/cpu/core_dyn_x86/decoder.h b/src/cpu/core_dyn_x86/decoder.h index 1dd4a19a..d294b661 100644 --- a/src/cpu/core_dyn_x86/decoder.h +++ b/src/cpu/core_dyn_x86/decoder.h @@ -199,9 +199,11 @@ static INLINE void decode_increase_wmapmask(Bitu size) { } } switch (size) { - case 1 : activecb->cache.wmapmask[mapidx]+=0x01; break; - case 2 : (*(Bit16u*)&activecb->cache.wmapmask[mapidx])+=0x0101; break; - case 4 : (*(Bit32u*)&activecb->cache.wmapmask[mapidx])+=0x01010101; break; + case 1: activecb->cache.wmapmask[mapidx] += 0x01; break; + + case 2: host_addw(activecb->cache.wmapmask + mapidx, 0x0101); break; + + case 4: host_addd(activecb->cache.wmapmask + mapidx, 0x01010101); break; } } diff --git a/src/cpu/core_dynrec/decoder_basic.h b/src/cpu/core_dynrec/decoder_basic.h index 9018e5d5..28a17923 100644 --- a/src/cpu/core_dynrec/decoder_basic.h +++ b/src/cpu/core_dynrec/decoder_basic.h @@ -294,9 +294,14 @@ static void INLINE decode_increase_wmapmask(Bitu size) { // update mask entries switch (size) { case 1 : activecb->cache.wmapmask[mapidx]+=0x01; break; - case 2 : (*(Bit16u*)&activecb->cache.wmapmask[mapidx])+=0x0101; break; - case 4 : (*(Bit32u*)&activecb->cache.wmapmask[mapidx])+=0x01010101; break; - } + case 2: + host_addw(activecb->cache.wmapmask + mapidx, 0x0101); + break; + + case 4: + host_addd(activecb->cache.wmapmask + mapidx, 0x01010101); + break; + } } // fetch a byte, val points to the code location if possible,