Some x64 improvements

This commit is contained in:
dbalatoni13 2025-04-11 18:27:23 +02:00
parent dfc51f4912
commit 9e062adfa4
9 changed files with 135 additions and 116 deletions

View file

@ -104,7 +104,7 @@ struct model_data {
u16 unk_26;
u16 unk_28[8];
s16 unk_38[8];
u32 unk_48;
uintptr_t unk_48;
u32 unk_4C;
u32 attr;
u32 motion_attr;

View file

@ -134,20 +134,20 @@ typedef struct _JUMP_BUFFER {
#endif
#if defined(_M_IX86) || defined(__i386__)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Eip = (size_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Esp = (size_t)sp
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Eip = (uintptr_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Esp = (uintptr_t)sp
#elif defined(_M_X64) || defined(__x86_64__)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Rip = (size_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Rsp = (size_t)sp
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Rip = (uintptr_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Rsp = (uintptr_t)sp
#elif defined(_M_ARM) || defined(__arm__)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (size_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (uintptr_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (uintptr_t)sp
#elif defined(_M_ARM64) || defined(__aarch64__)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Lr = (size_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Lr = (uintptr_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (uintptr_t)sp
#elif defined(__riscv)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->ra = (size_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->sp = (size_t)sp
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->ra = (uintptr_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->sp = (uintptr_t)sp
#endif
#else

View file

@ -26,7 +26,7 @@ typedef struct process {
u16 stat;
u16 prio;
s32 sleep_time;
u32 base_sp;
uintptr_t base_sp;
jmp_buf jump;
void (*dtor)(void);
void *user_data;

View file

@ -145,7 +145,7 @@ typedef struct HsfObjectData32b {
float baseMorph;
float morphWeight[33];
} mesh;
struct hsf_object *replica;
u32 replica;
};
u32 face;