CTC++ Coverage Report - Execution Profile    #74/1532

Files Summary | Functions Summary | Execution Profile | Index | No Index
First | Previous | Next | Last


File: arch/x86_64/lib/delay.c
Instrumentation mode: function-decision-multicondition
TER: 80 % ( 8/ 10)

Start/ End/    
True False - Line Source

  1 /*
  2  *   Precise Delay Loops for x86-64
  3  *
  4  *   Copyright (C) 1993 Linus Torvalds
  5  *   Copyright (C) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
  6  *
  7  *   The __delay function must _NOT_ be inlined as its execution time
  8  *   depends wildly on alignment on many x86 processors. 
  9  */
  10 
  11 #include <linux/config.h>
  12 #include <linux/sched.h>
  13 #include <linux/delay.h>
  14 #include <asm/delay.h>
  15 #include <asm/msr.h>
  16 
  17 #ifdef CONFIG_SMP
  18 #include <asm/smp.h>
  19 #endif
  20 
 
2926E4   21 int read_current_timer(unsigned long *timer_value)
  22 {
    23    rdtscll(*timer_value);
2926E4 - 23 do-while (0)
2926E4    24    return 0;
  25 }
  26 
 
8652E3 8652E3   27 void __delay(unsigned long loops)
  28 {
  29    unsigned bclock, now;
  30    
  31    rdtscl(bclock);
    32    do
  33    {
  34       rep_nop(); 
  35       rdtscl(now);
  36    }
1888E6 8652E3   37    while((now-bclock) < loops);
  38 }
  39 
 
8652E3 8652E3   40 inline void __const_udelay(unsigned long xloops)
  41 {
  42    __delay((xloops * HZ * cpu_data[raw_smp_processor_id()].loops_per_jiffy) >> 32);
  43 }
  44 
 
2412 2412   45 void __udelay(unsigned long usecs)
  46 {
  47    __const_udelay(usecs * 0x000010c6);  /* 2**32 / 1000000 */
  48 }
  49 
 
- 50 void __ndelay(unsigned long nsecs)
  51 {
  52    __const_udelay(nsecs * 0x00005);  /* 2**32 / 1000000000 (rounded up) */
  53 }
***TER 80% (8/10) of SOURCE FILE delay.c

Files Summary | Functions Summary | Execution Profile | Index | No Index
First | Previous | Next | Last | Top