One of the last things I did the last time I was working on gem5 was to
merge the SE and FS builds of the simulator into one. I didn't really
finish it before I left, though, and in a lot of ways it's still more like
SE and FS glued together than one simulator that happens to do both.

The work being done to support KVM in SE mode reminds me a lot of one of
the things I had wanted to do to blend away one of those seams. What I'd
wanted was to generalize the idea of a System object so that it would load
a payload in whatever way it needed to, be that a Linux kernel or some
processes, or whatever. What the system object would accept as a payload
would depend on what type it was. For instance, there could be an
X86LinuxSystem which would load an x86 Linux kernel as happens in FS mode.
Then there would be an X86FakeLinuxSystem (name up for debate) which would
load stubs for all the OS entry points (syscalls, exceptions). Those would
call into the simulator which would then emulate Linux a la SE mode. From
the simulators perspective they'd just be System objects which do something
to get the system up and running.

That's very similar to what you're doing to support KVM, except that we'd
want to capture all of the OS entry points, and also have psuedoinsts (or
your memory mapped thing) for all of them.

Thoughts?

Gabe
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to