Port-i386 archive

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

Re: A bug in pbr.S perhaps



2008/1/13, David Laight <david%l8s.co.uk@localhost>:
> On Sun, Jan 13, 2008 at 10:21:13AM +0800, abutter gao wrote:
> > First, the pbr code rarely goes to no_netbsd_ptn in pbr.S, right ?
> >
> > it will get there when no expected partition is found, and if the ESI
> > register holding the LBA sector number pass by mbr is not zero, maybe
> > there is a netbsd partition, so pbr code will try to clear the ESI
> > register and the lba_sector and then boot the netbsd partition found
> > first.
> >
> > The code is below:
> > ------------------
> > 204 no_netbsd_ptn:
> > 205     /* Specific sector not found: try again looking for first NetBSD 
> > ptn */
> > 206     testl   %esi, %esi
> > 207     set_err(ERR_PTN)
> > 208     jz      error
> > 209     xorl    %esi, %esi
> > 210     movl    %esi, lba_sector
> > 211     jmp     start
> > ------------------
> >
> > But, the start's address is PRIMARY_LOAD_ADDRESS but not 0x7c00, so
> > maybe it will crash when booting the last-checked partition.
>
> No, all jumps and calls are PC-relative inxtructions.
>
>        David
>
> --
> David Laight: david%l8s.co.uk@localhost
>

Yes, I got it after a break, and I think my head was rusty after near
one hour's code reading.

Thanks for you tips and patience.



Home | Main Index | Thread Index | Old Index