diff options
author | Marcus Shawcroft <marcus.shawcroft@arm.com> | 2014-03-07 14:05:20 +0000 |
---|---|---|
committer | Marcus Shawcroft <marcus.shawcroft@arm.com> | 2014-03-07 14:05:20 +0000 |
commit | 302949e2940a9da3f6364a1574619e621b7e1e71 (patch) | |
tree | 584f5e0c4fe14716a318fe8745b2c79554115957 /sysdeps/aarch64/fpu/feenablxcpt.c | |
parent | 6f99f280b00a30b8f0a89a4be1adb2bea41e2954 (diff) | |
download | glibc-302949e2940a9da3f6364a1574619e621b7e1e71.tar.gz glibc-302949e2940a9da3f6364a1574619e621b7e1e71.tar.xz glibc-302949e2940a9da3f6364a1574619e621b7e1e71.zip |
[PATCH] [AArch64] Optional trapping exceptions support.
Trapping exceptions in AArch64 are optional. The relevant exception control bits in FPCR are are defined as RES0 hence the absence of support can be detected by reading back the FPCR and comparing with the desired value.
Diffstat (limited to 'sysdeps/aarch64/fpu/feenablxcpt.c')
-rw-r--r-- | sysdeps/aarch64/fpu/feenablxcpt.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/sysdeps/aarch64/fpu/feenablxcpt.c b/sysdeps/aarch64/fpu/feenablxcpt.c index d97699981f..07a4bbb58e 100644 --- a/sysdeps/aarch64/fpu/feenablxcpt.c +++ b/sysdeps/aarch64/fpu/feenablxcpt.c @@ -35,5 +35,18 @@ feenableexcept (int excepts) _FPU_SETCW (fpcr); + /* Trapping exceptions are optional in AArch64 the relevant enable + bits in FPCR are RES0 hence the absence of support can be + detected by reading back the FPCR and comparing with the required + value. */ + if (excepts) + { + fpu_control_t updated_fpcr; + + _FPU_GETCW (updated_fpcr); + if (((updated_fpcr >> FE_EXCEPT_SHIFT) & excepts) != excepts) + return -1; + } + return original_excepts; } |