tech-kern archive

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

Re: patch: MFSv3 support (libsa) for boot2 (i386)



Hi,

On Thu, Dec 29, 2011 at 11:20 PM, David Laight <david%l8s.co.uk@localhost> 
wrote:
> On Thu, Dec 29, 2011 at 07:55:18PM +0100, Antoine LECA wrote:
>>
>> David Laight wrote:
>> > The actual 'pc' boot sequence is:
>> > Stages 1-3 (and maybe 4) are common to all OS.
>> <...>
>> > 3) The pbr code has to determine where it was loaded from, it could:
>> >    a) reread sector zero and look for a partition of the relevant type
>> >    b) have the sector number previously written into the sector data.
>>
>>      c)
>> >    The netbsd bootselect mbr passes the sector number in a register
>> >    (non-standard) and the pbr code scans the partitions looking for
>> >    one that starts in the correct place.
> ...
>> I am not sure whether NetBSD currently uses a or c (or a combination of
>> both); ...
>
> Last time I rewrote it, it reread the mbr and located the partition
> (following the extended/logical partition chain) looking for the
> one that starts in the sector passed in (IIRC) %esi. If not found
> it rescans looking for thr first netbsd partition.
>
> I used %esi because it reduced the number of instructions in the mbr!
> The mbr is a work of art!

Magic too :-) I fall into trouble with it. In generated listing (mbr.S):

 518 00f1 E9FE7B                jmp     BOOTADDR

In obj file:
 f1:   e9 fe 7b 5a 8a          jmp    8a5a7cf4 <bss_end+0x8a5a76e4>

In mbr (i.e. after linking):

00000f0  5a e9 0c f3 5a 8a 74 01
                        ^^^^ Address has changed.

I'm porting mbr to MINIX and address isn't changed there. What does
happen in NetBSD on linking stage?


-- 
Evgeniy


Home | Main Index | Thread Index | Old Index