+" leal -12(%ebp), %eax\n" +" .byte 0x64\n" +" movl (0),%ecx\n"
Is it not possible to use the proper %fs prefix instead of having to put a bytecode in manually?
It will likely not build with all assemblers. This is taken from the wine_push_frame() inline assemblercode directly.
+" movl %ecx,(%eax)\n" +" .byte 0x64\n" +" movl %eax,(0)\n" +" movl 20(%ebp), %eax\n" +" pushl %eax\n"
There is no need to move the variable into %eax before pushing, as "pushl 20(%ebp)" will work as shortens the assembly.
I used the assembler code that gcc generated directly. :/
- For i386 this function is implemented in assembler in signal_i386.c.
It seems bad to split the function's implementation up like this? We also now lose the TRACE's that were previously printed from within EXC_CallHandler. If they are superfluous to requirements we might as well delete them from the generic function too.
I did not want to merge the TRACE()s into assembler, because this one might change and thenthe assembler would need to be ported.
They could go from the generic one, yes.
Ciao, Marcus