[Darwine] Re: Building wine on darwin (resend) (3/6)
stegefin at free.fr
Sat May 22 06:51:19 CDT 2004
I am sorry I meant:
Le 22 mai 04, à 13:20, Pierre d'Herbemont a écrit :
> elif defined(__powerpc__) && defined(__APPLE__)
> 136 __ASM_GLOBAL_FUNC( wine_switch_to_stack,
> 137 "mtctr r3\n\t" /* func -> ctr */
> 138 "mr r3,r4\n\t" /* args -> function param 1 (r3)
> 139 "mr r1,r5\n\t" /* stack */
+139 "add r5,r5,-0xf\n\t" /* adjust the stack
pointer add an extra 16 bits for the function return ptr stored at
and not "0xf" you guessed.
>> I'm not sure what the problem is
"The calling routine’s linkage area holds a number of values, some of
which are saved by the calling routine and some by the called routine.
The elements within the linkage area are as follows:
• The Link Register (LR) value is saved at 8(SP) by the called
routine if it chooses to do so.
• The Condition Register (CR) value may be saved at 4(SP) by the
called routine. As with the Link Register value, the called routine is
not required to save this value."
The trouble is that Tib.StackBase points to the top of the stack frame,
and as the stack grows down, if the function called by
wine_switch_to_stack wants to save its link register it will try to
write at Tib.StackBase+8 which will end up in an error, since the stack
is allocated from Tib.StackBase to (Tib.StackBase - stack_size). And
actually start_process saves its LR.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 3368 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-devel/attachments/20040522/7a8f5ddc/attachment.bin
More information about the wine-devel