I have found that Bochs is an amazing way to learn about how the Linux
kernel works, since you can watch it and tinker with it in the debugger
without crashing the "real" machine. But now, I am trying to study how
well Linux handles multiple processors, so I'm trying to extend bochs to
handle two or more CPU models with shared memory space.
So far, I have made a few steps in this direction. I made a version the
rombios.c that has the Intel MP Configuration structure (tells how many
processors, what their APIC ID numbers are, etc.) I added a "local APIC"
to the cpu model at 0xfee00000, and Linux is talking to it now as it tries
to boot up the other processors. Now it's time to make an array of BX_CPU
objects instead of just one. This brings me to my real question...
Can anyone tell me what the references to cosimulation are talking about,
or what they are intended to do? There are two processors with separate
memory spaces running the same code, and commands to compare and sync
them. In what situation you use cosimulation? Would it make more sense
for me to use the same structures (bx_dbg_callback[]) to make a
multiprocessor model, or to make my own MP debug routines?
Thanks,
Bryce
P.S. I tried sending this to the bochs developer list but it failed.