From mboxrd@z Thu Jan 1 00:00:00 1970 From: john stultz Subject: RE: [PATCHv1 09/12] unicore32 core architecture: timer and time Date: Mon, 03 Jan 2011 11:58:53 -0800 Message-ID: <1294084733.2571.54.camel@work-vm> References: <00d601cba465$27154a70$753fdf50$@mprc.pku.edu.cn> <008f01cbaa62$2001fff0$6005ffd0$@mprc.pku.edu.cn> <00ef01cbab0a$66bfce60$343f6b20$@mprc.pku.edu.cn> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <00ef01cbab0a$66bfce60$343f6b20$@mprc.pku.edu.cn> Sender: linux-kernel-owner@vger.kernel.org To: Guan Xuetao Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-arch.vger.kernel.org On Mon, 2011-01-03 at 13:52 +0800, Guan Xuetao wrote: > > When using clocksource_register_hz(&cksrc_puv3_oscr, CLOCK_TICK_RATE ), > > the shift value become 0, and mult value become 0x838a91a7, and the system will be broken > > after printing "Switching to clocksource oscr". > > > > When using clocksource_register_khz(&cksrc_puv3_oscr, CLOCK_TICK_RATE ), > > the shift value become 0, and mult value become 0x4359611, and the system will run smoothly, > > but timer interrupt seems too frequently. Perhaps it is 4 times faster. > > > > For comparison, originally, when shift value is set to 0x12, the mult value become 1175e5e. > > > > The error is the implementation of do_div() function. > When replacing the arch-specific div64.h with asm-generic/div64.h, clocksource_rigister_hz() works. Oh great! You had me worried I had a bug in the mult/shift calculation. Great to hear all is working now! If you run into other clock/time related troubles, please let me know. thanks -john