aboutsummaryrefslogtreecommitdiff
path: root/src/apm.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2008-06-07 14:51:14 -0400
committerKevin O'Connor <kevin@koconnor.net>2008-06-07 14:51:14 -0400
commit0fae9e18fc6c9ae0f6745c38c5363892a776bf03 (patch)
tree3854caf784e4cb739c7d8c6d696553c22899d74f /src/apm.c
parentdb9e65ea4caa530198415ec580b2be05ab7b94fd (diff)
downloadseabios-hppa-0fae9e18fc6c9ae0f6745c38c5363892a776bf03.zip
seabios-hppa-0fae9e18fc6c9ae0f6745c38c5363892a776bf03.tar.gz
seabios-hppa-0fae9e18fc6c9ae0f6745c38c5363892a776bf03.tar.bz2
APM fixes; don't save/clear/restore %esp high bits.
Don't worry about %esp high bits - 16bit protected mode may require the bits to be set. It would be very odd to call into the bios with junk in %esp high bits. Fix 32bit apm entry point. Don't log apm calls 155306/15530b.
Diffstat (limited to 'src/apm.c')
-rw-r--r--src/apm.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/apm.c b/src/apm.c
index 2abf504..19885aa 100644
--- a/src/apm.c
+++ b/src/apm.c
@@ -97,6 +97,13 @@ handle_155305(struct bregs *regs)
set_success(regs);
}
+// APM cpu busy
+static void
+handle_155306(struct bregs *regs)
+{
+ set_success(regs);
+}
+
// APM Set Power State
static void
handle_155307(struct bregs *regs)
@@ -141,12 +148,13 @@ handle_15530a(struct bregs *regs)
set_success(regs);
}
+#define RET_ENOEVENT 0x80
+
// Get PM Event
static void
handle_15530b(struct bregs *regs)
{
- set_fail(regs);
- regs->ah = 0x80; // no event pending
+ set_code_fail_silent(regs, RET_ENOEVENT);
}
// APM Driver Version
@@ -196,6 +204,7 @@ handle_1553(struct bregs *regs)
case 0x03: handle_155303(regs); break;
case 0x04: handle_155304(regs); break;
case 0x05: handle_155305(regs); break;
+ case 0x06: handle_155306(regs); break;
case 0x07: handle_155307(regs); break;
case 0x08: handle_155308(regs); break;
case 0x0a: handle_15530a(regs); break;