]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | // SPDX-License-Identifier: GPL-2.0+ |
b4489621 SP |
2 | /* |
3 | * Copyright (C) 2007 | |
4 | * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
5 | * | |
6 | * Author: Sergei Poselenov <sposelenov@emcraft.com> | |
b4489621 SP |
7 | */ |
8 | ||
d678a59d | 9 | #include <common.h> |
b4489621 SP |
10 | |
11 | /* | |
12 | * FPU test | |
13 | * | |
14 | * This test checks the arithmetic logic unit (ALU) of CPU. | |
15 | * It tests independently various groups of instructions using | |
16 | * run-time modification of the code to reduce the memory footprint. | |
17 | * For more details refer to post/cpu/ *.c files. | |
18 | */ | |
19 | ||
b4489621 SP |
20 | #include <post.h> |
21 | ||
e009cdeb KG |
22 | GNU_FPOST_ATTR |
23 | ||
1e019503 | 24 | #if CFG_POST & CFG_SYS_POST_FPU |
b4489621 SP |
25 | |
26 | #include <watchdog.h> | |
27 | ||
28 | extern int fpu_status (void); | |
29 | extern void fpu_enable (void); | |
30 | extern void fpu_disable (void); | |
31 | ||
32 | extern int fpu_post_test_math1 (void); | |
33 | extern int fpu_post_test_math2 (void); | |
34 | extern int fpu_post_test_math3 (void); | |
35 | extern int fpu_post_test_math4 (void); | |
36 | extern int fpu_post_test_math5 (void); | |
37 | extern int fpu_post_test_math6 (void); | |
38 | extern int fpu_post_test_math7 (void); | |
39 | ||
40 | int fpu_post_test (int flags) | |
41 | { | |
42 | int fpu = fpu_status (); | |
43 | ||
44 | int ret = 0; | |
45 | ||
29caf930 | 46 | schedule(); |
b4489621 SP |
47 | |
48 | if (!fpu) | |
49 | fpu_enable (); | |
50 | ||
51 | if (ret == 0) | |
52 | ret = fpu_post_test_math1 (); | |
53 | if (ret == 0) | |
54 | ret = fpu_post_test_math2 (); | |
55 | if (ret == 0) | |
56 | ret = fpu_post_test_math3 (); | |
57 | if (ret == 0) | |
58 | ret = fpu_post_test_math4 (); | |
59 | if (ret == 0) | |
60 | ret = fpu_post_test_math5 (); | |
61 | if (ret == 0) | |
62 | ret = fpu_post_test_math6 (); | |
63 | if (ret == 0) | |
64 | ret = fpu_post_test_math7 (); | |
65 | ||
66 | if (!fpu) | |
67 | fpu_disable (); | |
68 | ||
29caf930 | 69 | schedule(); |
b4489621 SP |
70 | |
71 | return ret; | |
72 | } | |
73 | ||
1e019503 | 74 | #endif /* CFG_POST & CFG_SYS_POST_FPU */ |