Thread (1 message) 1 message, 1 author, 2008-02-07

Re: suspend to ram problem

From: Rafael J. Wysocki <hidden>
Date: 2008-02-07 18:39:18

On Thursday, 7 of February 2008, Pavel Machek wrote:
Hi!
Hi,
quoted
quoted
quoted
quoted
Hmm, maybe I know where problem could be. Try

        movl     $(wakeup_stack - wakeup_code), %esp              # 
Private stack is needed for ASUS bo\

instead of existing stack setup. That helped on one of my test-boxes
Thanks, I will try that.
Because clearing the flags imply pop/push in the stack it could be the 
problem
That doesn't help : it still crash in pushl $0.
All stack stuff in wakeup_code crash for me.
I tried to change the stack position, make sure upper bit of %esp are 
clear, ... nothing work.
What's are strange is that according to my x86 manual, in real mode the 
failure can only happen if the stack wrap which is not the case here.
Any x86 guru advice ?
Could you try the .c wakeup? I changed it a bit, perhaps that's enough.
quoted
If I remove stack access (remove clearing flag stuff, not call to video 
stuff) the resume works.
Actually, I see a possible problem:

_start:
        cli
        cld

        /* Set up segments */
        movw    %cs,%ax
        movw    %ax,%ds
        movw    %ax,%es
        movw    %ax,%ss

        movl    $wakeup_stack_end, %esp

        /* Clear the EFLAGS */
        pushl   $0
        popfl

...if someone calls start as 0x1234:0, we are okay. But if some broken
bios calls us as 0x1:0x234, we've got a problem.
Well, in that case the signature/end_signature tests below would trigger, no?

Rafael
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help