diff options
author | marha <marha@users.sourceforge.net> | 2013-10-18 11:23:37 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-10-18 11:23:37 +0200 |
commit | b8a77c943fa53005b6cdb1ab792acf5ff0a131be (patch) | |
tree | e10b1a509f6773de3e547ac5332cf6e0a4e07617 /pixman/test/utils.c | |
parent | 9e23b44bfe1e6e85231b1c07d945cadf0c868648 (diff) | |
download | vcxsrv-b8a77c943fa53005b6cdb1ab792acf5ff0a131be.tar.gz vcxsrv-b8a77c943fa53005b6cdb1ab792acf5ff0a131be.tar.bz2 vcxsrv-b8a77c943fa53005b6cdb1ab792acf5ff0a131be.zip |
mesa pixman git update 18 okt 2013
pixman commit 3c2f4b651747c1ac484c39d5128cae5483094342
mesa commit 9aad1ba70fad7bfa45778faa5a91235f8302264f
Diffstat (limited to 'pixman/test/utils.c')
-rw-r--r-- | pixman/test/utils.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/pixman/test/utils.c b/pixman/test/utils.c index 0cd982e73..281f6b4e2 100644 --- a/pixman/test/utils.c +++ b/pixman/test/utils.c @@ -641,6 +641,32 @@ draw_checkerboard (pixman_image_t *image, } } +static uint32_t +call_test_function (uint32_t (*test_function)(int testnum, int verbose), + int testnum, + int verbose) +{ + uint32_t retval; + +#if defined (__GNUC__) && (defined (__i386) || defined (__i386__)) + __asm__ ( + /* Deliberately avoid aligning the stack to 16 bytes */ + "pushl %1\n\t" + "pushl %2\n\t" + "call *%3\n\t" + "addl $8, %%esp\n\t" + : "=a" (retval) + : "r" (verbose), + "r" (testnum), + "r" (test_function) + : "edx", "ecx"); /* caller save registers */ +#else + retval = test_function (testnum, verbose); +#endif + + return retval; +} + /* * A function, which can be used as a core part of the test programs, * intended to detect various problems with the help of fuzzing input @@ -710,7 +736,9 @@ fuzzer_test_main (const char *test_name, else if (argc >= 2) { n2 = atoi (argv[1]); - checksum = test_function (n2, 1); + + checksum = call_test_function (test_function, n2, 1); + printf ("%d: checksum=%08X\n", n2, checksum); return 0; } @@ -726,7 +754,7 @@ fuzzer_test_main (const char *test_name, #endif for (i = n1; i <= n2; i++) { - uint32_t crc = test_function (i, 0); + uint32_t crc = call_test_function (test_function, i, 0); if (verbose) printf ("%d: %08X\n", i, crc); checksum += crc; |