Deleted Added
full compact
59c59
< __FBSDID("$FreeBSD: head/sys/powerpc/aim/clock.c 183089 2008-09-16 17:11:33Z marcel $");
---
> __FBSDID("$FreeBSD: head/sys/powerpc/aim/clock.c 192067 2009-05-14 00:34:26Z nwhitehorn $");
128,130c128,129
< int qhandle, phandle;
< char name[32];
< unsigned int msr;
---
> struct cpuref cpu;
> register_t msr;
132,133d130
< phandle = 0;
<
135c132,133
< * Get this info during autoconf? XXX
---
> * Check the BSP's timebase frequency. Sometimes we can't find the BSP, so fall
> * back to the first CPU in this case.
137,146d134
< for (qhandle = OF_peer(0); qhandle; qhandle = phandle) {
< if (OF_getprop(qhandle, "device_type", name, sizeof name) >= 0
< && !strcmp(name, "cpu")
< && OF_getprop(qhandle, "timebase-frequency",
< &ticks_per_sec, sizeof ticks_per_sec) >= 0) {
< /*
< * Should check for correct CPU here? XXX
< */
< msr = mfmsr();
< mtmsr(msr & ~PSL_EE);
148,150c136,137
< ns_per_tick = 1000000000 / ticks_per_sec;
< ticks_per_intr = ticks_per_sec / hz;
< mtdec(ticks_per_intr);
---
> if (platform_smp_get_bsp(&cpu) != 0)
> platform_smp_first_cpu(&cpu);
152c139
< mtmsr(msr);
---
> ticks_per_sec = platform_timebase_freq(&cpu);
154,165c141,148
< break;
< }
< if ((phandle = OF_child(qhandle)))
< continue;
< while (qhandle) {
< if ((phandle = OF_peer(qhandle)))
< break;
< qhandle = OF_parent(qhandle);
< }
< }
< if (!phandle)
< panic("no cpu node");
---
> msr = mfmsr();
> mtmsr(msr & ~PSL_EE);
>
> ns_per_tick = 1000000000 / ticks_per_sec;
> ticks_per_intr = ticks_per_sec / hz;
> mtdec(ticks_per_intr);
>
> mtmsr(msr);