codegen: don't use inline asm on MSVC/ARM
This commit is contained in:
@@ -327,9 +327,13 @@ printf("block_pos=%i\n", block_pos);
|
|||||||
|
|
||||||
block_write_data = NULL;
|
block_write_data = NULL;
|
||||||
//fatal("block_pos=%i\n", block_pos);
|
//fatal("block_pos=%i\n", block_pos);
|
||||||
|
#if !defined _MSC_VER || defined __clang__
|
||||||
asm("vmrs %0, fpscr\n"
|
asm("vmrs %0, fpscr\n"
|
||||||
: "=r" (cpu_state.old_fp_control)
|
: "=r" (cpu_state.old_fp_control)
|
||||||
);
|
);
|
||||||
|
#else
|
||||||
|
cpu_state.old_fp_control = _controlfp();
|
||||||
|
#endif
|
||||||
if ((cpu_state.old_fp_control >> 22) & 3)
|
if ((cpu_state.old_fp_control >> 22) & 3)
|
||||||
fatal("VFP not in nearest rounding mode\n");
|
fatal("VFP not in nearest rounding mode\n");
|
||||||
}
|
}
|
||||||
|
@@ -332,9 +332,13 @@ void codegen_backend_init()
|
|||||||
|
|
||||||
codegen_allocator_clean_blocks(block->head_mem_block);
|
codegen_allocator_clean_blocks(block->head_mem_block);
|
||||||
|
|
||||||
|
#if !defined _MSC_VER || defined __clang__
|
||||||
asm("mrs %0, fpcr\n"
|
asm("mrs %0, fpcr\n"
|
||||||
: "=r" (cpu_state.old_fp_control)
|
: "=r" (cpu_state.old_fp_control)
|
||||||
);
|
);
|
||||||
|
#else
|
||||||
|
cpu_state.old_fp_control = _controlfp();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void codegen_set_rounding_mode(int mode)
|
void codegen_set_rounding_mode(int mode)
|
||||||
|
Reference in New Issue
Block a user