[SH] Fix mac.w insn simulation for SH2 and above

Oleg Endo <[email protected]> Sun, 02 Aug 2026 22:53:56 +0900
Newsgroups gmane.comp.gdb.patches
Message-ID <[email protected]>
--=-EEyPY0+jXTp9dD56xU7m
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi,

The simulator currently implements only the SH1 version of the mac.w
instruction.  On SH1 the MACH:MACL accumulator register is only 42-bit.  It
was extended to 64-bit on SH2 and every variant that followed after.

The issue probably never showed up because GCC hasn't been able to emit the
SH integer mac instructions.  I ran into this because I was trying to do
exactly that and while running some tests on sh-sim.

The attached patch uses the bfd_mach field to distinguish between SH1 and
not-SH1 in the simulation of the mac.w instruction, in a similar way as it'=
s
already been done for some SH2A instructions.


OK to commit & push?

Best regards,
Oleg Endo

--=-EEyPY0+jXTp9dD56xU7m
Content-Disposition: attachment; filename="0001-simsh-fix-macw-insn-for-SH2.patch"
Content-Transfer-Encoding: base64
Content-Type: text/x-patch; name="0001-simsh-fix-macw-insn-for-SH2.patch";
	charset="UTF-8"

RnJvbSA2YjA3ZTNkYWE3M2FjYWMxZDE4MDBjOTRjZGZhZTBiODM1MDlmMmQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBPbGVnIEVuZG8gPG9sZWdlbmRvQGdjYy5nbnUub3JnPgpEYXRl
OiBTdW4sIDIgQXVnIDIwMjYgMTk6Mzc6MjEgKzA5MDAKU3ViamVjdDogW1BBVENIXSBzaW0vc2g6
IGZpeCBtYWMudyBpbnNuIGZvciBTSDIrCgpPbiBTSDEgdGhlIE1BQ0g6TUFDTCBhY2N1bXVsYXRv
ciBpcyBvbmx5IDQyIGJpdHMgd2lkZS4gIE9uIFNIMiBhbmQgYWJvdmUgaXQncyA2NApiaXRzIHdp
ZGUuICBFbXVsYXRlIHRoZSBjb3JyZXNwb25kaW5nIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSBiZmRf
bWFjaCBmaWVsZC4KLS0tCiBzaW0vc2gvaW50ZXJwLmMgfCA3ICsrKysrLS0KIDEgZmlsZSBjaGFu
Z2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc2ltL3No
L2ludGVycC5jIGIvc2ltL3NoL2ludGVycC5jCmluZGV4IGM4YzJhNzQuLmNjNGFlMmMgMTAwNjQ0
Ci0tLSBhL3NpbS9zaC9pbnRlcnAuYworKysgYi9zaW0vc2gvaW50ZXJwLmMKQEAgLTExOTcsOCAr
MTE5NywxMSBAQCBtYWN3IChpbnQgKnJlZ3MsIHVuc2lnbmVkIGNoYXIgKm1lbW9yeSwgaW50IG4s
IGludCBtLCBpbnQgZW5kaWFudykKICAgICAgIGxvbmcgbWFjaDsKICAgICAgIC8qIEFkZCB0byBN
QUNIIHRoZSBzaWduIGV4dGVuZGVkIHByb2R1Y3QsIGFuZCBjYXJyeSBmcm9tIGxvdyBzdW0uICAq
LwogICAgICAgbWFjaCA9IE1BQ0ggKyAoLShwcm9kIDwgMCkpICsgKCh1bnNpZ25lZCBsb25nKSBz
dW0gPCBwcm9kKTsKLSAgICAgIC8qIFNpZ24gZXh0ZW5kIGF0IDEwOnRoIGJpdCBpbiBNQUNILiAg
Ki8KLSAgICAgIE1BQ0ggPSAobWFjaCAmIDB4MWZmKSB8IC0obWFjaCAmIDB4MjAwKTsKKyAgICAg
IC8qIFNIMTogIE1BQ0g6TUFDTCBpcyA0MiBiaXRzIHdpZGUsIHNpZ24gZXh0ZW5kIGF0IHRoZSAx
MDp0aCBiaXQgaW4gTUFDSC4KKyAgICAgICAgIFNIMis6IE1BQ0g6TUFDTCBpcyA2NCBiaXRzIHdp
ZGUuICAqLworICAgICAgaWYgKHNhdmVkX3N0YXRlLmFzcmVncy5iZmRfbWFjaCA9PSBiZmRfbWFj
aF9zaCkKKwltYWNoID0gKG1hY2ggJiAweDFmZikgfCAtKG1hY2ggJiAweDIwMCk7CisgICAgICBN
QUNIID0gbWFjaDsKICAgICB9CiAgIE1BQ0wgPSBzdW07CiB9Ci0tCmxpYmdpdDIgMS45LjAKCg==


--=-EEyPY0+jXTp9dD56xU7m--