/alps/pcitool

To get this branch, use:
bzr branch http://darksoft.org/webbzr/alps/pcitool

« back to all changes in this revision

Viewing changes to pcilib/memcpy.c

  • Committer: Suren A. Chilingaryan
  • Date: 2015-11-20 17:26:29 UTC
  • Revision ID: csa@suren.me-20151120172629-ifd0wt33sg5bccpo
64-bit access to BAR memory

Show diffs side-by-side

added added

removed removed

Lines of Context:
64
64
    return (dst);
65
65
66
66
 
 
67
typedef void* (*pcilib_memcpy_routine_t)(void * dst, void const *src, size_t bytes);
 
68
static pcilib_memcpy_routine_t pcilib_memcpy_routines[4] = {
 
69
    pcilib_memcpy8, NULL, pcilib_memcpy32, pcilib_memcpy64
 
70
};
 
71
 
 
72
void *pcilib_memcpy(void * dst, void const * src, uint8_t access, size_t n) {
 
73
    size_t pos = 0, size = n * access;
 
74
    pcilib_memcpy_routine_t routine;
 
75
 
 
76
    assert((access)&&(access <= 8));
 
77
 
 
78
    while (access >>= 1) ++pos;
 
79
    routine = pcilib_memcpy_routines[pos];
 
80
 
 
81
    return routine(dst, src, size);
 
82
}