|
From: <sv...@va...> - 2010-01-06 10:22:36
|
Author: sewardj
Date: 2010-01-06 10:22:25 +0000 (Wed, 06 Jan 2010)
New Revision: 11018
Log:
Pass sys_cacheflush along to VG_(discard_translations), so we have
transparent zero-cost self-modifying code support on ARM.
Modified:
trunk/coregrind/m_syswrap/syswrap-arm-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-arm-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-arm-linux.c 2010-01-04 21:49:25 UTC (rev 11017)
+++ trunk/coregrind/m_syswrap/syswrap-arm-linux.c 2010-01-06 10:22:25 UTC (rev 11018)
@@ -51,6 +51,7 @@
#include "pub_core_syswrap.h"
#include "pub_core_tooliface.h"
#include "pub_core_stacks.h" // VG_(register_stack)
+#include "pub_core_transtab.h" // VG_(discard_translations)
#include "priv_types_n_macros.h"
#include "priv_syswrap-generic.h" /* for decls of generic wrappers */
@@ -1214,6 +1215,10 @@
{
PRINT("cacheflush (%lx, %#lx, %#lx)",ARG1,ARG2,ARG3);
PRE_REG_READ3(long, "cacheflush", void*, addrlow,void*, addrhigh,int, flags);
+ VG_(discard_translations)( (Addr64)ARG1,
+ ((ULong)ARG2) - ((ULong)ARG1) + 1ULL/*paranoia*/,
+ "PRE(sys_cacheflush)" );
+ SET_STATUS_Success(0);
}
|