Searched hist:b0f2f2976b4db05351117b0440b32bf0aac2c5c6 (Results 1 – 1 of 1) sorted by relevance
/openbmc/qemu/target/sh4/ |
H A D | translate.c | diff b0f2f2976b4db05351117b0440b32bf0aac2c5c6 Tue Apr 02 04:37:49 CDT 2024 Zack Buhman <zack@buhman.org> target/sh4: mac.w: memory accesses are 16-bit words
Before this change, executing a code sequence such as:
mova tblm,r0 mov r0,r1 mova tbln,r0 clrs clrmac mac.w @r0+,@r1+ mac.w @r0+,@r1+
.align 4 tblm: .word 0x1234 .word 0x5678 tbln: .word 0x9abc .word 0xdefg
Does not result in correct behavior:
Expected behavior: first macw : macl = 0x1234 * 0x9abc + 0x0 mach = 0x0
second macw: macl = 0x5678 * 0xdefg + 0xb00a630 mach = 0x0
Observed behavior (qemu-sh4eb, prior to this commit):
first macw : macl = 0x5678 * 0xdefg + 0x0 mach = 0x0
second macw: (unaligned longword memory access, SIGBUS)
Various SH-4 ISA manuals also confirm that `mac.w` is a 16-bit word memory access, not a 32-bit longword memory access.
Signed-off-by: Zack Buhman <zack@buhman.org> Reviewed-by: Yoshinori Sato <ysato@users.sourceforge.jp> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-Id: <20240402093756.27466-1-zack@buhman.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
|