diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2008-03-01 14:02:41 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2008-03-01 14:02:41 -0500 |
commit | d427a3f85aa7dc136d98cdb1ac242f875ed35fa7 (patch) | |
tree | b3a5752100a9e903b03f8dc0a84f25cde833ba45 | |
parent | e78cc6c6c3c5991de45642a01f421276767acf05 (diff) | |
download | seabios-hppa-d427a3f85aa7dc136d98cdb1ac242f875ed35fa7.zip seabios-hppa-d427a3f85aa7dc136d98cdb1ac242f875ed35fa7.tar.gz seabios-hppa-d427a3f85aa7dc136d98cdb1ac242f875ed35fa7.tar.bz2 |
Implement basic "eoi_jmp_post" code to post step.
-rw-r--r-- | src/biosvar.h | 7 | ||||
-rw-r--r-- | src/post.c | 16 |
2 files changed, 18 insertions, 5 deletions
diff --git a/src/biosvar.h b/src/biosvar.h index 0dd603b..a5afe54 100644 --- a/src/biosvar.h +++ b/src/biosvar.h @@ -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; @@ -549,6 +549,19 @@ init_dma() } 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() { // Get and then clear CMOS shutdown 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); } |