summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschodet2009-03-05 14:17:30 +0000
committerschodet2009-03-05 14:17:30 +0000
commit7b3aa7ac2ca03f1f7540543d581dda9bd78b1c64 (patch)
treecc1e08168e751b6cbdc5795d0f2fd5404e88496a
parent8a2aff1ca7ea64e3ddcb880501e56e6e79009ced (diff)
* hal/arch:
- fixed cache functions for alignment problems, optimisations will come later. git-svn-id: svn+ssh://pessac/svn/cesar/trunk@4167 017c9cb6-072f-447c-8318-d5b54f68fe89
-rw-r--r--cesar/hal/arch/inc/sparc.h24
1 files changed, 6 insertions, 18 deletions
diff --git a/cesar/hal/arch/inc/sparc.h b/cesar/hal/arch/inc/sparc.h
index 62cd29392a..00ba9f09e9 100644
--- a/cesar/hal/arch/inc/sparc.h
+++ b/cesar/hal/arch/inc/sparc.h
@@ -63,19 +63,13 @@ extern inline void
arch_load_cache (u32 *addr, uint n)
{
u32 dummy;
- while (n >= 2)
- {
- __asm__ __volatile__ ("ldda [%1] %2, %0" : "=r" (dummy)
- : "r" (addr), "i" (ARCH_LEON_ASI_LOAD_CACHE)
- : "memory");
- addr += 2;
- n -= 2;
- }
- if (n)
+ while (n)
{
__asm__ __volatile__ ("lda [%1] %2, %0" : "=r" (dummy)
: "r" (addr), "i" (ARCH_LEON_ASI_LOAD_CACHE)
: "memory");
+ addr++;
+ n--;
}
}
@@ -83,19 +77,13 @@ extern inline void
arch_update_cache (u32 *addr, uint n)
{
u32 dummy;
- while (n >= 2)
- {
- __asm__ __volatile__ ("ldda [%1] %2, %0" : "=r" (dummy)
- : "r" (addr), "i" (ARCH_LEON_ASI_UPDATE_CACHE)
- : "memory");
- addr += 2;
- n -= 2;
- }
- if (n)
+ while (n)
{
__asm__ __volatile__ ("lda [%1] %2, %0" : "=r" (dummy)
: "r" (addr), "i" (ARCH_LEON_ASI_UPDATE_CACHE)
: "memory");
+ addr++;
+ n--;
}
}