2 * Copyright (C) 2000 Murray Jensen <Murray.Jensen@cmst.csiro.au>
4 * SPDX-License-Identifier: GPL-2.0+
9 #include <asm/ppc4xx.h>
11 #define CONFIG_405GP 1 /* needed for Linux kernel header files */
13 #include <ppc_asm.tmpl>
16 #include <asm/cache.h>
19 #if defined(CONFIG_CMD_KGDB)
21 * cache flushing routines for kgdb
24 .globl kgdb_flush_cache_all
27 iccci r0,r0 /* iccci invalidates the entire I cache */
29 addi r6,0,0x0000 /* clear GPR 6 */
30 addi r7,r0, 128 /* do loop for # of dcache lines */
31 /* NOTE: dccci invalidates both */
32 mtctr r7 /* ways in the D cache */
34 dccci 0,r6 /* invalidate line */
35 addi r6,r6, 32 /* bump to next line */
39 .globl kgdb_flush_cache_range
40 kgdb_flush_cache_range:
41 li r5,L1_CACHE_BYTES-1
45 srwi. r4,r4,L1_CACHE_SHIFT
50 addi r3,r3,L1_CACHE_BYTES
52 sync /* wait for dcbst's to get to ram */
55 addi r6,r6,L1_CACHE_BYTES