Home | History | Annotate | Download | only in fpu
      1 // SPDX-License-Identifier: GPL-2.0+
      2 /*
      3  * Copyright (C) 2007
      4  * Wolfgang Denk, DENX Software Engineering, wd (at) denx.de.
      5  *
      6  * Author: Sergei Poselenov <sposelenov (at) emcraft.com>
      7  */
      8 
      9 #include <common.h>
     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 
     20 #include <post.h>
     21 
     22 GNU_FPOST_ATTR
     23 
     24 #if CONFIG_POST & CONFIG_SYS_POST_FPU
     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 
     46 	WATCHDOG_RESET ();
     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 
     69 	WATCHDOG_RESET ();
     70 
     71 	return ret;
     72 }
     73 
     74 #endif /* CONFIG_POST & CONFIG_SYS_POST_FPU */
     75