I'm researching about SMP support in Mach microkernel, reading code and reviewing old messages in maillist.
And, exploring old code, I'm find some interesting things:
At first time, I found that Mach 4 also had a implementation of cpu_number() (in kernel/imps/cpu_number.h), with this:
static inline int
return apic_local_unit.unit_id.r >> 24;
Later, also in Mach 4, I found an old implementation of APIC support. This code also existed in gnumach, but was removed in 2009/
I see that this contains interesting structures to read ACPI registers. Why this code was removed? May could be interesting recover It fot SMP support.
Added to this, I've found this another commit from 2007.
In this commit, was added some functions related with SMP support, for cpu booting. This functions are pretty similar to imps.c functions from Mach 4.
But, in cpu_start() function, there are a call to intel_startCPU(). I was searching this function in Mach 4 and gnumach code. but I didn't find It.
What must to do this function? Some months ago, I found a similar function in XNU source code, but It's not trivial. Can you explain me more about this?
If you could to reply my questios, I will be grateful
Also, If someone can explain me about SMP support status in Mach 4, and the diferences with gnumach, It's could be very useful.