1 #include<stdio.h>
2 #include<time.h>
3 #include<stdlib.h>
4 #include<unistd.h>
5
stckf(unsigned long * addr)6 int stckf(unsigned long *addr)
7 {
8 int cc;
9 asm volatile ( ".insn s,0xb27c0000,%0\n"
10 "ipm %1\n"
11 "srl %1,28\n"
12 :"=Q" (*addr), "=d"(cc)::"memory", "cc");
13 return cc;
14 }
15
clockticks_in_msec(unsigned long b,unsigned long a)16 unsigned long clockticks_in_msec(unsigned long b, unsigned long a)
17 {
18 return (b - a) / 4096000UL;
19 }
20
main()21 int main()
22 {
23
24 int cc;
25 unsigned long start, end, diff;
26
27 cc = stckf(&start);
28 if (cc)
29 printf("cc != 0!\n");
30 sleep(1);
31 cc = stckf(&end);
32 if (cc)
33 printf("cc != 0!\n");
34
35 diff = clockticks_in_msec(end, start);
36 if (diff >= 1000 && diff < 1500)
37 printf("OK.....Testcase passed\n");
38 else
39 printf("FAILED.....Testcase failed\n");
40 return 0;
41
42 }
43