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-boxesThanks, I will try that. Because clearing the flags imply pop/push in the stack it could be the problemThat 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