Implement basic "eoi_jmp_post" code to post step.

This commit is contained in:
Kevin O'Connor 2008-03-01 14:02:41 -05:00
parent e78cc6c6c3
commit d427a3f85a
2 changed files with 18 additions and 5 deletions

View File

@ -52,8 +52,11 @@ struct bios_data_area_s {
u8 floppy_return_status[7];
u8 other1[0x7];
// 40:50
u8 other2[0x1c];
// 40:6c
u8 other2[0x10];
// 40:60
u8 other3[0x7];
u32 jump_cs_ip;
u8 dummy;
u32 timer_counter;
// 40:70
u8 timer_rollover;

View File

@ -548,6 +548,19 @@ init_dma()
outb(0x00, PORT_DMA2_MASK_REG);
}
static void
eoi_jmp_post()
{
// XXX - this is supposed to jump without changing any memory -
// but the stack has been altered by the time the code gets here.
eoi_both_pics();
struct bregs br;
memset(&br, 0, sizeof(br));
br.cs = bda->jump_cs_ip >> 16;
br.ip = bda->jump_cs_ip;
call16(&br);
}
static void
check_restart_status()
{
@ -559,11 +572,8 @@ check_restart_status()
// Normal post
return;
// XXX
#if 0
if (status == 0x05)
eoi_jmp_post();
#endif
BX_PANIC("Unimplemented shutdown status: %02x\n",(Bit8u)status);
}