Re: [linux-pm] Re: [rft] s2ram wakeup moves to .c, could fix few machines

Pavel Machek
2008-02-08T21:23:17Z

Hi!

> > > > segments:offsets rear its ugly head here. I need %ds to point to my
> > > > data, and the way to do it is copy it from %cs; that needs start to be
> > > > at 0.
> > >
> > > Hm, why exactly is that necessay?
> >
> > It is not _neccessary_. Try to come up with another method that gets
> > relocations right. I could not :-(.
> >
> > (Actually, putting table at the offset 0 and short jump at beggining
> > of the table would probably do the trick. But that still keeps code at
> > offset 0 :-).
>
> Pavel, can you explain in greater detail exactly what you need?

I do not think I need anything. I'm just explaining why data need to
go at nonzero offset. Nothing to see here, move on ;-).

> It sounds like you are running in real mode with code stored at some
> (unknown?) location in memory. The BIOS calls this code with IP=0 and
> CS=<something>, which apparently doesn't fit your requirements.

> So just what are your requirements? The only possibilities I can think
> of are:
>
> Code stored at a particular location in memory;
>
> CS, IP, etc. initialized to some particular values.
>
> What am I missing?

See arch/x86/kernel/acpi/realmode/wakeup.S (the version that was sent
to the list). No problem there, but table stored at nonzero
offset. Short jump at the beggining of table would fix it (ugly).

Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html