[SerialICE] r87 - trunk/qemu-0.11.0

Stefan Reinauer stepan at coresystems.de
Sun Dec 6 00:31:48 CET 2009


joe at settoplinux.org wrote:
> What does Qemu do when 0xcf9 is sent to bios Stefan?
>
>   

Hi Joe,

The I/O 0xcf9 is the "reset register" on most x86 systems. Writing
certain values to it will cause a hard or soft reset.
Qemu however does not emulate this behavior - as far as I can tell - it
certainly does not while SerialICE is active, because all IO accesses go
to the target (or are caught by LUA)

Basically what's missing in the LUA script to make resets via cf9 work
properly is adding the following to SerialICE_IO_write_filter:

    if port == 0xcf9 and data == 0x06 then
        SerialICE_system_reset()
        return false, data
   end

The serial communication code has been rewritten for the last release to
be quite hick-up safe.. This means Qemu does not get out of sync if the
target reboots, so all that needs to happen after a reboot of the target
is to reboot the VM on the host, too, to let it start at the reset
vector again... Otherwise it'll just try to execute code right after the
out to cf9.. which is usually an endless loop as a safe guard.

Stefan

-- 
coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
      Tel.: +49 761 7668825 • Fax: +49 761 7664613
Email: info at coresystems.dehttp://www.coresystems.de/
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866




More information about the SerialICE mailing list