revert android-tegra-2.6.36-honeycomb-mr1-9001adc to v2.6.36
[firefly-linux-kernel-4.4.55.git] / arch / s390 / lib / delay.c
index 7c37ec359ec29ad40fc2cf47642316ac3cbba8bc..752b362bf651d7e1bdf84a3f54601ddf863e8b12 100644 (file)
@@ -29,21 +29,17 @@ static void __udelay_disabled(unsigned long long usecs)
 {
        unsigned long mask, cr0, cr0_saved;
        u64 clock_saved;
-       u64 end;
 
-       mask = psw_kernel_bits | PSW_MASK_WAIT | PSW_MASK_EXT;
-       end = get_clock() + (usecs << 12);
        clock_saved = local_tick_disable();
+       set_clock_comparator(get_clock() + (usecs << 12));
        __ctl_store(cr0_saved, 0, 0);
        cr0 = (cr0_saved & 0xffff00e0) | 0x00000800;
        __ctl_load(cr0 , 0, 0);
+       mask = psw_kernel_bits | PSW_MASK_WAIT | PSW_MASK_EXT;
        lockdep_off();
-       do {
-               set_clock_comparator(end);
-               trace_hardirqs_on();
-               __load_psw_mask(mask);
-               local_irq_disable();
-       } while (get_clock() < end);
+       trace_hardirqs_on();
+       __load_psw_mask(mask);
+       local_irq_disable();
        lockdep_on();
        __ctl_load(cr0_saved, 0, 0);
        local_tick_enable(clock_saved);