Added local compemu_test folder. I am testing machine code injection methods there.
Revert memory address arguments back from uaecptr to uae_u32.
It is too much of a hassle to make the code take care of 48bit addresses (used
on 64bit machines), but additional checks have been added (elsewhere) to detect
and inform if pointers are from the wrong (high) scope.
Generally speaking it should be safe to use pointers to static functions and
static variables. They *seem* to end up in the lower 32bit address space.
But everything on any stack looks fishy - in every test until now, variables on
the stack have been stored in the upper region.
removed emit_quad, it was the wrong direction. Fixed raw_mov* functions instead
to use the correct opcode now.
Removed emit_quad and added UDISFN calls for generated machine code.
Added an option to use udis86 to disassemble generated machine code. But there
should be a check whether udis86 is available be added.
Added an additional check to hinder the program to throuw a GUI into the users
face even when they set use_gui to false.
Added disassembler and direct call macro to the pushall_call_handler in
m68k_run_jit().
Added macros to:
- dissassemble machine code areas,
- compare pointers and generate 32bit offsets
- call machine code directly without illegal object<->function pointer conversion.
Moved uae_sem_init from td-posix/thread.h to td-posix/thread.c to bring it closer to the sdl semaphore handling.
If INLINE_DEBUG is defined, STATIC_INLINE and NOINLINE do nothing any more. This *can* make debugging with gdb a bit easier in certain circumstances.
Added local signal handling test directory to .gitignore
Marked the X86_ASSEMBLY defines with REMOVEME, it is nowhere set and if set manually the outcome isn't nice.
No idea what it was planned for, but it was never done anyway.
compemu_raw: Several fixes/changes:
- Add 64bit prefix for MOV opcodes to load into 64bit registers instead of the lower 32bit only.
- Add indirect jmp/call in raw_jmp*/raw_call whenever a direct jmp/call is not usable
- Changed vec() to be a real sigaction action. The used sigcontext method was marked deprecated with kernel 2.2. Which was.. uhm ... a while ago. ;)
- Added an optional backtrace to vec() if the signal could not be handled
- Added printing out the full register contents to vec() if the signal could not be handled
- Added optional disassambling of the calling code in vec() if the signal could not be handled.
Made UDISFN() macro smarter and added more calls to JITLOG where appopriate.
Made UDISFN() macro smarter, fixed direct call inline assembler.
Assigned sigaction handler to sa_sigaction instead of sa_handler.