mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-10 19:30:10 +00:00
[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.
This commit is contained in:
parent
6f99f280b0
commit
302949e294
@ -1,3 +1,9 @@
|
||||
2014-03-07 Marcus Shawcroft <marcus.shawcroft@arm.com>
|
||||
|
||||
* sysdeps/aarch64/fpu/feenablxcpt.c (feenableexcept): Detect and
|
||||
error absence of trapping exception support.
|
||||
* sysdeps/aarch64/fpu/fesetenv.c (fesetenv): Likewise.
|
||||
|
||||
2014-03-07 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* catgets/Makefile (tests-special): Add $(objpfx)sample.SJIS.cat.
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ fesetenv (const fenv_t *envp)
|
||||
{
|
||||
fpu_control_t fpcr;
|
||||
fpu_fpsr_t fpsr;
|
||||
fpu_control_t updated_fpcr;
|
||||
|
||||
_FPU_GETCW (fpcr);
|
||||
_FPU_GETFPSR (fpsr);
|
||||
@ -51,6 +52,15 @@ fesetenv (const fenv_t *envp)
|
||||
|
||||
_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. */
|
||||
|
||||
_FPU_GETCW (updated_fpcr);
|
||||
if ((updated_fpcr & fpcr) != fpcr)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user