aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2008-03-01 14:02:41 -0500
committerKevin O'Connor <kevin@koconnor.net>2008-03-01 14:02:41 -0500
commitd427a3f85aa7dc136d98cdb1ac242f875ed35fa7 (patch)
treeb3a5752100a9e903b03f8dc0a84f25cde833ba45
parente78cc6c6c3c5991de45642a01f421276767acf05 (diff)
downloadseabios-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.h7
-rw-r--r--src/post.c16
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;
diff --git a/src/post.c b/src/post.c
index ce7c9fb..e566e83 100644
--- a/src/post.c
+++ b/src/post.c
@@ -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);
}