forked from notaz/pcsx_rearmed
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
(3DS) - remove provileged services enabling code, it should be done by
the frontend instead. - dynamically allocate the recompiler cache, this will allow using the recompiler even when the .bss section is relocated far from the .text section (for example when using the hombrew loader).
- Loading branch information
1 parent
0c840ff
commit f72db18
Showing
6 changed files
with
128 additions
and
117 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,66 @@ | ||
#ifndef _3DS_UTILS_H | ||
#define _3DS_UTILS_H | ||
|
||
void ctr_invalidate_ICache(void); | ||
void ctr_flush_DCache(void); | ||
#include <stdio.h> | ||
|
||
void ctr_flush_invalidate_cache(void); | ||
#define MEMOP_PROT 6 | ||
#define MEMOP_MAP 4 | ||
#define MEMOP_UNMAP 5 | ||
|
||
int ctr_svchack_init(void); | ||
void* linearMemAlign(size_t size, size_t alignment); | ||
void linearFree(void* mem); | ||
|
||
int32_t svcDuplicateHandle(uint32_t* out, uint32_t original); | ||
int32_t svcCloseHandle(uint32_t handle); | ||
int32_t svcControlMemory(void* addr_out, void* addr0, void* addr1, uint32_t size, uint32_t op, uint32_t perm); | ||
int32_t svcControlProcessMemory(uint32_t process, void* addr0, void* addr1, uint32_t size, uint32_t op, uint32_t perm); | ||
|
||
int32_t svcCreateThread(int32_t* thread, void *(*entrypoint)(void*), void* arg, void* stack_top, int32_t thread_priority, int32_t processor_id); | ||
int32_t svcWaitSynchronization(int32_t handle, int64_t nanoseconds); | ||
void svcExitThread(void) __attribute__((noreturn)); | ||
|
||
int32_t svcBackdoor(int32_t (*callback)(void)); | ||
|
||
#include <stdio.h> | ||
#define DEBUG_HOLD() do{printf("%s@%s:%d.\n",__FUNCTION__, __FILE__, __LINE__);fflush(stdout);wait_for_input();}while(0) | ||
|
||
void wait_for_input(void); | ||
|
||
extern __attribute__((weak)) int __ctr_svchax; | ||
|
||
typedef int32_t (*ctr_callback_type)(void); | ||
|
||
static inline void ctr_invalidate_ICache_kernel(void) | ||
{ | ||
__asm__ volatile( | ||
"cpsid aif\n\t" | ||
"mov r0, #0\n\t" | ||
"mcr p15, 0, r0, c7, c5, 0\n\t"); | ||
} | ||
|
||
static inline void ctr_flush_DCache_kernel(void) | ||
{ | ||
__asm__ volatile( | ||
"cpsid aif\n\t" | ||
"mov r0, #0\n\t" | ||
"mcr p15, 0, r0, c7, c10, 0\n\t"); | ||
} | ||
|
||
static inline void ctr_invalidate_ICache(void) | ||
{ | ||
svcBackdoor((ctr_callback_type)ctr_invalidate_ICache_kernel); | ||
} | ||
|
||
static inline void ctr_flush_DCache(void) | ||
{ | ||
svcBackdoor((ctr_callback_type)ctr_flush_DCache_kernel); | ||
} | ||
|
||
|
||
static inline void ctr_flush_invalidate_cache(void) | ||
{ | ||
ctr_flush_DCache(); | ||
ctr_invalidate_ICache(); | ||
} | ||
|
||
|
||
#endif // _3DS_UTILS_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters