Skip to content

Commit f6ede72

Browse files
committed
arm: make sure RunFast is on
seems already to be the case on 3ds at least
1 parent 0d51542 commit f6ede72

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

frontend/main.c

+10
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,16 @@ int emu_core_init(void)
513513
SysPrintf("Starting PCSX-ReARMed " REV "%s\n", get_build_info());
514514
SysPrintf("build time: " __DATE__ " " __TIME__ "\n");
515515

516+
#if defined(__arm__) && defined(__VFP_FP__)
517+
// RunFast mode
518+
u32 fpscr = ~0;
519+
__asm__ volatile("fmrx %0, fpscr" : "=r"(fpscr));
520+
SysPrintf("old fpscr = %08x\n", fpscr);
521+
fpscr &= ~0x00009f9f;
522+
fpscr |= 0x03000000; // DN | FZ
523+
__asm__ volatile("fmxr fpscr, %0" :: "r"(fpscr));
524+
#endif
525+
516526
#ifdef HAVE_RTHREADS
517527
pcsxr_sthread_init();
518528
#endif

plugins/gpulib/gpulib_thread_if.c

+9
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,15 @@ static void *video_thread_main(void *arg) {
7676
static int processed = 0;
7777
#endif /* _3DS */
7878

79+
#if defined(__arm__) && defined(__VFP_FP__)
80+
// RunFast mode
81+
u32 fpscr = ~0;
82+
__asm__ volatile("fmrx %0, fpscr" : "=r"(fpscr));
83+
fpscr &= ~0x00009f9f;
84+
fpscr |= 0x03000000; // DN | FZ
85+
__asm__ volatile("fmxr fpscr, %0" :: "r"(fpscr));
86+
#endif
87+
7988
while(1) {
8089
int result, cycles_dummy = 0, last_cmd, start, end;
8190
video_thread_queue *queue;

0 commit comments

Comments
 (0)