kgdb.S 890 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 <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. lis r3, IDC_INVALL@h
  20. mtspr DC_CST, r3
  21. sync
  22. lis r3, IDC_INVALL@h
  23. mtspr IC_CST, r3
  24. SYNC
  25. blr
  26. .globl kgdb_flush_cache_range
  27. kgdb_flush_cache_range:
  28. li r5,CONFIG_SYS_CACHELINE_SIZE-1
  29. andc r3,r3,r5
  30. subf r4,r3,r4
  31. add r4,r4,r5
  32. srwi. r4,r4,CONFIG_SYS_CACHELINE_SHIFT
  33. beqlr
  34. mtctr r4
  35. mr r6,r3
  36. 1: dcbst 0,r3
  37. addi r3,r3,CONFIG_SYS_CACHELINE_SIZE
  38. bdnz 1b
  39. sync /* wait for dcbst's to get to ram */
  40. mtctr r4
  41. 2: icbi 0,r6
  42. addi r6,r6,CONFIG_SYS_CACHELINE_SIZE
  43. bdnz 2b
  44. SYNC
  45. blr
  46. #endif