mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-17 21:26:13 -07: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. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Reviewed-By: Artyom Tarasenko <atar4qemu@gmail.com> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> |
||
|---|---|---|
| .. | ||
| cc_helper.c | ||
| cpu-qom.h | ||
| cpu.c | ||
| cpu.h | ||
| fop_helper.c | ||
| gdbstub.c | ||
| helper.c | ||
| helper.h | ||
| int32_helper.c | ||
| int64_helper.c | ||
| ldst_helper.c | ||
| machine.c | ||
| Makefile.objs | ||
| mmu_helper.c | ||
| monitor.c | ||
| TODO | ||
| translate.c | ||
| vis_helper.c | ||
| win_helper.c | ||