Files
ClassiCube-PPC-for-MacOSX-10.4/third_party/dsiwifi/common/source/utils.h

108 lines
1.9 KiB
C

/*
* Copyright (c) 2021 Max Thomas
* This file is part of DSiWifi and is distributed under the MIT license.
* See dsiwifi_license.txt for terms of use.
*/
#ifndef _DSIWIFI_UTILS_H
#define _DSIWIFI_UTILS_H
#include "common.h"
#define round_up(x, n) ( ((x) + (n)-1) & (~((n)-1)) )
static inline void ioDelay(u32 count)
{
int i;
for (i = 0; i < count; i++)
__asm__ volatile ("");
}
static inline u32 getle32(const void *p)
{
const u8 *cp = p;
return (u32)cp[0] + ((u32)cp[1] << 8) +
((u32)cp[2] << 16) + ((u32)cp[3] << 24);
}
static inline u64 getle64(const u8* p)
{
u64 n = p[0];
n |= (u64)p[1] << 8;
n |= (u64)p[2] << 16;
n |= (u64)p[3] << 24;
n |= (u64)p[4] << 32;
n |= (u64)p[5] << 40;
n |= (u64)p[6] << 48;
n |= (u64)p[7] << 56;
return n;
}
static inline u64 getbe64(const u8* p)
{
u64 n = 0;
n |= (u64)p[0] << 56;
n |= (u64)p[1] << 48;
n |= (u64)p[2] << 40;
n |= (u64)p[3] << 32;
n |= (u64)p[4] << 24;
n |= (u64)p[5] << 16;
n |= (u64)p[6] << 8;
n |= (u64)p[7] << 0;
return n;
}
static inline u32 getbe32(const u8* p)
{
return (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | (p[3] << 0);
}
static inline u32 getle16(const u8* p)
{
return (p[0] << 0) | (p[1] << 8);
}
static inline u32 getbe16(const u8* p)
{
return (p[0] << 8) | (p[1] << 0);
}
static inline void putle16(u8* p, u16 n)
{
p[0] = n;
p[1] = n >> 8;
}
static inline void putbe16(u8* p, u16 n)
{
p[0] = n >> 8;
p[1] = n;
}
static inline void putle32(u8* p, u32 n)
{
p[0] = n;
p[1] = n >> 8;
p[2] = n >> 16;
p[3] = n >> 24;
}
static inline void putbe64(u8* p, u64 n)
{
p[0] = n >> 56;
p[1] = n >> 48;
p[2] = n >> 40;
p[3] = n >> 32;
p[4] = n >> 24;
p[5] = n >> 16;
p[6] = n >> 8;
p[7] = n >> 0;
}
void hexdump(const void* data, size_t size);
#endif // _DSIWIFI_UTILS_H