|
From: <sv...@va...> - 2013-10-14 11:41:54
|
Author: sewardj
Date: Mon Oct 14 11:41:46 2013
New Revision: 13637
Log:
PPC32/64: Allow 16 byte icache and dcache lines.
Partial fix for #308135. (chr...@c-...)
Modified:
trunk/coregrind/m_libcproc.c
trunk/coregrind/m_machine.c
Modified: trunk/coregrind/m_libcproc.c
==============================================================================
--- trunk/coregrind/m_libcproc.c (original)
+++ trunk/coregrind/m_libcproc.c Mon Oct 14 11:41:46 2013
@@ -745,7 +745,7 @@
cls = vai.ppc_icache_line_szB;
/* Stay sane .. */
- vg_assert(cls == 32 || cls == 64 || cls == 128);
+ vg_assert(cls == 16 || cls == 32 || cls == 64 || cls == 128);
startaddr &= ~(cls - 1);
for (addr = startaddr; addr < endaddr; addr += cls) {
Modified: trunk/coregrind/m_machine.c
==============================================================================
--- trunk/coregrind/m_machine.c (original)
+++ trunk/coregrind/m_machine.c Mon Oct 14 11:41:46 2013
@@ -486,7 +486,7 @@
if (!test_block[i])
++dcbz_szB;
}
- vg_assert(dcbz_szB == 32 || dcbz_szB == 64 || dcbz_szB == 128);
+ vg_assert(dcbz_szB == 16 || dcbz_szB == 32 || dcbz_szB == 64 || dcbz_szB == 128);
/* dcbzl clears 128B on G5/PPC970, and usually 32B on other platforms */
if (VG_MINIMAL_SETJMP(env_unsup_insn)) {
@@ -504,7 +504,7 @@
if (!test_block[i])
++dcbzl_szB;
}
- vg_assert(dcbzl_szB == 32 || dcbzl_szB == 64 || dcbzl_szB == 128);
+ vg_assert(dcbzl_szB == 16 || dcbzl_szB == 32 || dcbzl_szB == 64 || dcbzl_szB == 128);
}
arch_info->ppc_dcbz_szB = dcbz_szB;
@@ -1541,7 +1541,7 @@
vg_assert(vai.ppc_icache_line_szB == 0
|| vai.ppc_icache_line_szB == szB);
- vg_assert(szB == 32 || szB == 64 || szB == 128);
+ vg_assert(szB == 16 || szB == 32 || szB == 64 || szB == 128);
vai.ppc_icache_line_szB = szB;
}
#endif
@@ -1559,7 +1559,7 @@
vg_assert(vai.ppc_icache_line_szB == 0
|| vai.ppc_icache_line_szB == szB);
- vg_assert(szB == 32 || szB == 64 || szB == 128);
+ vg_assert(szB == 16 || szB == 32 || szB == 64 || szB == 128);
vai.ppc_icache_line_szB = szB;
}
#endif
|