/* * 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) */
/* modifié pour tourner aussi sur Atari (Eric Reboux: ers@free.fr) */
#include <ext.h>
#include <stdio.h>#include <time.h>
#define ATARI_BOGOMIPS
#define CLOCKS_PER_SEC 200L
#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
#ifdef PORTABLE_BOGOMIPS /* portable version */static void delay_loop (long loops){ long i;
for (i = loops; i >= 0 ; i--);}#endif
#ifdef ATARI_BOGOMIPS /* Atari version (bien adaptée au Pure C ;-) */static void delay_loop (long loops){ do
{
} while ((-- loops) >= 0);
}#endif
int main (void){ unsigned long loops_per_sec = 1; unsigned long ticks; printf ("Calibrating delay loop... "); fflush (stdout); while ((loops_per_sec <<= 1))