*BSD News Article 2453


Return to BSD News archive

Newsgroups: comp.unix.bsd
Path: sserve!manuel!munnari.oz.au!uunet!super!rminnich
From: rminnich@super.org (Ronald G Minnich)
Subject: wdbootblk.c
Message-ID: <1992Jul24.173003.12119@super.org>
Sender: news@super.org (USENET News System)
Nntp-Posting-Host: b117
Organization: Supercomputing Research Center (Bowie, MD)
Date: Fri, 24 Jul 1992 17:30:03 GMT
Lines: 39


on 0.0, i was looking at wdbootblk.c to see why i could not boot a 
> 400k kernel. Now this may not apply to 0.1 source, i don't have that up
yet, but it is interesting. My copy of wdbootblk.c copies itself up to 0x70000
so that there is room for the kernel, but:
reloc:
        movl    $ BIOSRELOC,%esi
        movl    $ RELOC,%edi
        movl    $512,%ecx
        rep
        movsb
 movl $0x60000,%esp
        pushl   $dodisk
        ret

note that the stack is set up at 0x60000, which is below the end address
of a kernel bigger than 393216 bytes! once we read in the kernel 
the stack is now hash. I expect that this is the cause of my 
woe. Anyone see a problem putting the stack at RELOC? i.e. stack top is 
at RELOC, which is ok as the first thing we do is a pushl. 

so it might look like:
reloc:
        movl    $ BIOSRELOC,%esi
        movl    $ RELOC,%edi
        movl    $512,%ecx
        rep
        movsb
	movl $ RELOC, %esp
        pushl   $dodisk
        ret


ron
-- 
--------------------------------------------------------------------------------
satisfaction: the feeling you get when you        | rminnich@super.org
run newfs on a DOS disk so you can install 386BSD.| (301)-805-7451
Now if only I could do this to AIX on the RS/6k ...|