cache.c 820 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * (C) Copyright 2017
  4. * Christophe Leroy, CS Systemes d'Information, christophe.leroy@c-s.fr
  5. */
  6. #include <common.h>
  7. #include <cpu_func.h>
  8. #include <asm/processor.h>
  9. #include <asm/ppc.h>
  10. #include <asm/io.h>
  11. #include <asm/mmu.h>
  12. int icache_status(void)
  13. {
  14. return !!(mfspr(IC_CST) & IDC_ENABLED);
  15. }
  16. void icache_enable(void)
  17. {
  18. sync();
  19. mtspr(IC_CST, IDC_INVALL);
  20. mtspr(IC_CST, IDC_ENABLE);
  21. }
  22. void icache_disable(void)
  23. {
  24. sync();
  25. mtspr(IC_CST, IDC_DISABLE);
  26. }
  27. int dcache_status(void)
  28. {
  29. return !!(mfspr(IC_CST) & IDC_ENABLED);
  30. }
  31. void dcache_enable(void)
  32. {
  33. mtspr(MD_CTR, MD_RESETVAL); /* Set cache mode with MMU off */
  34. mtspr(DC_CST, IDC_INVALL);
  35. mtspr(DC_CST, IDC_ENABLE);
  36. }
  37. void dcache_disable(void)
  38. {
  39. sync();
  40. mtspr(DC_CST, IDC_DISABLE);
  41. mtspr(DC_CST, IDC_INVALL);
  42. }