qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] ARM7TDMI emulation


From: Filip Navara
Subject: Re: [Qemu-devel] [PATCH] ARM7TDMI emulation
Date: Tue, 16 Jun 2009 23:47:01 +0200

On Tue, Jun 16, 2009 at 10:49 PM, Filip Navara <address@hidden> wrote:
Do you know of a good summary reference which lists which instructions
are available in each ARM architecture level from ARMv4 up to ARMv7
and it's variants?

My main reference are the technical reference manuals for ARM processors downloaded from Atmel site. I'm not sure about the license, but it states "This document is Open Access. This document has no restriction on distribution." Other reference sources are Skyeye emulation (has to be taken with grain of salt and checked against the manuals, but it makes distinction between v4, v5 and v5e) and Paul Brook.

I've certainly missed handling BLX (at least on three places) in the patch and possibly more. I'll post an updated patch soon.

The list may not be complete, but this is what I compiled from various sources, including ARM official documentation. For the ARMv4t emulation I'd need to do the following:

- Treat CDP2, LDC2, STC2, BLX, MRC2, MCR2, MCRR, SMUL, SMLA, SMULW, SMLAW, SMLAL, QADD, QSUB, QDADD, QDSUB, BKPT, 64-bit LDR/STR, PLD as undefined instructions.
- Do not change to/from Thumb mode on LDR/LDM/POP to r15 depending on the bit 0 of the value.
- Add the base updated data-abort model.

Other changes between ARMv5 and ARMv4 include:

- MULS, MLAS corrupt C flag
- UMULLS, UMLALS, SMULLS and SMLALS corrupt the C and V flags

I don't plan to implement corrupting the flags. Implementing ARMv4 instead of ARMv4t would then be matter of disabling the BX instruction. Anything I missed?

Best regards,
Filip Navara



reply via email to

[Prev in Thread] Current Thread [Next in Thread]