--- qemu/roms/seabios/src/apm.c 2018/04/24 17:36:48 1.1 +++ qemu/roms/seabios/src/apm.c 2018/04/24 18:58:51 1.1.1.3 @@ -53,8 +53,8 @@ handle_155301(struct bregs *regs) } // Assembler entry points defined in romlayout.S -extern void apm16protected_entry(); -extern void apm32protected_entry(); +extern void apm16protected_entry(void); +extern void apm32protected_entry(void); // APM 16 bit protected mode interface connect static void @@ -105,6 +105,15 @@ handle_155306(struct bregs *regs) set_success(regs); } +void +apm_shutdown(void) +{ + irq_disable(); + out_str("Shutdown"); + for (;;) + hlt(); +} + // APM Set Power State static void handle_155307(struct bregs *regs) @@ -121,10 +130,7 @@ handle_155307(struct bregs *regs) out_str("Suspend"); break; case 3: - irq_disable(); - out_str("Shutdown"); - for (;;) - hlt(); + apm_shutdown(); break; } set_success(regs); @@ -189,7 +195,7 @@ handle_1553XX(struct bregs *regs) set_unimplemented(regs); } -void VISIBLE16 +void handle_1553(struct bregs *regs) { if (! CONFIG_APMBIOS) { @@ -216,3 +222,17 @@ handle_1553(struct bregs *regs) default: handle_1553XX(regs); break; } } + +void VISIBLE16 +handle_apm16(struct bregs *regs) +{ + debug_enter(regs, DEBUG_HDL_apm); + handle_1553(regs); +} + +void VISIBLE32SEG +handle_apm32(struct bregs *regs) +{ + debug_enter(regs, DEBUG_HDL_apm); + handle_1553(regs); +}