1
0
Fork 0

Fix alignment when incrementing the invalidation map

We also eliminate the endian-branch because endian differences are
already taken care of in the host_add* functions.
This commit is contained in:
krcroft 2020-04-11 13:40:13 -07:00 committed by Patryk Obara
parent 0d004f4c60
commit 94c404577d
2 changed files with 8 additions and 28 deletions

View file

@ -151,7 +151,7 @@ public:
}
memset(invalidation_map,0,4096);
}
(*(Bit16u*)&invalidation_map[addr])+=0x101;
host_addw(invalidation_map + addr, 0x101);
InvalidateRange(addr,addr+1);
}
void writed(PhysPt addr,Bitu val){
@ -176,7 +176,7 @@ public:
}
memset(invalidation_map,0,4096);
}
(*(Bit32u*)&invalidation_map[addr])+=0x1010101;
host_addd(invalidation_map + addr, 0x1010101);
InvalidateRange(addr,addr+3);
}
bool writeb_checked(PhysPt addr,Bitu val) {
@ -230,7 +230,7 @@ public:
}
memset(invalidation_map,0,4096);
}
(*(Bit16u*)&invalidation_map[addr])+=0x101;
host_addw(invalidation_map + addr, 0x101);
if (InvalidateRange(addr,addr+1)) {
cpu.exception.which=SMC_CURRENT_BLOCK;
return true;
@ -261,7 +261,7 @@ public:
}
memset(invalidation_map,0,4096);
}
(*(Bit32u*)&invalidation_map[addr])+=0x1010101;
host_addd(invalidation_map + addr, 0x1010101);
if (InvalidateRange(addr,addr+3)) {
cpu.exception.which=SMC_CURRENT_BLOCK;
return true;

View file

@ -171,12 +171,7 @@ public:
invalidation_map=(Bit8u*)malloc(4096);
memset(invalidation_map,0,4096);
}
#if defined(WORDS_BIGENDIAN) || !defined(C_UNALIGNED_MEMORY)
host_writew(&invalidation_map[addr],
host_readw(&invalidation_map[addr])+0x101);
#else
(*(Bit16u*)&invalidation_map[addr])+=0x101;
#endif
host_addw(invalidation_map + addr, 0x101);
InvalidateRange(addr,addr+1);
}
void writed(PhysPt addr,Bitu val){
@ -193,12 +188,7 @@ public:
invalidation_map=(Bit8u*)malloc(4096);
memset(invalidation_map,0,4096);
}
#if defined(WORDS_BIGENDIAN) || !defined(C_UNALIGNED_MEMORY)
host_writed(&invalidation_map[addr],
host_readd(&invalidation_map[addr])+0x1010101);
#else
(*(Bit32u*)&invalidation_map[addr])+=0x1010101;
#endif
host_addd(invalidation_map + addr, 0x1010101);
InvalidateRange(addr,addr+3);
}
bool writeb_checked(PhysPt addr,Bitu val) {
@ -240,12 +230,7 @@ public:
invalidation_map=(Bit8u*)malloc(4096);
memset(invalidation_map,0,4096);
}
#if defined(WORDS_BIGENDIAN) || !defined(C_UNALIGNED_MEMORY)
host_writew(&invalidation_map[addr],
host_readw(&invalidation_map[addr])+0x101);
#else
(*(Bit16u*)&invalidation_map[addr])+=0x101;
#endif
host_addw(invalidation_map + addr, 0x101);
if (InvalidateRange(addr,addr+1)) {
cpu.exception.which=SMC_CURRENT_BLOCK;
return true;
@ -269,12 +254,7 @@ public:
invalidation_map=(Bit8u*)malloc(4096);
memset(invalidation_map,0,4096);
}
#if defined(WORDS_BIGENDIAN) || !defined(C_UNALIGNED_MEMORY)
host_writed(&invalidation_map[addr],
host_readd(&invalidation_map[addr])+0x1010101);
#else
(*(Bit32u*)&invalidation_map[addr])+=0x1010101;
#endif
host_addd(invalidation_map + addr, 0x1010101);
if (InvalidateRange(addr,addr+3)) {
cpu.exception.which=SMC_CURRENT_BLOCK;
return true;