[Darwine] Re: Building wine on darwin (resend) (3/6)

Pierre d'Herbemont 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 :
>
> libs/wine/port.c
> --------------
> 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  
8(SP) */

and not "0xf" you guessed.

>> I'm not sure what the problem is

According to:
http://developer.apple.com/documentation/DeveloperTools/Conceptual/ 
MachORuntime/index.html?http://developer.apple.com/documentation/ 
DeveloperTools/Conceptual/MachORuntime/2rt_powerpc_abi/ 
chapter_9_section_5.html

"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.

Pierre
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
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 mailing list