Elliott Hughes | a0664b9 | 2017-04-18 17:46:52 -0700 | [diff] [blame^] | 1 | #if defined(__mips_hard_float) |
| 2 | |
dejanj | 4164a81 | 2013-09-18 10:08:23 +0000 | [diff] [blame] | 3 | #include <stdio.h> |
| 4 | |
| 5 | int main () |
| 6 | { |
| 7 | int out [] = {0, 0}; |
dejanj | 24f0c3a | 2014-02-19 11:57:22 +0000 | [diff] [blame] | 8 | unsigned long long in [] = {0x405EE0A3D70A3D71ULL, 0x3FF0000000000000ULL}; |
dejanj | 4164a81 | 2013-09-18 10:08:23 +0000 | [diff] [blame] | 9 | __asm__ volatile("cfc1 $a1, $31" "\n\t" |
dejanj | 24f0c3a | 2014-02-19 11:57:22 +0000 | [diff] [blame] | 10 | "ldc1 $f0, 0(%0)" "\n\t" |
dejanj | 4164a81 | 2013-09-18 10:08:23 +0000 | [diff] [blame] | 11 | "ctc1 $zero, $31" "\n\t" |
| 12 | "round.w.d $f0, $f0" "\n\t" |
| 13 | "cfc1 $a2, $31" "\n\t" |
dejanj | 24f0c3a | 2014-02-19 11:57:22 +0000 | [diff] [blame] | 14 | "sw $a2, 0(%1)" "\n\t" |
| 15 | "ldc1 $f0, 8(%0)" "\n\t" |
dejanj | 4164a81 | 2013-09-18 10:08:23 +0000 | [diff] [blame] | 16 | "ctc1 $zero, $31" "\n\t" |
| 17 | "round.w.d $f0, $f0" "\n\t" |
| 18 | "cfc1 $a2, $31" "\n\t" |
dejanj | 24f0c3a | 2014-02-19 11:57:22 +0000 | [diff] [blame] | 19 | "sw $a2, 4(%1)" "\n\t" |
dejanj | 4164a81 | 2013-09-18 10:08:23 +0000 | [diff] [blame] | 20 | "ctc1 $a1, $31" "\n\t" |
| 21 | : |
dejanj | 24f0c3a | 2014-02-19 11:57:22 +0000 | [diff] [blame] | 22 | : "r" (in), "r" (out) |
dejanj | 4164a81 | 2013-09-18 10:08:23 +0000 | [diff] [blame] | 23 | : "a1", "a2", "t0", "$f0", "$f1" |
| 24 | ); |
| 25 | printf("FCSR::1: 0x%x, 2: 0x%x\n", out[0], out[1]); |
| 26 | return 0; |
| 27 | } |
Elliott Hughes | a0664b9 | 2017-04-18 17:46:52 -0700 | [diff] [blame^] | 28 | #else |
| 29 | int main() { |
| 30 | return 0; |
| 31 | } |
| 32 | #endif |