home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 2002 January / STC_CD_01_2002.iso / SYSTEM / BOGOMIPS / BOGOMIPS.C next >
C/C++ Source or Header  |  2001-09-19  |  2KB  |  22 lines

  1. /* *                Standalone BogoMips program * * Based on code Linux kernel code in init/main.c and * include/linux/delay_loop.h * * For more information on interpreting the results, see the BogoMIPS * Mini-HOWTO document. * * version: 1.3  *  author: Jeff Tranter (Jeff_Tranter@Mitel.COM) */
  2. /* modifié pour tourner aussi sur Atari (Eric Reboux: ers@free.fr) */
  3.  
  4. #include <ext.h>
  5. #include <stdio.h>#include <time.h>
  6. #define ATARI_BOGOMIPS
  7. #define CLOCKS_PER_SEC 200L
  8.  
  9. #ifdef CLASSIC_BOGOMIPS/* the original code from the Linux kernel */static __inline__ void delay_loop(int loops){  __asm__(".align 2,0x90\n1:\tdecl %0\n\tjns 1b": :"a" (loops):"ax");}#endif#ifdef QNX_BOGOMIPS/* version for QNX C compiler */void delay_loop(int loops);#pragma aux delay_loop = \     "l1:"       \     "dec eax"   \     "jns l1"    \     parm nomemory [eax] modify exact nomemory [eax];#endif
  10. #ifdef PORTABLE_BOGOMIPS    /* portable version */static void delay_loop (long loops){    long i;
  11.     for (i = loops; i >= 0 ; i--);}#endif
  12.  
  13. #ifdef ATARI_BOGOMIPS    /* Atari version (bien adaptée au Pure C ;-) */static void delay_loop (long loops){    do
  14.     {
  15.     } while ((-- loops) >= 0);
  16. }#endif
  17.  
  18. int main (void){    unsigned long loops_per_sec = 1;    unsigned long ticks;    printf ("Calibrating delay loop... ");    fflush (stdout);    while ((loops_per_sec <<= 1))
  19.     {        ticks = clock ();        delay_loop (loops_per_sec);        ticks = clock() - ticks;        if (ticks >= CLOCKS_PER_SEC)
  20.         {            loops_per_sec = (loops_per_sec / ticks) * CLOCKS_PER_SEC;            printf ("ok - %lu.%02lu BogoMips\n", loops_per_sec/500000L, (loops_per_sec/5000) % 100);
  21.             getch ();            return 0;        }    }
  22.     printf ("failed\n");    return -1;}