Re: Cycle counter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for the help. This program is not running in linux, it is running as a
single application on the core. The processor is a 4kc. I tried your code and it
works fine. I just deleted your do_something() so the timer starts and stops
immediatly. I get 21 ticks now rather than the 8000 or so I was getting with my
code which is much more realistic.





On Fri, 13 Sep 2002 09:41:27 -0700 (PDT)
Richard Hodges <rh@matriplex.com> wrote:

> On Fri, 13 Sep 2002, Gareth wrote:
> 
> > Another question reagarding the mips malta board. I am wanting to be
> > able to find out how many cycles a certain loop takes to execute. I
> > understand there is a cycle counter built into the processor that I
> > want to use for this. I have a bit of inline assembly to do the job
> > but the results I am getting are not consistent so i think there is
> > probably something wrong with my attempt at the inline assembly. Here
> > is the code :
> 
> >   void al_signal_start(void)
> >   {
> > 	  int zero,temp;
> > 	  __asm__("move $2, $zero");
> > 	  __asm__("nop");
> >           __asm__("mtc0 $2, $9" :  : "r" (temp));
> 
> Is this from user space?  If so, this may fail from user space.  (I sure
> hope it does!)
>  
> > As you can see, main just starts and stops the counter with no
> > instructions in between. I expexcted the cycle count to be zero or
> > close to it because of the instructions required to get the count but
> > this is not the case. I am getting numbers like 8499. Is there just
> > something wrong with my assembly or is there something else I am
> > missing?
> 
> Try something like this:
> 
> #define GET_CLOCK(var){__asm__ volatile("mfc0 %0,$9":"=r"(var));}
> {
> 	unsigned int clock1, clock2;
> 
> 	GET_CLOCK(clock1);
> 	do_something();
> 	GET_CLOCK(clock2);
> 
> 	printf("ticks = %d\n", clock2 - clock1);
> }
> 
> -Richard
> 
> 
> 


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux