6
void *memcpy8(void * dst, void const * src, size_t len) {
10
uint16_t pcilib_swap16(uint16_t x) {
11
return (((x<<8)&0xFFFF) | ((x>>8)&0xFFFF));
14
uint32_t pcilib_swap32(uint32_t x) {
15
return ((x & 0xFF) << 24) | \
16
((x & 0xFF00) << 8) | \
17
((x & 0xFF0000) >> 8) | \
18
((x & 0xFF000000) >> 24);
21
uint64_t pcilib_swap64(uint64_t x) {
22
return (((uint64_t)(x) << 56) | \
23
(((uint64_t)(x) << 40) & 0xff000000000000ULL) | \
24
(((uint64_t)(x) << 24) & 0xff0000000000ULL) | \
25
(((uint64_t)(x) << 8) & 0xff00000000ULL) | \
26
(((uint64_t)(x) >> 8) & 0xff000000ULL) | \
27
(((uint64_t)(x) >> 24) & 0xff0000ULL) | \
28
(((uint64_t)(x) >> 40) & 0xff00ULL) | \
29
((uint64_t)(x) >> 56));
32
void pcilib_swap(void *dst, void *src, size_t size, size_t n) {
36
if (src != dst) memcpy(dst, src, n);
39
for (i = 0; i < n; i++) {
40
((uint16_t*)dst)[i] = pcilib_swap16(((uint16_t*)src)[i]);
44
for (i = 0; i < n; i++) {
45
((uint32_t*)dst)[i] = pcilib_swap32(((uint32_t*)src)[i]);
49
for (i = 0; i < n; i++) {
50
((uint64_t*)dst)[i] = pcilib_swap64(((uint64_t*)src)[i]);
54
pcilib_error("Invalid word size: %i", size);
58
void *pcilib_memcpy8(void * dst, void const * src, size_t len) {
8
60
for (i = 0; i < len; i++) ((char*)dst)[i] = ((char*)src)[i];
13
void *memcpy32(void * dst, void const * src, size_t len) {
64
void *pcilib_memcpy32(void * dst, void const * src, size_t len) {
14
65
uint32_t * plDst = (uint32_t *) dst;
15
66
uint32_t const * plSrc = (uint32_t const *) src;
18
uint32_t a = (*plSrc & 0xFF) << 24;
19
a |= (*plSrc & 0xFF00) << 8;
20
a |= (*plSrc & 0xFF0000) >> 8;
21
a |= (*plSrc & 0xFF000000) >> 24;
69
// *plDst = ntohl(*plSrc);
38
void *memcpy64(void * dst, void const * src, size_t len) {
87
void *pcilib_memcpy64(void * dst, void const * src, size_t len) {
39
88
uint64_t * plDst = (uint64_t *) dst;
40
89
uint64_t const * plSrc = (uint64_t const *) src;
127
int get_page_mask() {
175
void *pcilib_datacpy32(void * dst, void const * src, uint8_t size, size_t n, pcilib_endianess_t endianess) {
176
uint32_t * plDst = (uint32_t *) dst;
177
uint32_t const * plSrc = (uint32_t const *) src;
179
int swap = (endianess == PCILIB_BIG_ENDIAN)?(ntohs(1)!=1):(ntohs(1)==1);
181
assert(size == 4); // only 32 bit at the moment
184
if (swap) *plDst = ntohl(*plSrc);
185
else *plDst = *plSrc;
195
int pcilib_get_page_mask() {
128
196
int pagesize,pagemask,temp;
130
pagesize = getpagesize();
198
pagesize = sysconf(_SC_PAGESIZE);
132
200
for( pagemask=0, temp = pagesize; temp != 1; ) {
133
201
temp = (temp >> 1);