mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-10-28 00:58:35 +00:00
ldstub [addr], reg incorrectly reads a signed byte from memory which causes problems in the 32-bit Solaris mutex code. Here the byte value being read is 0xff which is incorrectly sign-extended to 0xffffffff before being written back to the target register causing lock detection to behave incorrectly. This fixes the intermittent hangs and MUTEX_HELD warnings issued to the console when running 32-bit Solaris images under qemu-system-sparc. With thanks to Joseph Dery for providing a condensed test image to consistently reproduce the problem on demand, and Martin Husemann for allowing me access to real hardware for comparison. Backports commit 4553e10360a0713e31647220ed396942f9a6fca0 from qemu |
||
|---|---|---|
| .. | ||
| cc_helper.c | ||
| cpu-qom.h | ||
| cpu.c | ||
| cpu.h | ||
| fop_helper.c | ||
| helper.c | ||
| helper.h | ||
| int32_helper.c | ||
| int64_helper.c | ||
| ldst_helper.c | ||
| Makefile.objs | ||
| mmu_helper.c | ||
| TODO | ||
| translate.c | ||
| unicorn.c | ||
| unicorn.h | ||
| unicorn64.c | ||
| vis_helper.c | ||
| win_helper.c | ||