* MTD CVS update: 'mtd/grub doc_stage1.S'
@ 2000-06-01 0:49 David Woodhouse
2000-06-01 1:00 ` David Woodhouse
0 siblings, 1 reply; 3+ messages in thread
From: David Woodhouse @ 2000-06-01 0:49 UTC (permalink / raw)
To: cvs-notify
Update of /home/cvs/mtd/grub
In directory infradead.org:/tmp/cvs-serv17114
Modified Files:
doc_stage1.S
Log Message:
Fix the setup of the INT 19h handler so we are no longer using the
previously initialised %es register as the segment address of the vector.
Also fix the segment registers in the actual copy, so that we put the
right stuff in place, rather than starting our copy at 0000:0000.
I can hardly believe that this has ever worked. It seems that by an
amazing coincidence, the IPL ROM sets %es to 0x2000 before jumping to
the code - so even though we were using an uninitialised segment
address pointer, and our copy of the IRQ handler to the _intended_
location went AWOL, we ended up with the INT 19h handler pointing at
the location in memory at which the IPL ROM loads the SPL, before the
SPL relocates itself into the reserved area.
So as long as nothing touched that memory later in the startup sequence,
it would still be there when the BIOS got round to calling INT 19h to
boot. This is why it worked on simple machines like my 386 testbed, but
nothing else.
I hereby declare myself to be Today's Official Mr F*** All Good.
To unsubscribe, send "unsubscribe mtd" to majordomo@infradead.org
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: MTD CVS update: 'mtd/grub doc_stage1.S'
2000-06-01 0:49 MTD CVS update: 'mtd/grub doc_stage1.S' David Woodhouse
@ 2000-06-01 1:00 ` David Woodhouse
0 siblings, 0 replies; 3+ messages in thread
From: David Woodhouse @ 2000-06-01 1:00 UTC (permalink / raw)
To: mtd
dwmw2@infradead.org said:
> Also fix the segment registers in the actual copy, so that we put the
> right stuff in place, rather than starting our copy at 0000:0000.
It seems I lied about this one - that was right in the previous version,
but I removed a 'push cs; pop ds' pair with some debugging cruft and didn't
remember that fact when I later noticed that they ought to be there for
other reasons. The perils of asm hacking at 2am :)
So I'm not _quite_ as stupid as I thought. Close, though. It _was_
copying the handler to the right place, but just pointing the IRQ vector at
the old location.
Oh well, it ought to work now. Now we just need to finish hacking Grub so
it can boot a kernel off the NFTL. So far, it finds the hardware and scans
if for an NFTL Media Header. The rest should be simple.
--
dwmw2
To unsubscribe, send "unsubscribe mtd" to majordomo@infradead.org
^ permalink raw reply [flat|nested] 3+ messages in thread
* MTD CVS update: 'mtd/grub doc_stage1.S'
@ 2000-05-05 12:12 David Woodhouse
0 siblings, 0 replies; 3+ messages in thread
From: David Woodhouse @ 2000-05-05 12:12 UTC (permalink / raw)
To: cvs-notify
Update of /home/cvs/mtd/grub
In directory infradead.org:/tmp/cvs-serv15143
Modified Files:
doc_stage1.S
Log Message:
Fix inthandler setup so it stores segment:offset for the _same_
software interrupt, rather than storing the segment of our new inthandler
in the INT 19h segment location, and the offset of it in the INT 18h
segment location - a practice which tends to mean that neither INT18h or
INT19h actually do anything useful.
To unsubscribe, send "unsubscribe mtd" to majordomo@infradead.org
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2000-06-01 1:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2000-06-01 0:49 MTD CVS update: 'mtd/grub doc_stage1.S' David Woodhouse
2000-06-01 1:00 ` David Woodhouse
-- strict thread matches above, loose matches on Subject: below --
2000-05-05 12:12 David Woodhouse
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox