mirror of
https://github.com/Garhoogin/RuntimeCodeModules.git
synced 2025-06-19 17:05:34 -04:00
Allow using hook.h in assembly source files
This commit is contained in:
parent
a608559cbf
commit
c4b8d7d8b5
@ -1,10 +1,15 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLER__
|
||||||
|
|
||||||
#ifdef SDK_ARM9
|
#ifdef SDK_ARM9
|
||||||
# include <nitro.h>
|
#include <nitro.h>
|
||||||
#else
|
#else //SDK_ARM9
|
||||||
# include <nds.h>
|
#include <nds.h>
|
||||||
#endif
|
#endif //SDK_ARM9
|
||||||
|
|
||||||
|
#endif //__ASSEMBLER__
|
||||||
|
|
||||||
|
|
||||||
#define R_ARM_ABS32 2
|
#define R_ARM_ABS32 2
|
||||||
#define R_ARM_CALL 28
|
#define R_ARM_CALL 28
|
||||||
@ -30,6 +35,8 @@
|
|||||||
#define AUX_SHIFT 31
|
#define AUX_SHIFT 31
|
||||||
#define AUX_MASK 0x80000000
|
#define AUX_MASK 0x80000000
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLER__
|
||||||
|
|
||||||
typedef struct HOOK_TABLE_ENTRY_ {
|
typedef struct HOOK_TABLE_ENTRY_ {
|
||||||
u32 branchSrcAddr : 28; //memory location of patch source
|
u32 branchSrcAddr : 28; //memory location of patch source
|
||||||
u32 type : 3; //type of patch
|
u32 type : 3; //type of patch
|
||||||
@ -80,6 +87,21 @@ typedef void (*RCM_UNLOAD_CALLBACK) (u32 imageBase);
|
|||||||
#define HOOK_TREPL(addr,dest) ((void *) ((HOOK_TYPE_TREPL << HOOK_SHIFT) + (u32) (addr))), (void *) dest
|
#define HOOK_TREPL(addr,dest) ((void *) ((HOOK_TYPE_TREPL << HOOK_SHIFT) + (u32) (addr))), (void *) dest
|
||||||
#define HOOK_TNSUB(addr,dest) HOOK_DATA16(addr, 0xB500), HOOK_TREPL(((u32) (addr)) + 2, dest), HOOK_DATA16(((u32) (addr)) + 6, 0xBD00)
|
#define HOOK_TNSUB(addr,dest) HOOK_DATA16(addr, 0xB500), HOOK_TREPL(((u32) (addr)) + 2, dest), HOOK_DATA16(((u32) (addr)) + 6, 0xBD00)
|
||||||
|
|
||||||
|
#else //__ASSEMBLER__
|
||||||
|
|
||||||
|
#define HOOK_DATA8(addr,b) ((HOOK_TYPE_DATA8 << HOOK_SHIFT) + addr), b
|
||||||
|
#define HOOK_DATA16(addr,hw) ((HOOK_TYPE_DATA16 << HOOK_SHIFT) + addr), hw
|
||||||
|
#define HOOK_DATA32(addr,w) ((HOOK_TYPE_DATA32 << HOOK_SHIFT) + addr), w
|
||||||
|
#define HOOK_LOAD(dest) ((HOOK_TYPE_LOAD << HOOK_SHIFT)), dest
|
||||||
|
#define HOOK_UNLOAD(dest) ((HOOK_TYPE_UNLOAD << HOOK_SHIFT)), dest
|
||||||
|
#define HOOK_AREPL(addr,dest) ((HOOK_TYPE_AREPL << HOOK_SHIFT) + addr), dest
|
||||||
|
#define HOOK_ANSUB(addr,dest) ((HOOK_TYPE_ANSUB << HOOK_SHIFT) + addr), dest
|
||||||
|
#define HOOK_TREPL(addr,dest) ((HOOK_TYPE_TREPL << HOOK_SHIFT) + addr), dest
|
||||||
|
#define HOOK_TNSUB(addr,dest) HOOK_DATA16(addr, 0xB500), HOOK_TREPL((addr) + 2, dest), HOOK_DATA16((addr) + 6, 0xBD00)
|
||||||
|
|
||||||
|
#endif //__ASSEMBLER__
|
||||||
|
|
||||||
|
|
||||||
//NCP-like synonyms
|
//NCP-like synonyms
|
||||||
#define HOOK_JUMP_AA HOOK_ANSUB
|
#define HOOK_JUMP_AA HOOK_ANSUB
|
||||||
#define HOOK_JUMP_TA HOOK_TNSUB
|
#define HOOK_JUMP_TA HOOK_TNSUB
|
||||||
@ -91,4 +113,13 @@ typedef void (*RCM_UNLOAD_CALLBACK) (u32 imageBase);
|
|||||||
#define HOOK_SET16 HOOK_DATA16
|
#define HOOK_SET16 HOOK_DATA16
|
||||||
#define HOOK_SET32 HOOK_DATA32
|
#define HOOK_SET32 HOOK_DATA32
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLER__
|
||||||
|
|
||||||
#define HOOK_TABLE(...) static volatile void *__attribute__((section(".ftbl"))) __attribute__((__used__)) __ftbl[] = {__VA_ARGS__}
|
#define HOOK_TABLE(...) static volatile void *__attribute__((section(".ftbl"))) __attribute__((__used__)) __ftbl[] = {__VA_ARGS__}
|
||||||
|
|
||||||
|
#else //__ASSEMBLER__
|
||||||
|
|
||||||
|
#define HOOK_TABLE(...) .section .ftbl ; .word __VA_ARGS__ ; .section .text
|
||||||
|
|
||||||
|
#endif //__ASSEMBLER__
|
||||||
|
@ -75,7 +75,7 @@ CFLAGS := -g -Wall -Os\
|
|||||||
CFLAGS += $(INCLUDE)
|
CFLAGS += $(INCLUDE)
|
||||||
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
|
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
|
||||||
|
|
||||||
ASFLAGS := -g $(ARCH)
|
ASFLAGS := -g $(ARCH) $(INCLUDE)
|
||||||
LDFLAGS = -r -T $(CURDIR)/../../symbols.x -T $(CURDIR)/../linker.x -g $(ARCH) -Map newcode.map
|
LDFLAGS = -r -T $(CURDIR)/../../symbols.x -T $(CURDIR)/../linker.x -g $(ARCH) -Map newcode.map
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user