mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
fix fable freeze
This commit is contained in:
@@ -101,7 +101,7 @@ DEF_HELPER_FLAGS_3(write_crN, TCG_CALL_NO_RWG, void, env, int, tl)
|
||||
#endif /* !CONFIG_USER_ONLY */
|
||||
|
||||
/* x86 FPU */
|
||||
#if defined(XBOX) && (defined(__x86_64__) || defined(__aarch64__))
|
||||
#if defined(XBOX) && defined(__x86_64__)
|
||||
#define HS_DEF_HELPER_1(name, ret, t1) \
|
||||
DEF_HELPER_1(name ## __soft, ret, t1) \
|
||||
DEF_HELPER_1(name ## __hard, ret, t1)
|
||||
|
||||
@@ -460,7 +460,15 @@ floatx80 int32_to_floatx80__hard(int32_t a, float_status *status)
|
||||
#endif /* USE_HARD_FPU */
|
||||
#endif /* XBOX && __x86_64__ */
|
||||
|
||||
#if defined(XBOX) && (defined(__x86_64__) || defined(__aarch64__))
|
||||
#ifndef FPU_HELPER_COUNT
|
||||
#define FPU_HELPER_COUNT() ((void)0)
|
||||
#endif
|
||||
|
||||
#ifndef MAP_HELPER_SOFT_HARD
|
||||
#define MAP_HELPER_SOFT_HARD(func) helper_ ## func ## __soft
|
||||
#endif
|
||||
|
||||
#if defined(XBOX) && defined(__x86_64__)
|
||||
#ifdef USE_HARD_FPU
|
||||
#define MAP_HELPER_SOFT_HARD(func) helper_ ## func ## __hard
|
||||
extern int g_fpu_helper_calls;
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
#if defined(XBOX) && (defined(__x86_64__) || defined(__aarch64__))
|
||||
/*
|
||||
* On AArch64, the hard FPU helper path currently uses native double
|
||||
* precision and does not correctly emulate x87 extended-precision
|
||||
* compare/equality semantics. Disable the hard-FPU variant there to
|
||||
* avoid equality bugs in games like Fable: The Lost Chapters on Android.
|
||||
*/
|
||||
#if defined(XBOX) && defined(__x86_64__)
|
||||
#define USE_HARD_FPU 1
|
||||
#include "fpu_helper.c"
|
||||
#endif
|
||||
|
||||
@@ -53,7 +53,7 @@ struct FPUProfileCounters g_fpu_profile;
|
||||
int g_fpu_helper_calls;
|
||||
#endif
|
||||
|
||||
#if defined(XBOX) && (defined(__x86_64__) || defined(__aarch64__))
|
||||
#if defined(XBOX) && defined(__x86_64__)
|
||||
#include "ui/xemu-settings.h"
|
||||
#define MAP_GEN_HELPER_SOFT_HARD(name) \
|
||||
(g_use_fp_jit ? gen_helper_##name##__hard : gen_helper_##name##__soft)
|
||||
@@ -4393,7 +4393,7 @@ void tcg_x86_init(void)
|
||||
fpstt = tcg_global_mem_new_i32(tcg_env,
|
||||
offsetof(CPUX86State, fpstt), "fpstt");
|
||||
|
||||
#if defined(XBOX) && (defined(__x86_64__) || defined(__aarch64__))
|
||||
#if defined(XBOX) && defined(__x86_64__)
|
||||
g_use_fp_jit = g_config.perf.fp_jit;
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user