OpenCores

* Amber ARM-compatible core

Issue List
Multiply Inconsistency with Real ARM(tm) #21
Closed sleary opened this issue over 9 years ago
sleary commented over 9 years ago

Picked up by my instruction Fuzzer

From http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0068b/CIHIHGGJ.html

Syntax MUL{cond}{S} Rd, Rm, Rs MLA{cond}{S} Rd, Rm, Rs, Rn where: cond is an optional condition code (see Conditional execution). S is an optional suffix. If S isspecified, the condition code flags are updated on the result of the operation (see Conditional execution). Rd is the ARM register for the result. Rm, Rs, Rn are ARM registers holding the operands. r15 cannot be used for any of Rd, Rm, Rs, or Rn. Rd cannot be the same as Rm.

So MUL r0,r0,r0 works perfectly on Amber but it doesnt work on any of the Emulators or a Real ARM. Just worth having a note of it here.

sleary commented over 9 years ago

This is more of a documentation thing than a bug. If someone develops using Amber their code may fail on a real arm.

csantifort commented over 9 years ago

The GNU assembler does give a warming if Rd and Rm are the same;

arm-none-linux-gnueabi-gcc -c -march=armv2a -mno-thumb-interwork -I../../sw/include -o mul.o mul.S mul.S: Assembler messages: mul.S:64: Rd and Rm should be different in mul

csantifort closed this over 9 years ago
sleary commented over 9 years ago

Fair enough. It being here and closed is good enough for me.


Assignee
No one
Labels
Bug