#include <agnix/agnix.h>#include <agnix/console.h>#include <agnix/counters.h>#include <agnix/timer.h>#include <agnix/adi/adi.h>#include <asm/cpu_ops.h>Include dependency graph for bogo.c:

Go to the source code of this file.
Defines | |
| #define | MOD_NAME "BOGO: " |
| #define | LPS_PREC 8 |
Functions | |
| void | __tsc_delay (unsigned long loops) |
| void | __normal_delay (unsigned long loops) |
| void | __delay (unsigned long loops) |
| void __init | _cpu_calibrate_delay (void(*delay_routine)(unsigned long), const char *text) |
| void __init | cpu_calibrate_delay (void) |
Variables | |
| chip_s | cpu_chip |
| int | counter_jiffies_desc |
| unsigned long | loops_per_jiffy = (1<<12) |
|
|
Definition at line 28 of file bogo.c. Referenced by _cpu_calibrate_delay(). |
|
|
|
|
|
Definition at line 56 of file bogo.c. References __normal_delay(), and __tsc_delay(). 00057 {
00058 if (!(read_cr4() & CPU_CR4_TSD))
00059 __tsc_delay(loops);
00060 else
00061 __normal_delay(loops);
00062 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 42 of file bogo.c. References __asm__(). Referenced by __delay(), and cpu_calibrate_delay(). 00043 {
00044 __asm__ __volatile__ (
00045 "jmp 1f\n\t"
00046 ".align 16\n\t"
00047 "1: jmp 2f\n\t"
00048 ".align 16\n\t"
00049 "2: decl %%eax\t\n"
00050 "jns 2b"
00051 :
00052 :"a"(loops)
00053 );
00054 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 30 of file bogo.c. Referenced by __delay(), and cpu_calibrate_delay(). 00031 {
00032 u32 tsc_s[2];
00033 u32 tsc_c[2];
00034
00035 rdtsc(tsc_s[0], tsc_s[1]);
00036
00037 do {
00038 rdtsc(tsc_c[0], tsc_c[1]);
00039 } while ((tsc_c[0] - tsc_s[0]) < loops);
00040 }
|
|
||||||||||||
|
Definition at line 64 of file bogo.c. References counter_jiffies_desc, cpu_chip, loops_per_jiffy, LPS_PREC, and printk(). Referenced by cpu_calibrate_delay(). 00065 {
00066 struct cpu_parm_s *cpu_parm = cpu_parm(&cpu_chip);
00067 u32 ticks, ticks_cur, loopbit;
00068 u32 jiffies_latch[2];
00069 int lps_precision = LPS_PREC;
00070
00071 loops_per_jiffy = (1<<12);
00072
00073 printk("CPU_0: Calibrating delay loop...");
00074 while (loops_per_jiffy <<= 1) {
00075 /* wait for "start" of clock tick */
00076 counter_read(counter_jiffies_desc, jiffies_latch);
00077 ticks = jiffies_latch[0];
00078
00079 do {
00080 counter_read(counter_jiffies_desc, jiffies_latch);
00081 ticks_cur = jiffies_latch[0];
00082 } while(ticks_cur == ticks);
00083
00084 counter_read(counter_jiffies_desc, jiffies_latch);
00085 ticks = jiffies_latch[0];
00086 delay_routine(loops_per_jiffy);
00087
00088 counter_read(counter_jiffies_desc, jiffies_latch);
00089 ticks = jiffies_latch[0] - ticks;
00090 if (ticks)
00091 break;
00092 }
00093
00094 loops_per_jiffy >>= 1;
00095 loopbit = loops_per_jiffy;
00096 while ( lps_precision-- && (loopbit >>= 1) ) {
00097 loops_per_jiffy |= loopbit;
00098
00099 counter_read(counter_jiffies_desc, jiffies_latch);
00100 ticks = jiffies_latch[0];
00101
00102 do {
00103 counter_read(counter_jiffies_desc, jiffies_latch);
00104 ticks_cur = jiffies_latch[0];
00105 } while(ticks_cur == ticks);
00106
00107 counter_read(counter_jiffies_desc, jiffies_latch);
00108 ticks = jiffies_latch[0];
00109 delay_routine(loops_per_jiffy);
00110
00111 counter_read(counter_jiffies_desc, jiffies_latch);
00112 if (jiffies_latch[0] != ticks) /* longer than 1 tick */
00113 loops_per_jiffy &= ~loopbit;
00114 }
00115
00116 cpu_parm->cpu_bogomips = loops_per_jiffy;
00117
00118 printk(" %d.%02d BogoMIPS (%s)\n", loops_per_jiffy/(500000/TIMER_HZ),
00119 (loops_per_jiffy/(5000/TIMER_HZ)) % 100, text);
00120 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 122 of file bogo.c. References __normal_delay(), __tsc_delay(), and _cpu_calibrate_delay(). Referenced by start_kernel(). 00123 {
00124 _cpu_calibrate_delay(__tsc_delay, "fake");
00125 _cpu_calibrate_delay(__normal_delay, "true");
00126 }
Here is the call graph for this function: ![]() |
|
|
Definition at line 18 of file counters_sys.c. Referenced by _cpu_calibrate_delay(), arp_entry_refresh_lock(), counters_sys_init(), rtl_8029_reset(), and timer_irq(). |
|
|
Definition at line 29 of file cpu.c. Referenced by _cpu_calibrate_delay(), cpu_capable(), cpu_print_cpuinfo(), and intel_init(). |
|
|
Definition at line 26 of file bogo.c. Referenced by _cpu_calibrate_delay(). |