diff options
author | raj <raj@FreeBSD.org> | 2009-05-14 16:48:25 +0000 |
---|---|---|
committer | raj <raj@FreeBSD.org> | 2009-05-14 16:48:25 +0000 |
commit | e648274e7cd96f1e6c180388779d4ba3f74b7c94 (patch) | |
tree | 40f3915c08086a4bbe1a4ba4460c5da9a14e43a5 /sys/powerpc/aim | |
parent | 03b3bbecf2a89655d83d05fd316fc3cbf626860b (diff) | |
download | FreeBSD-src-e648274e7cd96f1e6c180388779d4ba3f74b7c94.zip FreeBSD-src-e648274e7cd96f1e6c180388779d4ba3f74b7c94.tar.gz |
PowerPC common SMP startup and time base rework.
- make mftb() shared, rewrite in C, provide complementary mttb()
- adjust SMP startup per the above, additional comments, minor naming
changes
- eliminate redundant TB defines, other minor cosmetics
Reviewed by: marcel, nwhitehorn
Obtained from: Freescale, Semihalf
Diffstat (limited to 'sys/powerpc/aim')
-rw-r--r-- | sys/powerpc/aim/clock.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/sys/powerpc/aim/clock.c b/sys/powerpc/aim/clock.c index 2d3eb60..0a5391f 100644 --- a/sys/powerpc/aim/clock.c +++ b/sys/powerpc/aim/clock.c @@ -148,22 +148,19 @@ decr_init(void) mtmsr(msr); } +#ifdef SMP void -decr_tc_init(void) +decr_ap_init(void) { - decr_timecounter.tc_frequency = ticks_per_sec; - tc_init(&decr_timecounter); + } +#endif -static __inline u_quad_t -mftb(void) +void +decr_tc_init(void) { - u_long scratch; - u_quad_t tb; - - __asm ("1: mftbu %0; mftb %0+1; mftbu %1; cmpw 0,%0,%1; bne 1b" - : "=r"(tb), "=r"(scratch)); - return tb; + decr_timecounter.tc_frequency = ticks_per_sec; + tc_init(&decr_timecounter); } static unsigned |