Merge in function wrapping support from the FNWRAP branch. That
branch hereby becomes inactive. This currently breaks everything
except x86; fixes for amd64/ppc32 to follow.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5520 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/pub_core_dispatch.h b/coregrind/pub_core_dispatch.h
index 25e80cb..aebf210 100644
--- a/coregrind/pub_core_dispatch.h
+++ b/coregrind/pub_core_dispatch.h
@@ -56,18 +56,40 @@
This code simply handles the common case fast -- when the translation
address is found in the translation cache. For anything else, the
scheduler does the work.
+
+ NOTE, VG_(run_innerloop) MUST NOT BE USED for noredir translations.
+ Instead use VG_(run_a_noredir_translation).
*/
extern
UWord VG_(run_innerloop) ( void* guest_state, UWord do_profiling );
-
#if defined(VGA_x86) || defined(VGA_amd64)
/* We need to locate a couple of labels inside VG_(run_innerloop), so
that Vex can add branches to them from generated code. Hence the
- following somewhat bogus decls. At least on x86 and amd64. */
+ following somewhat bogus decls. At least on x86 and amd64. ppc32
+ and ppc64 use straightforward bl-blr to get from dispatcher to
+ translation and back and so do not need these labels. */
extern void VG_(run_innerloop__dispatch_unprofiled);
extern void VG_(run_innerloop__dispatch_profiled);
#endif
+
+/* Run a no-redir translation. argblock points to 4 UWords, 2 to carry args
+ and 2 to carry results:
+ 0: input: ptr to translation
+ 1: input: ptr to guest state
+ 2: output: next guest PC
+ 3: output: guest state pointer afterwards (== thread return code)
+ MUST NOT BE USED for non-noredir (normal) translations.
+*/
+extern void VG_(run_a_noredir_translation) ( volatile UWord* argblock );
+#if defined(VGA_x86) || defined(VGA_amd64)
+/* We need to a label inside VG_(run_a_noredir_translation), so that
+ Vex can add branches to them from generated code. Hence the
+ following somewhat bogus decl. */
+extern void VG_(run_a_noredir_translation__return_point);
+#endif
+
+
#endif // __PUB_CORE_DISPATCH_H
/*--------------------------------------------------------------------*/