On 5/9/06, Christian Sühs chris@suehsi.de wrote:
If I understand these mess right, normally this function is called by device operations. i.e initializing. But these happens on enabled devices, only. cpu_dev_ops seems to be a special case.
Its a maze of little passages linked only by function pointers.
But I think you are correct. I don't think x86_enable_cache() is getting called.
If you look at the northbridge.c for the gx1 you will see that initialize_cpus() is called by cpu_bus_init() which is in the cpu_bus_ops struct. But cpu_bus_ops only gets installed as the init handler in enable_dev() if the device is marked as DEVICE_PATH_APIC_CLUSTER. Looking in the static.c that my tree generates for the 5bcm I see that the gx1 northbridge is marked as DEVICE_PATH_PCI_DOMAIN which will cause the .init handler to be 0.
Apply the following patch to your tree and run in spew debug mode. This will show if initialize_cpus() is getting called or not. Perhaps its getting called by some other path that I don't see.
You can also try adding x86_enable_cache() into the northbridge_init() function but you will probally need to include the cpu/x86/cache.h file and perhaps some other header files.
-- Richard A. Smith