mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-26 05:32:47 +00:00
Fix compiling in devkitARM r51
Use custom (sequential) memcpy for reading / writing hardware registers. Fixes #460
This commit is contained in:
parent
10ec95b8fe
commit
82d6e94789
@ -20,22 +20,29 @@
|
||||
(((a) > (b)) ? (a) : (b))
|
||||
#define min(a,b) \
|
||||
(((a) < (b)) ? (a) : (b))
|
||||
|
||||
#define getbe16(d) \
|
||||
(((d)[0]<<8) | (d)[1])
|
||||
#define getbe32(d) \
|
||||
((((u32) getbe16(d))<<16) | ((u32) getbe16(d+2)))
|
||||
#define getbe64(d) \
|
||||
((((u64) getbe32(d))<<32) | ((u64) getbe32(d+4)))
|
||||
|
||||
#define getle16(d) \
|
||||
(((d)[1]<<8) | (d)[0])
|
||||
#define getle32(d) \
|
||||
((((u32) getle16(d+2))<<16) | ((u32) getle16(d)))
|
||||
#define getle64(d) \
|
||||
((((u64) getle32(d+4))<<32) | ((u64) getle32(d)))
|
||||
|
||||
#define align(v,a) \
|
||||
(((v) % (a)) ? ((v) + (a) - ((v) % (a))) : (v))
|
||||
|
||||
#define countof(x) \
|
||||
(sizeof(x) / sizeof((x)[0]))
|
||||
|
||||
#define seqmemcpy(d,o,s) \
|
||||
for(u32 i = 0; i < (s); i++) ((u8*)(void*)(d))[i] = ((u8*)(void*)(o))[i]
|
||||
|
||||
#define bkpt \
|
||||
asm("bkpt\n\t")
|
||||
|
@ -76,7 +76,7 @@ bool RSA_setKey2048(u8 keyslot, const u8 *const mod, u32 exp)
|
||||
REG_RSA_EXP[(0x100>>2) - 1] = exp;
|
||||
|
||||
if(slot->REG_RSA_SLOTSIZE != RSA_SLOTSIZE_2048) return false;
|
||||
memcpy((void*)REG_RSA_MOD, mod, 0x100);
|
||||
seqmemcpy((void*)REG_RSA_MOD, mod, 0x100);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -88,11 +88,11 @@ bool RSA_decrypt2048(void *const decSig, const void *const encSig)
|
||||
if(!(rsaSlots[keyslot].REG_RSA_SLOTCNT & RSA_KEY_STAT_SET)) return false;
|
||||
|
||||
REG_RSA_CNT |= RSA_INPUT_NORMAL | RSA_INPUT_BIG;
|
||||
memcpy((void*)REG_RSA_TXT, encSig, 0x100);
|
||||
seqmemcpy((void*)REG_RSA_TXT, encSig, 0x100);
|
||||
|
||||
REG_RSA_CNT |= RSA_ENABLE;
|
||||
rsaWaitBusy();
|
||||
memcpy(decSig, (void*)REG_RSA_TXT, 0x100);
|
||||
seqmemcpy(decSig, (void*)REG_RSA_TXT, 0x100);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -1,10 +1,5 @@
|
||||
#include "sha.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 data[16];
|
||||
} _sha_block;
|
||||
|
||||
void sha_init(u32 mode)
|
||||
{
|
||||
while(*REG_SHACNT & 1);
|
||||
@ -17,12 +12,12 @@ void sha_update(const void* src, u32 size)
|
||||
|
||||
while(size >= 0x40) {
|
||||
while(*REG_SHACNT & 1);
|
||||
*((_sha_block*)REG_SHAINFIFO) = *((const _sha_block*)src32);
|
||||
seqmemcpy((void*)REG_SHAINFIFO, src32, 0x40);
|
||||
src32 += 16;
|
||||
size -= 0x40;
|
||||
}
|
||||
while(*REG_SHACNT & 1);
|
||||
if(size) memcpy((void*)REG_SHAINFIFO, src32, size);
|
||||
if(size) seqmemcpy((void*)REG_SHAINFIFO, src32, size);
|
||||
}
|
||||
|
||||
void sha_get(void* res) {
|
||||
@ -31,7 +26,7 @@ void sha_get(void* res) {
|
||||
*REG_SHACNT = (*REG_SHACNT & ~SHA_NORMAL_ROUND) | SHA_FINAL_ROUND;
|
||||
while(*REG_SHACNT & SHA_FINAL_ROUND);
|
||||
while(*REG_SHACNT & 1);
|
||||
if (hash_size) memcpy(res, (void*)REG_SHAHASH, hash_size);
|
||||
if (hash_size) seqmemcpy(res, (void*)REG_SHAHASH, hash_size);
|
||||
}
|
||||
|
||||
void sha_quick(void* res, const void* src, u32 size, u32 mode) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user