uboot/post/lib_powerpc/fpu/fpu.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * Copyright (C) 2007
   4 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
   5 *
   6 * Author: Sergei Poselenov <sposelenov@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
  22GNU_FPOST_ATTR
  23
  24#if CONFIG_POST & CONFIG_SYS_POST_FPU
  25
  26#include <watchdog.h>
  27
  28extern int fpu_status (void);
  29extern void fpu_enable (void);
  30extern void fpu_disable (void);
  31
  32extern int fpu_post_test_math1 (void);
  33extern int fpu_post_test_math2 (void);
  34extern int fpu_post_test_math3 (void);
  35extern int fpu_post_test_math4 (void);
  36extern int fpu_post_test_math5 (void);
  37extern int fpu_post_test_math6 (void);
  38extern int fpu_post_test_math7 (void);
  39
  40int 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