| #include<stdio.h> |
| #include<time.h> |
| #include<stdlib.h> |
| #include<unistd.h> |
| |
| int stck(unsigned long *addr) |
| { |
| int cc; |
| asm volatile ( "stck %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 = stck(&start); |
| if (cc) |
| printf("cc != 0!\n"); |
| sleep(1); |
| cc = stck(&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; |
| |
| } |