| /* |
| * Copyright (C) 2000 Murray Jensen <Murray.Jensen@cmst.csiro.au> |
| * |
| * SPDX-License-Identifier: GPL-2.0+ |
| */ |
| |
| #include <config.h> |
| #include <command.h> |
| #include <mpc8xx.h> |
| #include <version.h> |
| |
| #define CONFIG_8xx 1 /* needed for Linux kernel header files */ |
| #define _LINUX_CONFIG_H 1 /* avoid reading Linux autoconf.h file */ |
| |
| #include <ppc_asm.tmpl> |
| #include <ppc_defs.h> |
| |
| #include <asm/cache.h> |
| #include <asm/mmu.h> |
| |
| #if defined(CONFIG_CMD_KGDB) |
| |
| /* |
| * cache flushing routines for kgdb |
| */ |
| |
| .globl kgdb_flush_cache_all |
| kgdb_flush_cache_all: |
| lis r3, IDC_INVALL@h |
| mtspr DC_CST, r3 |
| sync |
| lis r3, IDC_INVALL@h |
| mtspr IC_CST, r3 |
| SYNC |
| blr |
| |
| .globl kgdb_flush_cache_range |
| kgdb_flush_cache_range: |
| li r5,CONFIG_SYS_CACHELINE_SIZE-1 |
| andc r3,r3,r5 |
| subf r4,r3,r4 |
| add r4,r4,r5 |
| srwi. r4,r4,CONFIG_SYS_CACHELINE_SHIFT |
| beqlr |
| mtctr r4 |
| mr r6,r3 |
| 1: dcbst 0,r3 |
| addi r3,r3,CONFIG_SYS_CACHELINE_SIZE |
| bdnz 1b |
| sync /* wait for dcbst's to get to ram */ |
| mtctr r4 |
| 2: icbi 0,r6 |
| addi r6,r6,CONFIG_SYS_CACHELINE_SIZE |
| bdnz 2b |
| SYNC |
| blr |
| |
| #endif |