Alex Richardson 34cc08e336 Save all fpcr/fpsr bits in the AArch64 fenv_t
The existing code masked off all bits that it didn't know about. To be
future-proof, we should save and restore the entire fpcr/fpsr registers.
Additionally, the existing fesetenv() was incorrectly setting the rounding
mode in fpsr instead of fpcr.

This patch stores fpcr in the high 32 bits of fenv_t and fpsr in the low
bits instead of trying to interleave them in a single 32-bit field.

Technically, this is an ABI break if you re-compile parts of your code or
pass a fenv_t between DSOs that were compiled with different versions
of fenv.h. However, I believe we should fix this since the existing code
was broken and passing fenv_t across DSOs should rarely happen.

Reviewed By:	andrew
Differential Revision: https://reviews.freebsd.org/D29160
2021-03-12 17:01:41 +00:00
..
2021-03-03 16:20:29 +00:00
2020-03-26 17:34:17 +00:00
2020-10-07 21:56:58 +00:00
2021-01-07 09:31:03 +00:00
2020-04-19 02:20:39 +00:00
2020-07-19 23:56:19 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2020-04-19 02:18:40 +00:00
2020-11-13 23:18:04 +00:00
2019-12-11 17:37:53 +00:00
2021-03-04 13:32:42 +01:00
2020-09-11 13:28:37 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2020-09-11 13:28:37 +00:00
2019-12-11 17:37:53 +00:00
2020-08-04 21:09:36 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2021-01-07 09:31:03 +00:00
2021-03-04 07:45:48 -07:00
2019-12-11 17:37:53 +00:00
2021-02-23 20:08:10 +02:00
2019-12-11 17:37:53 +00:00
2021-01-13 23:56:18 -06:00
2020-06-17 15:57:59 +00:00
2020-10-09 19:12:44 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2020-06-27 02:17:04 +00:00
2020-01-27 18:04:28 +00:00
2020-09-11 13:28:37 +00:00
2020-06-17 10:42:20 +00:00
2019-12-11 17:37:53 +00:00
2020-10-09 19:12:44 +00:00
2019-12-21 21:01:03 +00:00
2021-02-01 09:32:07 +00:00
2020-10-09 19:12:44 +00:00
2021-01-08 13:58:35 -06:00
2020-10-09 19:12:44 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2020-09-11 13:28:37 +00:00
2020-05-21 01:55:35 +00:00
2019-12-11 17:37:53 +00:00
2020-05-21 21:00:46 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2020-05-12 01:47:33 +00:00
2021-03-01 13:22:15 +00:00
2021-02-18 15:59:34 +01:00