From bba9c619c79175b58359116b52a889e30a632d07 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Fri, 20 Nov 2015 18:26:29 +0100 Subject: 64-bit access to BAR memory --- pcilib/memcpy.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'pcilib/memcpy.c') diff --git a/pcilib/memcpy.c b/pcilib/memcpy.c index 149d1fd..dd55037 100644 --- a/pcilib/memcpy.c +++ b/pcilib/memcpy.c @@ -64,3 +64,19 @@ void *pcilib_memcpy64(void * dst, void const * src, size_t len) { return (dst); } +typedef void* (*pcilib_memcpy_routine_t)(void * dst, void const *src, size_t bytes); +static pcilib_memcpy_routine_t pcilib_memcpy_routines[4] = { + pcilib_memcpy8, NULL, pcilib_memcpy32, pcilib_memcpy64 +}; + +void *pcilib_memcpy(void * dst, void const * src, uint8_t access, size_t n) { + size_t pos = 0, size = n * access; + pcilib_memcpy_routine_t routine; + + assert((access)&&(access <= 8)); + + while (access >>= 1) ++pos; + routine = pcilib_memcpy_routines[pos]; + + return routine(dst, src, size); +} -- cgit v1.2.3