mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
[Blackfin][PATCH] Kill off a bunch of common local prototypes
This commit is contained in:
parent
7b7e30aa64
commit
c0707ce656
3 changed files with 77 additions and 49 deletions
|
@ -30,12 +30,7 @@
|
|||
#include <config.h>
|
||||
#include <asm/blackfin.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
extern void blackfin_icache_flush_range(const void *, const void *);
|
||||
extern void blackfin_dcache_flush_range(const void *, const void *);
|
||||
extern void *memcpy_ASM(void *dest, const void *src, size_t count);
|
||||
|
||||
void *dma_memcpy(void *, const void *, size_t);
|
||||
#include "cache.h"
|
||||
|
||||
char *strcpy(char *dest, const char *src)
|
||||
{
|
||||
|
@ -117,44 +112,7 @@ int strncmp(const char *cs, const char *ct, size_t count)
|
|||
return __res1;
|
||||
}
|
||||
|
||||
/*
|
||||
* memcpy - Copy one area of memory to another
|
||||
* @dest: Where to copy to
|
||||
* @src: Where to copy from
|
||||
* @count: The size of the area.
|
||||
*
|
||||
* You should not use this function to access IO space, use memcpy_toio()
|
||||
* or memcpy_fromio() instead.
|
||||
*/
|
||||
void *memcpy(void *dest, const void *src, size_t count)
|
||||
{
|
||||
char *tmp = (char *)dest, *s = (char *)src;
|
||||
|
||||
/* L1_ISRAM can only be accessed via dma */
|
||||
if ((tmp >= (char *)L1_ISRAM) && (tmp < (char *)L1_ISRAM_END)) {
|
||||
/* L1 is the destination */
|
||||
dma_memcpy(dest, src, count);
|
||||
|
||||
if (icache_status()) {
|
||||
blackfin_icache_flush_range(src, src + count);
|
||||
}
|
||||
} else if ((s >= (char *)L1_ISRAM) && (s < (char *)L1_ISRAM_END)) {
|
||||
/* L1 is the source */
|
||||
dma_memcpy(dest, src, count);
|
||||
|
||||
if (icache_status()) {
|
||||
blackfin_icache_flush_range(dest, dest + count);
|
||||
}
|
||||
if (dcache_status()) {
|
||||
blackfin_dcache_flush_range(dest, dest + count);
|
||||
}
|
||||
} else {
|
||||
memcpy_ASM(dest, src, count);
|
||||
}
|
||||
return dest;
|
||||
}
|
||||
|
||||
void *dma_memcpy(void *dest, const void *src, size_t count)
|
||||
static void *dma_memcpy(void *dest, const void *src, size_t count)
|
||||
{
|
||||
*pMDMA_D0_IRQ_STATUS = DMA_DONE | DMA_ERR;
|
||||
|
||||
|
@ -188,3 +146,40 @@ void *dma_memcpy(void *dest, const void *src, size_t count)
|
|||
src += count;
|
||||
return dest;
|
||||
}
|
||||
|
||||
/*
|
||||
* memcpy - Copy one area of memory to another
|
||||
* @dest: Where to copy to
|
||||
* @src: Where to copy from
|
||||
* @count: The size of the area.
|
||||
*
|
||||
* You should not use this function to access IO space, use memcpy_toio()
|
||||
* or memcpy_fromio() instead.
|
||||
*/
|
||||
extern void *memcpy_ASM(void *dest, const void *src, size_t count);
|
||||
void *memcpy(void *dest, const void *src, size_t count)
|
||||
{
|
||||
char *tmp = (char *) dest, *s = (char *) src;
|
||||
|
||||
if (dcache_status()) {
|
||||
blackfin_dcache_flush_range(src, src+count);
|
||||
}
|
||||
/* L1_ISRAM can only be accessed via dma */
|
||||
if ((tmp >= (char *)L1_ISRAM) && (tmp < (char *)L1_ISRAM_END)) {
|
||||
/* L1 is the destination */
|
||||
dma_memcpy(dest,src,count);
|
||||
} else if ((s >= (char *)L1_ISRAM) && (s < (char *)L1_ISRAM_END)) {
|
||||
/* L1 is the source */
|
||||
dma_memcpy(dest,src,count);
|
||||
|
||||
if (icache_status()) {
|
||||
blackfin_icache_flush_range(dest, dest+count);
|
||||
}
|
||||
if (dcache_status()) {
|
||||
blackfin_dcache_invalidate_range(dest, dest+count);
|
||||
}
|
||||
} else {
|
||||
memcpy_ASM(dest,src,count);
|
||||
}
|
||||
return dest;
|
||||
}
|
||||
|
|
|
@ -29,9 +29,7 @@
|
|||
#include <config.h>
|
||||
#include <common.h>
|
||||
#include <asm/blackfin.h>
|
||||
|
||||
extern void blackfin_icache_flush_range(unsigned long, unsigned long);
|
||||
extern void blackfin_dcache_flush_range(unsigned long, unsigned long);
|
||||
#include "cache.h"
|
||||
|
||||
void flush_cache(unsigned long dummy1, unsigned long dummy2)
|
||||
{
|
||||
|
@ -43,9 +41,9 @@ void flush_cache(unsigned long dummy1, unsigned long dummy2)
|
|||
return;
|
||||
|
||||
if (icache_status())
|
||||
blackfin_icache_flush_range(dummy1, dummy1 + dummy2);
|
||||
blackfin_icache_flush_range((void*)dummy1, (void*)(dummy1 + dummy2));
|
||||
if (dcache_status())
|
||||
blackfin_dcache_flush_range(dummy1, dummy1 + dummy2);
|
||||
blackfin_dcache_flush_range((void*)dummy1, (void*)(dummy1 + dummy2));
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
35
lib_blackfin/cache.h
Normal file
35
lib_blackfin/cache.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* U-boot - prototypes for cache handling functions.
|
||||
*
|
||||
* Copyright (c) 2005-2007 Analog Devices Inc.
|
||||
*
|
||||
* (C) Copyright 2000-2004
|
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see the file COPYING, or write
|
||||
* to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _LIB_BLACKFIN_CACHE_H_
|
||||
#define _LIB_BLACKFIN_CACHE_H_
|
||||
|
||||
extern void blackfin_icache_flush_range(const void *, const void *);
|
||||
extern void blackfin_dcache_flush_range(const void *, const void *);
|
||||
extern void blackfin_dcache_invalidate_range(const void *, const void *);
|
||||
|
||||
#endif
|
Loading…
Add table
Reference in a new issue