Ramon van Handel wrote:
> Outstanding issues:
>
> - For some reason, an aspect of the ICE stopped
> working when the I/O emulation was implemented:
> if you press "ctrl-c" in GDB, it won't stop like
> it's supposed to if you're running the virtcode
> kernel,
Fixed. (needed to be ret>=0 in the main runloop. Stupid.).
> - In kernel/emulate.c, operand_size is passed on
> to the user code when I/O instructions are emulated.
[... but it's never 8]
I think you fixed this Ulrich ?
> - (note to self: fix this) the ICE can't really
> stand being interrupted. If you press ctrl-c
> in ./user while the ICE is active (waiting
> for packets or whatever) all kinds of weird things
> may occur, like it getting into an infinite loop
> or segfaulting. The ICE should be more tolerant
> and abort cleanly in such cases.
Fixed.
Moreover, I added vm_abort() and vm_break() in user.c,
and plugin_abort() and plugin_break() in plugin.c,
and eliminated the global use of the variables break_vm
and abort_vm. The result is better in every way.
>From a few "abuse tests" the user program seems a lot
more stable now.
Patch is attached.
Ramon
patch-miscfix.diff.gz