Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: gcc48, drmkms issues with i386

On Wed, Apr 09, 2014 at 09:10:42AM -0500, John D. Baker wrote:
> On Wed, 9 Apr 2014, John D. Baker wrote:
> > disk, the last part of the display actually looked like:
> > 
> > prot_to_real: can't return to 0001296DFn: Diskn
> Should have been:
> prot_to_real: can't return to 000129CD Fn: Diskn
> The amd64-built version behaves the same.  The only difference was the
> address reported in the message above: 00012D19

All the calls to 'prot_to_real' have to reside in the first 64k of
the code area.
The code them bombs out back to the outer loader.

The linker used to manage that, but it might have been relying
on the linker putting object files into a section in the order they
were specified on the command line.

Plausibly prot_to_real could set the real mode $cs value to one
appropriate for the return address.
The calls are all from assembler and are followed by a bios call
and then a call to real_to_prot.

If that were done the /boot code itself could probably be linked with a
virtual base address of 1MB and run with virtual == physical removing
the confusing offset.


David Laight:

Home | Main Index | Thread Index | Old Index