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
