On Wed, Aug 12, 2009 at 9:17 PM, Kevin O'Connor kevin@koconnor.net wrote:
On Wed, Aug 12, 2009 at 03:29:06PM +0800, Jason Wang wrote:
Hi Kevin, The Seabios try to booting usbrom with IPL_TYPE_BEV, which i think should use IPL_TYPE_HARDDISK, right? Followed by BIOS BOOT Specification I think it can add #define IPL_TYPE_USBROM 0x05 to support BCV, how do you think about that?
SeaBIOS is overloading those flags, and I agree it's confusing. The flags for BCV tables are only used in run_bcv(), add_bcv(), and add_bcv_hd(). It's not necessary to add a new flag.
I find that handle_19, do_boot only seek the BEV devices
1. if (bootdev >= IPL.bevcount) { 2. printf("No bootable device.\n"); 3. // Loop with irqs enabled - this allows ctrl+alt+delete to work. 4. for (;;) 5. usleep(1000000); 6. } 7. /* Do the loading, and set up vector as a far pointer to the boot 8. * address, and bootdrv as the boot drive */ 9. struct ipl_entry_s *ie = &IPL.bev[bootdev];
why did not seek IPL.bcv?
On Wed, Aug 12, 2009 at 10:59:51AM +0800, Jason Wang wrote:
I use a BCV now, sorry for messing this two types. Which i use is BCV. I tried to put only an "lretw" in BCV. but still failed.
I don't know why you can't return - it should work. Maybe the stack or gdt/idt was changed?
As before, I'd double check that you've restored the stack, segments, cr0, and gdt/idt.
As above, define a BCV and hook int13 from the BCV handler.
So, BCV handler is used to hook int13, anything else that BCV should do?
That should be it.
-Kevin