1
0
Fork 0
mirror of https://github.com/Atmosphere-NX/Atmosphere.git synced 2024-11-29 23:32:23 +00:00

emummc: cleanup pr per review

This commit is contained in:
Michael Scire 2020-06-13 00:08:32 -07:00 committed by SciresM
parent b966345b25
commit d9c9083574
2 changed files with 29 additions and 29 deletions

View file

@ -33,22 +33,22 @@
void __init(); void __init();
void __initheap(void); void __initheap(void);
void setup_hooks(void); void setup_hooks(void);
void setup_nintendo_paths(void);
void __libc_init_array(void); void __libc_init_array(void);
void setup_nintendo_paths(void);
void hook_function(uintptr_t source, uintptr_t target); void hook_function(uintptr_t source, uintptr_t target);
void *__stack_top; void *__stack_top;
uintptr_t text_base; uintptr_t text_base;
size_t fs_code_size; size_t fs_code_size;
u8 *fs_rw_mapping = NULL;
Handle self_proc_handle = 0;
char inner_heap[INNER_HEAP_SIZE]; char inner_heap[INNER_HEAP_SIZE];
size_t inner_heap_size = INNER_HEAP_SIZE; size_t inner_heap_size = INNER_HEAP_SIZE;
Handle self_proc_handle = 0;
u8 *fs_rw_mapping = NULL;
extern char _start; extern char _start;
extern char __argdata__; extern char __argdata__;
// Nintendo Path // Nintendo Path
// TODO
static char nintendo_path[0x80] = "Nintendo"; static char nintendo_path[0x80] = "Nintendo";
// 1.0.0 requires special path handling because it has separate album and contents paths. // 1.0.0 requires special path handling because it has separate album and contents paths.
@ -63,6 +63,7 @@ static const fs_offsets_t *fs_offsets;
// Defined by linkerscript // Defined by linkerscript
#define INJECTED_SIZE ((uintptr_t)&__argdata__ - (uintptr_t)&_start) #define INJECTED_SIZE ((uintptr_t)&__argdata__ - (uintptr_t)&_start)
#define INJECT_OFFSET(type, offset) (type)(text_base + INJECTED_SIZE + offset) #define INJECT_OFFSET(type, offset) (type)(text_base + INJECTED_SIZE + offset)
#define FS_CODE_BASE INJECT_OFFSET(uintptr_t, 0)
#define GENERATE_ADD(register, register_target, value) (0x91000000 | value << 10 | register << 5 | register_target) #define GENERATE_ADD(register, register_target, value) (0x91000000 | value << 10 | register << 5 | register_target)
#define GENERATE_ADRP(register, page_addr) (0x90000000 | ((((page_addr) >> 12) & 0x3) << 29) | ((((page_addr) >> 12) & 0x1FFFFC) << 3) | ((register) & 0x1F)) #define GENERATE_ADRP(register, page_addr) (0x90000000 | ((((page_addr) >> 12) & 0x3) << 29) | ((((page_addr) >> 12) & 0x1FFFFC) << 3) | ((register) & 0x1F))
@ -230,7 +231,7 @@ static void _map_fs_rw(void) {
do { do {
fs_rw_mapping = (u8 *)(smcGenerateRandomU64() & 0xFFFFFF000ull); fs_rw_mapping = (u8 *)(smcGenerateRandomU64() & 0xFFFFFF000ull);
rc = svcMapProcessMemory(fs_rw_mapping, self_proc_handle, INJECT_OFFSET(u64, 0), fs_code_size); rc = svcMapProcessMemory(fs_rw_mapping, self_proc_handle, FS_CODE_BASE, fs_code_size);
} while (rc == 0xDC01 || rc == 0xD401); } while (rc == 0xDC01 || rc == 0xD401);
if (rc != 0) if (rc != 0)
@ -240,7 +241,7 @@ static void _map_fs_rw(void) {
} }
static void _unmap_fs_rw(void) { static void _unmap_fs_rw(void) {
Result rc = svcUnmapProcessMemory(fs_rw_mapping, self_proc_handle, INJECT_OFFSET(u64, 0), fs_code_size); Result rc = svcUnmapProcessMemory(fs_rw_mapping, self_proc_handle, FS_CODE_BASE, fs_code_size);
if (rc != 0) if (rc != 0)
{ {
fatal_abort(Fatal_BadResult); fatal_abort(Fatal_BadResult);
@ -250,7 +251,7 @@ static void _unmap_fs_rw(void) {
} }
static void _write32(uintptr_t source, u32 value) { static void _write32(uintptr_t source, u32 value) {
*((u32 *)(fs_rw_mapping + (source - INJECT_OFFSET(u64, 0)))) = value; *((u32 *)(fs_rw_mapping + (source - FS_CODE_BASE))) = value;
} }
void hook_function(uintptr_t source, uintptr_t target) void hook_function(uintptr_t source, uintptr_t target)
@ -412,7 +413,7 @@ void __init()
text_base = meminfo.addr; text_base = meminfo.addr;
// Get code size // Get code size
svcQueryMemory(&meminfo, &pageinfo, INJECT_OFFSET(u64, 0)); svcQueryMemory(&meminfo, &pageinfo, FS_CODE_BASE);
fs_code_size = meminfo.size; fs_code_size = meminfo.size;
load_emummc_ctx(); load_emummc_ctx();

View file

@ -31,26 +31,26 @@
#define BIT(n) (1U<<(n)) #define BIT(n) (1U<<(n))
#endif #endif
typedef signed char s8; typedef int8_t s8;
typedef short s16; typedef int16_t s16;
typedef short SHORT; typedef int16_t SHORT;
typedef int s32; typedef int32_t s32;
typedef int INT; typedef int32_t INT;
typedef long LONG; typedef int64_t LONG;
typedef long long int s64; typedef int64_t s64;
typedef unsigned char u8; typedef uint8_t u8;
typedef unsigned char BYTE; typedef uint8_t BYTE;
typedef unsigned short u16; typedef uint16_t u16;
typedef unsigned short WORD; typedef uint16_t WORD;
typedef unsigned short WCHAR; typedef uint16_t WCHAR;
typedef unsigned int u32; typedef uint32_t u32;
typedef unsigned int UINT; typedef uint32_t UINT;
typedef unsigned long DWORD; typedef uint32_t DWORD;
typedef unsigned long long QWORD; typedef uint64_t QWORD;
typedef unsigned long long int u64; typedef uint64_t u64;
typedef volatile unsigned char vu8; typedef volatile uint8_t vu8;
typedef volatile unsigned short vu16; typedef volatile uint16_t vu16;
typedef volatile unsigned int vu32; typedef volatile uint32_t vu32;
typedef u32 Handle; ///< Kernel object handle. typedef u32 Handle; ///< Kernel object handle.
typedef u32 Result; ///< Function error code result type. typedef u32 Result; ///< Function error code result type.
@ -58,7 +58,6 @@ typedef u32 Result; ///< Function error code result type.
#define INVALID_HANDLE ((Handle) 0) #define INVALID_HANDLE ((Handle) 0)
#define CUR_PROCESS_HANDLE ((Handle) 0xFFFF8001) #define CUR_PROCESS_HANDLE ((Handle) 0xFFFF8001)
#ifndef __cplusplus #ifndef __cplusplus
typedef int bool; typedef int bool;
#define true 1 #define true 1