We don't need to flush DCache when launching payloads.
Fixes a derp as well.
This commit is contained in:
parent
e593584a47
commit
edfd63e1f7
@ -5,7 +5,6 @@ void main(void)
|
|||||||
void *payloadAddress = (void *)0x23F00000;
|
void *payloadAddress = (void *)0x23F00000;
|
||||||
|
|
||||||
memcpy(payloadAddress, (void*)0x24F00000, *(u32 *)0x24FFFF04);
|
memcpy(payloadAddress, (void*)0x24F00000, *(u32 *)0x24FFFF04);
|
||||||
cleanInvalidateDCacheAndDMB(); //Ensure that all memory transfers have completed and that the data cache has been flushed
|
|
||||||
|
|
||||||
((void (*)())payloadAddress)();
|
((void (*)())payloadAddress)();
|
||||||
}
|
}
|
@ -7,9 +7,4 @@ void memcpy(void *dest, const void *src, u32 size)
|
|||||||
|
|
||||||
for(u32 i = 0; i < size; i++)
|
for(u32 i = 0; i < size; i++)
|
||||||
destc[i] = srcc[i];
|
destc[i] = srcc[i];
|
||||||
}
|
|
||||||
|
|
||||||
void cleanInvalidateDCacheAndDMB(void)
|
|
||||||
{
|
|
||||||
((void (*)())0xFFFF0830)(); //Why write our own code when it's well implemented in the unprotected bootROM?
|
|
||||||
}
|
}
|
@ -2,14 +2,4 @@
|
|||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
void memcpy(void *dest, const void *src, u32 size);
|
void memcpy(void *dest, const void *src, u32 size);
|
||||||
|
|
||||||
/***
|
|
||||||
Cleans and invalidates the data cache, then waits for all memory transfers to be finished.
|
|
||||||
This function MUST be called before doing the following:
|
|
||||||
- rebooting
|
|
||||||
- powering down
|
|
||||||
- setting the ARM11 entrypoint to execute a function
|
|
||||||
- jumping to a payload (?)
|
|
||||||
***/
|
|
||||||
void cleanInvalidateDCacheAndDMB(void);
|
|
@ -85,7 +85,6 @@ void loadPayload(u32 pressed)
|
|||||||
|
|
||||||
loaderAddress[1] = fileRead((void *)0x24F00000, path);
|
loaderAddress[1] = fileRead((void *)0x24F00000, path);
|
||||||
|
|
||||||
cleanInvalidateDCacheAndDMB(); //Ensure that all memory transfers have completed and that the data cache has been flushed
|
|
||||||
((void (*)())loaderAddress)();
|
((void (*)())loaderAddress)();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,5 @@ u8 *memsearch(u8 *startPos, const void *pattern, u32 size, u32 patternSize);
|
|||||||
- rebooting
|
- rebooting
|
||||||
- powering down
|
- powering down
|
||||||
- setting the ARM11 entrypoint to execute a function
|
- setting the ARM11 entrypoint to execute a function
|
||||||
- jumping to a payload (?)
|
|
||||||
***/
|
***/
|
||||||
void cleanInvalidateDCacheAndDMB(void);
|
void cleanInvalidateDCacheAndDMB(void);
|
@ -36,7 +36,7 @@ static inline void invokeArm11Function(void (*func)())
|
|||||||
|
|
||||||
*arm11Entry = (u32)func;
|
*arm11Entry = (u32)func;
|
||||||
while(*arm11Entry);
|
while(*arm11Entry);
|
||||||
*arm11Entry = (u32)arm11Stub;
|
*arm11Entry = ARM11_STUB_ADDRESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const u32 brightness[4] = {0x5F, 0x4C, 0x39, 0x26};
|
static const u32 brightness[4] = {0x5F, 0x4C, 0x39, 0x26};
|
||||||
|
Reference in New Issue
Block a user