From 33edd4a542232582368f85203e0640c5f8123e76 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Mon, 2 May 2011 12:39:02 +0200 Subject: A bit faster datacpy --- tools.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/tools.c b/tools.c index 6076f18..1ff3177 100644 --- a/tools.c +++ b/tools.c @@ -197,19 +197,26 @@ void *pcilib_datacpy32(void * dst, void const * src, uint8_t size, size_t n, pci uint32_t const * plSrc = (uint32_t const *) src; int swap = 0; - - if (endianess) swap = (endianess == PCILIB_BIG_ENDIAN)?(ntohs(1)!=1):(ntohs(1)==1); - - assert(size == 4); // only 32 bit at the moment - while (n > 0) { - if (swap) *plDst = ntohl(*plSrc); - else *plDst = *plSrc; + if (endianess) + swap = (endianess == PCILIB_BIG_ENDIAN)?(ntohs(1)!=1):(ntohs(1)==1); - ++plSrc; - ++plDst; + assert(size == 4); // only 32 bit at the moment - --n; + if (swap) { + while (n > 0) { + *plDst = ntohl(*plSrc); + ++plSrc; + ++plDst; + --n; + } + } else { + while (n > 0) { + *plDst = *plSrc; + ++plSrc; + ++plDst; + --n; + } } } -- cgit v1.2.3