]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/stckf.c
update
[l4.git] / l4 / pkg / valgrind / src / valgrind-3.6.0-svn / none / tests / s390x / stckf.c
1 #include<stdio.h>
2 #include<time.h>
3 #include<stdlib.h>
4 #include<unistd.h>
5
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
16 unsigned long clockticks_in_msec(unsigned long b, unsigned long a)
17 {
18         return (b - a) / 4096000UL;
19 }
20
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 }