44 lines
813 B
HolyC
44 lines
813 B
HolyC
/* clang-format off */
|
|
|
|
WinMax;
|
|
AutoComplete(0);
|
|
|
|
U0 @patch_call_rel32(U32 from, U32 to)
|
|
{
|
|
*(from(U8*)) = 0xE8;
|
|
*((from + 1)(I32*)) = to - from - 5;
|
|
}
|
|
|
|
U0 @patch_jmp_rel32(U32 from, U32 to)
|
|
{
|
|
*(from(U8*)) = 0xE9;
|
|
*((from + 1)(I32*)) = to - from - 5;
|
|
}
|
|
|
|
U0 @sse_enable()
|
|
{
|
|
/* clang-format off */
|
|
asm
|
|
{
|
|
MOV_EAX_CR0
|
|
AND AX, 0xFFFB // clear coprocessor emulation CR0.EM
|
|
OR AX, 0x2 // set coprocessor monitoring CR0.MP
|
|
MOV_CR0_EAX
|
|
MOV_EAX_CR4
|
|
OR AX, 3 << 9 // set CR4.OSFXSR and CR4.OSXMMEXCPT at the same time
|
|
MOV_CR4_EAX
|
|
}
|
|
/* clang-format on */
|
|
}
|
|
|
|
@sse_enable;
|
|
|
|
// FFI support files
|
|
#include "FFI/Base";
|
|
#include "FFI/LibC";
|
|
#include "FFI/ELF64";
|
|
|
|
// LibTemple support files
|
|
#include "LibTemple/OS";
|
|
|
|
/* clang-format on */
|