1
/* Trampoline for i386 CPU */
4
* Copyright 1995-1999 Bruno Haible, <bruno@clisp.org>
6
* This is free software distributed under the GNU General Public Licence
7
* described in the file COPYING. Contact the author if you don't have this
8
* or can't live with it. There is ABSOLUTELY NO WARRANTY, explicit or implied,
12
/* Available registers: %eax, %edx, %ecx. */
14
* On Solaris 2.6, when the function being jumped to is an external symbol of
15
* a shared library, the jump actually points to an ELF indirect jump:
17
* where PTR initially contains the address of some resolving routine which
18
* will replace the PTR contents with the actual code address of the function
19
* and then jump to the function.
20
* Unfortunately, this resolving routine clobbers all three registers:
21
* %eax, %edx, %ecx. Must pass the additional data via the stack.
22
* A simple "pushl $<data>" is not sufficient: it causes trouble if the called
23
* function is compiled with -fomit-frame-pointer.