forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
selftests/fpu: move FP code to a separate translation unit
This ensures no compiler-generated floating-point code can appear outside kernel_fpu_{begin,end}() sections, and some architectures enforce this separation. Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Acked-by: Christian König <[email protected]> Cc: Alex Deucher <[email protected]> Cc: Borislav Petkov (AMD) <[email protected]> Cc: Catalin Marinas <[email protected]> Cc: Dave Hansen <[email protected]> Cc: Huacai Chen <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Jonathan Corbet <[email protected]> Cc: Masahiro Yamada <[email protected]> Cc: Michael Ellerman <[email protected]> Cc: Nathan Chancellor <[email protected]> Cc: Nicolas Schier <[email protected]> Cc: Palmer Dabbelt <[email protected]> Cc: Russell King <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: WANG Xuerui <[email protected]> Cc: Will Deacon <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
- Loading branch information
1 parent
a28e4b6
commit 9613736
Showing
4 changed files
with
48 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
/* SPDX-License-Identifier: GPL-2.0+ */ | ||
|
||
#ifndef _LIB_TEST_FPU_H | ||
#define _LIB_TEST_FPU_H | ||
|
||
int test_fpu(void); | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
// SPDX-License-Identifier: GPL-2.0+ | ||
|
||
#include <linux/errno.h> | ||
|
||
#include "test_fpu.h" | ||
|
||
int test_fpu(void) | ||
{ | ||
/* | ||
* This sequence of operations tests that rounding mode is | ||
* to nearest and that denormal numbers are supported. | ||
* Volatile variables are used to avoid compiler optimizing | ||
* the calculations away. | ||
*/ | ||
volatile double a, b, c, d, e, f, g; | ||
|
||
a = 4.0; | ||
b = 1e-15; | ||
c = 1e-310; | ||
|
||
/* Sets precision flag */ | ||
d = a + b; | ||
|
||
/* Result depends on rounding mode */ | ||
e = a + b / 2; | ||
|
||
/* Denormal and very large values */ | ||
f = b / c; | ||
|
||
/* Depends on denormal support */ | ||
g = a + c * f; | ||
|
||
if (d > a && e > a && g > a) | ||
return 0; | ||
else | ||
return -EINVAL; | ||
} |