108 lines
1.9 KiB
C
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
|