1436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include <stdio.h>
2436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
3436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovint main ()
4436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov{
5436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   int out [] = {0, 0};
6436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   unsigned long long in  [] = {0x405EE0A3D70A3D71ULL, 0x3FF0000000000000ULL};
7436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   __asm__ volatile("cfc1       $a1,   $31"         "\n\t"
8436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "ldc1       $f0,   0(%0)"       "\n\t"
9436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "ctc1       $zero, $31"         "\n\t"
10436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "round.w.d  $f0,   $f0"         "\n\t"
11436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "cfc1       $a2,   $31"         "\n\t"
12436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "sw         $a2,   0(%1)"       "\n\t"
13436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "ldc1       $f0,   8(%0)"       "\n\t"
14436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "ctc1       $zero, $31"         "\n\t"
15436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "round.w.d  $f0,   $f0"         "\n\t"
16436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "cfc1       $a2,   $31"         "\n\t"
17436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "sw         $a2,   4(%1)"       "\n\t"
18436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "ctc1       $a1,   $31"         "\n\t"
19436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    :
20436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    : "r" (in), "r" (out)
21436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    : "a1", "a2", "t0", "$f0", "$f1"
22436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                   );
23436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   printf("FCSR::1: 0x%x, 2: 0x%x\n", out[0], out[1]);
24436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   return 0;
25436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}
26