kgdb.S 890 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Copyright (C) 2000 Murray Jensen <Murray.Jensen@cmst.csiro.au>
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #include <config.h>
  7. #include <command.h>
  8. #include <mpc8260.h>
  9. #include <ppc_asm.tmpl>
  10. #include <ppc_defs.h>
  11. #include <asm/cache.h>
  12. #include <asm/mmu.h>
  13. #if defined(CONFIG_CMD_KGDB)
  14. /*
  15. * cache flushing routines for kgdb
  16. */
  17. .globl kgdb_flush_cache_all
  18. kgdb_flush_cache_all:
  19. mfspr r3, HID0
  20. ori r3, r3, HID0_ICFI|HID0_DCI /* Invalidate All */
  21. SYNC
  22. mtspr HID0, r3
  23. blr
  24. .globl kgdb_flush_cache_range
  25. kgdb_flush_cache_range:
  26. li r5,CONFIG_SYS_CACHELINE_SIZE-1
  27. andc r3,r3,r5
  28. subf r4,r3,r4
  29. add r4,r4,r5
  30. srwi. r4,r4,CONFIG_SYS_CACHELINE_SHIFT
  31. beqlr
  32. mtctr r4
  33. mr r6,r3
  34. 1: dcbst 0,r3
  35. addi r3,r3,CONFIG_SYS_CACHELINE_SIZE
  36. bdnz 1b
  37. sync /* wait for dcbst's to get to ram */
  38. mtctr r4
  39. 2: icbi 0,r6
  40. addi r6,r6,CONFIG_SYS_CACHELINE_SIZE
  41. bdnz 2b
  42. SYNC
  43. blr
  44. #endif