From: Julian Seward Date: Sat, 18 Feb 2006 21:13:29 +0000 (+0000) Subject: Add a missing case. X-Git-Tag: svn/VALGRIND_3_2_0~260 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7622aee18847d2d10c3fec06a01056169881dfba;p=thirdparty%2Fvalgrind.git Add a missing case. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5656 --- diff --git a/include/valgrind.h b/include/valgrind.h index 7a735a967f..a79a1bf79b 100644 --- a/include/valgrind.h +++ b/include/valgrind.h @@ -518,6 +518,29 @@ typedef lval = (__typeof__(lval)) _res; \ } while (0) +#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[4]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + __asm__ volatile( \ + "pushl 12(%%eax)\n\t" \ + "pushl 8(%%eax)\n\t" \ + "pushl 4(%%eax)\n\t" \ + "movl (%%eax), %%eax\n\t" /* target->%eax */ \ + VALGRIND_CALL_NOREDIR_EAX \ + "addl $12, %%esp\n" \ + : /*out*/ "=a" (_res) \ + : /*in*/ "a" (&_argvec[0]) \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + #define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \ do { \ volatile OrigFn _orig = (orig); \