]> Git Repo - J-linux.git/blob - tools/testing/selftests/powerpc/math/fpu_denormal.c
Merge tag 'amd-drm-next-6.5-2023-06-09' of https://gitlab.freedesktop.org/agd5f/linux...
[J-linux.git] / tools / testing / selftests / powerpc / math / fpu_denormal.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * Copyright IBM Corp. 2020
4  *
5  * This test attempts to cause a FP denormal exception on POWER8 CPUs. Unfortunately
6  * if the denormal handler is not configured or working properly, this can cause a bad
7  * crash in kernel mode when the kernel tries to save FP registers when the process
8  * exits.
9  */
10
11 #include <stdio.h>
12 #include <string.h>
13
14 #include "utils.h"
15
16 static int test_denormal_fpu(void)
17 {
18         unsigned int m32;
19         unsigned long m64;
20         volatile float f;
21         volatile double d;
22
23         /* try to induce lfs <denormal> ; stfd */
24
25         m32 = 0x00715fcf; /* random denormal */
26         memcpy((float *)&f, &m32, sizeof(f));
27         d = f;
28         memcpy(&m64, (double *)&d, sizeof(d));
29
30         FAIL_IF((long)(m64 != 0x380c57f3c0000000)); /* renormalised value */
31
32         return 0;
33 }
34
35 int main(int argc, char *argv[])
36 {
37         return test_harness(test_denormal_fpu, "fpu_denormal");
38 }
This page took 0.030866 seconds and 4 git commands to generate.