|
Description
|
if you try to boot the sn1 brand on a sparc plaform where NCPU > 31, things will
go south very quickly. the reason is that the brand module trap code uses the
CPU_ADDR macro, which relies on the CPU_INDEX macro, which is dependant upon
CPU_MASK. CPU_MASK can vary between platforms and on large platforms (like
starcat) it can be well above 31. this causes the brand trap code to wander
off into the weeds and the machine panics. either a seperate brand module
needs to be delivered for each platform, or the code that's dependant upon
NCPUs needs to be moved out of the brand module.
rather than delivering a seperate brand modulde for every platform, the fix
for this bug involves removing the use of the CPU macros from the brand
module and instead looking up the address of the current cpu structure in the
trap table code and passing it to the brand callback module as a parameter
(stored in %g2).
|