Compare commits

..

1 Commits

Author SHA1 Message Date
MerryMage
f4e2494bc0 arm_unicorn: Load/Save FPCR and FPSR to/from context 2018-12-17 22:48:25 +00:00
3 changed files with 9 additions and 6 deletions

View File

@@ -211,6 +211,8 @@ void ARM_Unicorn::SaveContext(ThreadContext& ctx) {
CHECKED(uc_reg_read(uc, UC_ARM64_REG_SP, &ctx.sp));
CHECKED(uc_reg_read(uc, UC_ARM64_REG_PC, &ctx.pc));
CHECKED(uc_reg_read(uc, UC_ARM64_REG_NZCV, &ctx.pstate));
CHECKED(uc_reg_read(uc, UC_ARM64_REG_FPCR, &ctx.fpcr));
CHECKED(uc_reg_read(uc, UC_ARM64_REG_FPSR, &ctx.fpsr));
for (auto i = 0; i < 29; ++i) {
uregs[i] = UC_ARM64_REG_X0 + i;
@@ -238,6 +240,8 @@ void ARM_Unicorn::LoadContext(const ThreadContext& ctx) {
CHECKED(uc_reg_write(uc, UC_ARM64_REG_SP, &ctx.sp));
CHECKED(uc_reg_write(uc, UC_ARM64_REG_PC, &ctx.pc));
CHECKED(uc_reg_write(uc, UC_ARM64_REG_NZCV, &ctx.pstate));
CHECKED(uc_reg_write(uc, UC_ARM64_REG_FPCR, &ctx.fpcr));
CHECKED(uc_reg_write(uc, UC_ARM64_REG_FPSR, &ctx.fpsr));
for (int i = 0; i < 29; ++i) {
uregs[i] = UC_ARM64_REG_X0 + i;

View File

@@ -145,13 +145,12 @@ void SM::RegisterService(Kernel::HLERequestContext& ctx) {
const std::string name(name_buf.begin(), end);
const auto is_light = static_cast<bool>(rp.PopRaw<u32>());
const auto max_session_count = rp.PopRaw<u32>();
const auto unk_bool = static_cast<bool>(rp.PopRaw<u32>());
const auto session_count = rp.PopRaw<u32>();
LOG_DEBUG(Service_SM, "called with name={}, max_session_count={}, is_light={}", name,
max_session_count, is_light);
LOG_DEBUG(Service_SM, "called with unk_bool={}", unk_bool);
auto handle = service_manager->RegisterService(name, max_session_count);
auto handle = service_manager->RegisterService(name, session_count);
if (handle.Failed()) {
LOG_ERROR(Service_SM, "failed to register service with error_code={:08X}",
handle.Code().raw);