From 06ddffe09a37acd77de2aa93cdd99f4c6f27923b Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Wed, 5 Oct 2011 22:42:09 -0700 Subject: [PATCH] use optimized memcpy functions for non-cacheable memory --- drivers/net/mmnif.c | 82 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 79 insertions(+), 3 deletions(-) diff --git a/drivers/net/mmnif.c b/drivers/net/mmnif.c index 754f7f34..6b4f1c25 100644 --- a/drivers/net/mmnif.c +++ b/drivers/net/mmnif.c @@ -266,6 +266,76 @@ typedef struct mmnif { sem_t com_poll; } mmnif_t; +inline static void* memcpy_from_nc(void *dest, const void *src, size_t count) +{ +#if 0 + size_t i; + + for(i=0; inext) { -#if MMNIF_USE_MPB +#if !MMNIF_USE_MBO && !USE_CACHE + memcpy_to_nc((char*) write_address+ i, q->payload, q->len); +#elif MMNIF_USE_MPB memcpy_put((char*) write_address + i, q->payload, q->len); #else memcpy((char*) write_address+ i, q->payload, q->len); @@ -794,7 +866,9 @@ realloc: asm volatile (".byte 0x0f; .byte 0x0a;\n"); #endif -#if MMNIF_USE_MPB +#if !MMNIF_USE_MBO && !USE_CACHE + memcpy_to_nc((void*) write_address, pbuff, CLINE_ALIGN(size)); +#elif MMNIF_USE_MPB memcpy_put(write_address, pbuff, CLINE_ALIGN(size)); #else memcpy((void*) write_address, pbuff, CLINE_ALIGN(size)); @@ -1174,7 +1248,9 @@ anotherpacket: /* copy packet to pbuf structure going through linked list */ for (q = p, i = 0; q != NULL; q = q->next) { -#if MMNIF_USE_MPB +#if !USE_CACHE || !MMNIF_USE_MBP + memcpy_from_nc((uint8_t *) q->payload, &packet[i], q->len); +#elif MMNIF_USE_MPB memcpy_get((uint8_t *) q->payload, &packet[i], q->len); #else memcpy((uint8_t *) q->payload, &packet[i], q->len);