qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] Qemu arm emulation
@ 2004-12-03 21:07 Charlie Baylis
  2004-12-03 21:13 ` Paul Brook
  2005-02-04 12:30 ` Ulrich Hecht
  0 siblings, 2 replies; 8+ messages in thread
From: Charlie Baylis @ 2004-12-03 21:07 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 1439 bytes --]


Hi Fabrice

I have had a look at some faults in the ARM port of Qemu. I have discovered a
couple of bugs. To avoid difficulties with my employer I can't distribute my
patch which contains the fixes, but they are fairly trivial so I am detailing
the changes required here.

1. The RRX operand shift on data processing instructions is incorrectly decoded
as a rotate right (ROR) of 0 bits.
RRX should have the effect of an extended rotate right of 1 bit where the carry
flag is shifted into the top bit of the result. If the S bit is set, then the
carry flag is set to the bottom bit of the source value.

2. Shifter carry out for immediates
When an immediate value is generated the shifter carry out is set to bit31 of
the resulting immediate if the shift value is non zero. If the shift value
is zero, then the shifter carry out has the value of the C flag.

Therefore, the following instructions should alter the carry flag when used
with an immediate which has a non-zero shift. 
ANDS BICS EORS MOVS MVNS ORRS TEQS and TSTS
(The remaining data processing instructions generate the C flag from the
calculation performed by the instruction)

Test case is attached as a C file and as assembler file. The assembler function
f will return if these bugs are fixed and loops forever otherwise. I can email
you a statically linked binary if you don't have an ARM toolchain.


Apologies for not being able to just send a patch.

Regards
Charlie

[-- Attachment #2: p.c --]
[-- Type: text/x-csrc, Size: 107 bytes --]


#include <unistd.h>

extern unsigned f();

int main(unsigned int argc, char**argv)
{
  f();
  return 0;
}

[-- Attachment #3: ps.s --]
[-- Type: text/plain, Size: 273 bytes --]

	.file	"ps.s"
	.section	.rodata
	.align	2
	.global f

f:
        cmp r0, r0 @ set carry flag
        mov r0, r0, rrx
        cmp r0, #0x80000000
loop1:  bne loop1
        cmp r0, r0 @ set carry flag
        tst r0, #0x04000000
loop2:  bcs loop2
        mov pc, lr
        

^ permalink raw reply	[flat|nested] 8+ messages in thread
* [Qemu-devel] qemu & arm emulation
@ 2005-11-30 19:48 Philippe BEAU
  0 siblings, 0 replies; 8+ messages in thread
From: Philippe BEAU @ 2005-11-30 19:48 UTC (permalink / raw)
  To: qemu-devel

Hello all,

At first, I'm new to this mailing-list. I subscribe it because i got a few
problem with using qemu & arm emulation.

I would like to know if it's possible to install a debian running arm
processor with qemu ?

Is anyone did it ? if yes, can he contact me about this ?

Best regards

Philippe,
Email / philippe@beau.nom.fr

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2005-11-30 19:49 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-12-03 21:07 [Qemu-devel] Qemu arm emulation Charlie Baylis
2004-12-03 21:13 ` Paul Brook
2004-12-08 22:33   ` Fabrice Bellard
2004-12-08 22:48     ` Paul Brook
2005-02-04 12:30 ` Ulrich Hecht
2005-02-04 14:19   ` Paul Brook
2005-02-05 12:45     ` Ulrich Hecht
  -- strict thread matches above, loose matches on Subject: below --
2005-11-30 19:48 [Qemu-devel] qemu & " Philippe BEAU

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).