mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-25 21:59:32 +00:00
e7bfda2c24
This change makes the names of Broadcom targets consistent by using the common notation based on SoC/CPU ID (which is used internally anyway), bcmXXXX instead of brcmXXXX. This is even used for target TITLE in make menuconfig already, only the short target name used brcm so far. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
47 lines
1.3 KiB
C
47 lines
1.3 KiB
C
/*
|
|
* LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards
|
|
*
|
|
* Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
|
|
*
|
|
* The cache manipulation routine has been taken from the U-Boot project.
|
|
* (C) Copyright 2003
|
|
* Wolfgang Denk, DENX Software Engineering, <wd@denx.de>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License version 2 as published
|
|
* by the Free Software Foundation.
|
|
*
|
|
*/
|
|
|
|
#include "cache.h"
|
|
#include "cacheops.h"
|
|
#include "config.h"
|
|
#include "printf.h"
|
|
|
|
#define cache_op(op,addr) \
|
|
__asm__ __volatile__( \
|
|
" .set push \n" \
|
|
" .set noreorder \n" \
|
|
" .set mips3\n\t \n" \
|
|
" cache %0, %1 \n" \
|
|
" .set pop \n" \
|
|
: \
|
|
: "i" (op), "R" (*(unsigned char *)(addr)))
|
|
|
|
void flush_cache(unsigned long start_addr, unsigned long size)
|
|
{
|
|
unsigned long lsize = CONFIG_CACHELINE_SIZE;
|
|
unsigned long addr = start_addr & ~(lsize - 1);
|
|
unsigned long aend = (start_addr + size + (lsize - 1)) & ~(lsize - 1);
|
|
|
|
printf("blasting from 0x%08x to 0x%08x (0x%08x - 0x%08x)\n", start_addr, size, addr, aend);
|
|
|
|
while (1) {
|
|
cache_op(Hit_Writeback_Inv_D, addr);
|
|
cache_op(Hit_Invalidate_I, addr);
|
|
if (addr == aend)
|
|
break;
|
|
addr += lsize;
|
|
}
|
|
}
|