Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/arch/i386/stand/pxeboot
On Sun, Oct 20, 2013 at 07:49:55PM +0100, David Laight wrote:
> On Sat, Oct 19, 2013 at 08:16:16PM -0400, Christos Zoulas wrote:
> > Module Name: src
> > Committed By: christos
> > Date: Sun Oct 20 00:16:16 UTC 2013
> >
> > Modified Files:
> > src/sys/arch/i386/stand/pxeboot: pxe_call.S
> >
> > Log Message:
> > Move an instruction above .code16 so that it produces an R_386_32 instead
> > of an R_386_16 relocation, which is truncated to fit. XXX: untested.
>
> Broken - it would have to be moved to before the call to prot_to_real.
Actually, if the value is more that 2^16 it is all broken anyway.
When I changed the disk /boot so that it could exceed 64k I didn't
change pxeboot (because I couldn't test it).
From the code in pxe_call.S it looks as though %cs, %ds, %es (and maybe %ss)
all have to be the same.
If you look at the disk (etc) bios calls you'll see that they set %ds/%es
correctly for the 32bit (well 20bit) linear address - which this code
doesn't do.
So the value has to fit in an R_386_16 relocation.
If it doesn't, it migth explain some of the panics in the pxe code.
David
--
David Laight: david%l8s.co.uk@localhost
Home |
Main Index |
Thread Index |
Old Index