diff --git a/src/backends/unicorn-emulator/unicorn_x86_64_emulator.cpp b/src/backends/unicorn-emulator/unicorn_x86_64_emulator.cpp index 87db9a92..d8a4185c 100644 --- a/src/backends/unicorn-emulator/unicorn_x86_64_emulator.cpp +++ b/src/backends/unicorn-emulator/unicorn_x86_64_emulator.cpp @@ -244,8 +244,11 @@ namespace unicorn void load_gdt(const pointer_type address, const uint32_t limit) override { - const std::array gdtr = {0, address, limit, 0}; - this->write_register(x86_register::gdtr, gdtr.data(), gdtr.size() * sizeof(uint64_t)); + uc_x86_mmr gdt{}; + gdt.base = address; + gdt.limit = limit; + + this->write_register(x86_register::gdtr, &gdt, sizeof(gdt)); } void set_segment_base(const x86_register base, const pointer_type value) override