This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ia32 bug: cannot use (%esp) as temporary when calling functions...


  Sorry, using (%esp) is a valid way to store zero and restore it in this
case - please ignore the message - the problem I have is elsewhere.

  Etienne.

 --- Etienne Lorrain <etienne_lorrain at yahoo dot fr> a écrit?: 
>   Hello,
> 
>   I am not using the database now because I can not extract a small
>  example. I cannot use gcc-3.1+ to do a working executable of Gujin-0.7
> http://sourceforge.net/projects/gujin/
>   first because of the two bug I submitted today, but also because (at
> least) of the use of (%esp) as temporary.
> 
>   To see what I am talking about, download Gujin (first increment my
>  couters -:)) - the source version at:
> http://prdownloads.sourceforge.net/gujin/gujin-0.7.tgz?download
>  and patch line 511 of boot.h to replace:
>         : "=r" (returned) : "g" (&gujin_param.field));          \
>  by:
>         : "=q" (returned) : "g" (&gujin_param.field));          \
> 
>   Then type "make dep user.o" or "make dep user.s"
>   Then edit user.lis, go to the function VGA_setmode:
> you get:
>  2771                   VGA_setmode:
>  2772 0000 6655                 pushl   %ebp
>  2773 0002 6657                 pushl   %edi
> .......
> 2797 0049 66E8FCFF             call    VGA_getsize
>  2797      FFFF
>  2798 004f 67668904             movl    %eax, (%esp) <<<<<<<<<<<<<<<<<<<<<
>  2798      24
>  2799 0054 6685C0               testl   %eax, %eax
>  2800 0057 75D6                 jne     .L618        ; pop all and return
>  2801 0059 66E8FCFF             call    free_hardwin <<<<<<<<<<<<<<<<<<<<
> ......
>  2836 00d1 6609C2               orl     %eax, %edx
>  2837 00d4 66B80002             movl    $512, %eax
>  2837      0000
>  2838 00da 67668B1C             movl    (%esp), %ebx <<<<<<<<<<<<<<<<<<<
>  2838      24
>  2839                   #APP
>  2840 00df CD10                  int $0x10 # setcursor
>  2841                   #NO_APP
>  2842 00e1 66E8FCFF             call    VGA_VESA_setup_color
> 
>   I do not think this pattern gonna work.
>   Note also that I have few inline assembler in between, like "int $0x10"
>  and I did not see any modifier for the top of the stack in asm() rules...
> 
>   Cheers,
>   Etienne.


___________________________________________________________
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Yahoo! Mail : http://fr.mail.yahoo.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]