blob: a7cb1068ec816ad33eef84e435f2899bb8d443e8 [file] [log] [blame]
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<unistd.h>
int stckf(unsigned long *addr)
{
int cc;
asm volatile ( ".insn s,0xb27c0000,%0\n"
"ipm %1\n"
"srl %1,28\n"
:"=Q" (*addr), "=d"(cc)::"memory", "cc");
return cc;
}
unsigned long clockticks_in_msec(unsigned long b, unsigned long a)
{
return (b - a) / 4096000UL;
}
int main()
{
int cc;
unsigned long start, end, diff;
cc = stckf(&start);
if (cc)
printf("cc != 0!\n");
sleep(1);
cc = stckf(&end);
if (cc)
printf("cc != 0!\n");
diff = clockticks_in_msec(end, start);
if (diff >= 1000 && diff < 1500)
printf("OK.....Testcase passed\n");
else
printf("FAILED.....Testcase failed\n");
return 0;
}