fpu.c 658 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*
  2. * (C) Copyright 2007
  3. * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  4. *
  5. * Author: Sergei Poselenov <sposelenov@emcraft.com>
  6. *
  7. * SPDX-License-Identifier: GPL-2.0+
  8. */
  9. #include <config.h>
  10. #if defined(CONFIG_440EP) || \
  11. defined(CONFIG_440EPX)
  12. #include <asm/processor.h>
  13. #include <asm/ppc4xx.h>
  14. int fpu_status(void)
  15. {
  16. if (mfspr(SPRN_CCR0) & CCR0_DAPUIB)
  17. return 0; /* Disabled */
  18. else
  19. return 1; /* Enabled */
  20. }
  21. void fpu_disable(void)
  22. {
  23. mtspr(SPRN_CCR0, mfspr(SPRN_CCR0) | CCR0_DAPUIB);
  24. mtmsr(mfmsr() & ~MSR_FP);
  25. }
  26. void fpu_enable(void)
  27. {
  28. mtspr(SPRN_CCR0, mfspr(SPRN_CCR0) & ~CCR0_DAPUIB);
  29. mtmsr(mfmsr() | MSR_FP);
  30. }
  31. #endif