kgdb.S 911 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 <mpc8xx.h>
  9. #include <version.h>
  10. #include <ppc_asm.tmpl>
  11. #include <ppc_defs.h>
  12. #include <asm/cache.h>
  13. #include <asm/mmu.h>
  14. #if defined(CONFIG_CMD_KGDB)
  15. /*
  16. * cache flushing routines for kgdb
  17. */
  18. .globl kgdb_flush_cache_all
  19. kgdb_flush_cache_all:
  20. lis r3, IDC_INVALL@h
  21. mtspr DC_CST, r3
  22. sync
  23. lis r3, IDC_INVALL@h
  24. mtspr IC_CST, r3
  25. SYNC
  26. blr
  27. .globl kgdb_flush_cache_range
  28. kgdb_flush_cache_range:
  29. li r5,CONFIG_SYS_CACHELINE_SIZE-1
  30. andc r3,r3,r5
  31. subf r4,r3,r4
  32. add r4,r4,r5
  33. srwi. r4,r4,CONFIG_SYS_CACHELINE_SHIFT
  34. beqlr
  35. mtctr r4
  36. mr r6,r3
  37. 1: dcbst 0,r3
  38. addi r3,r3,CONFIG_SYS_CACHELINE_SIZE
  39. bdnz 1b
  40. sync /* wait for dcbst's to get to ram */
  41. mtctr r4
  42. 2: icbi 0,r6
  43. addi r6,r6,CONFIG_SYS_CACHELINE_SIZE
  44. bdnz 2b
  45. SYNC
  46. blr
  47. #endif