aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mn10300/kernel/time.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mn10300/kernel/time.c')
-rw-r--r--arch/mn10300/kernel/time.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/mn10300/kernel/time.c b/arch/mn10300/kernel/time.c
index 8f7f6d22783d..0b5c856b4266 100644
--- a/arch/mn10300/kernel/time.c
+++ b/arch/mn10300/kernel/time.c
@@ -54,6 +54,9 @@ unsigned long long sched_clock(void)
54 unsigned long tsc, tmp; 54 unsigned long tsc, tmp;
55 unsigned product[3]; /* 96-bit intermediate value */ 55 unsigned product[3]; /* 96-bit intermediate value */
56 56
57 /* cnt32_to_63() is not safe with preemption */
58 preempt_disable();
59
57 /* read the TSC value 60 /* read the TSC value
58 */ 61 */
59 tsc = 0 - get_cycles(); /* get_cycles() counts down */ 62 tsc = 0 - get_cycles(); /* get_cycles() counts down */
@@ -64,6 +67,8 @@ unsigned long long sched_clock(void)
64 */ 67 */
65 tsc64.ll = cnt32_to_63(tsc) & 0x7fffffffffffffffULL; 68 tsc64.ll = cnt32_to_63(tsc) & 0x7fffffffffffffffULL;
66 69
70 preempt_enable();
71
67 /* scale the 64-bit TSC value to a nanosecond value via a 96-bit 72 /* scale the 64-bit TSC value to a nanosecond value via a 96-bit
68 * intermediate 73 * intermediate
69 */ 74 */