qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@false.org>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] ARM
Date: Thu, 10 Jul 2003 12:17:18 -0400	[thread overview]
Message-ID: <20030710161718.GA29632@nevyn.them.org> (raw)
In-Reply-To: <3F0C71CD.30808@free.fr>

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

On Wed, Jul 09, 2003 at 09:49:33PM +0200, Fabrice Bellard wrote:
> Daniel Jacobowitz wrote:
> >I was just playing with the ARM support, it's great to see it taking
> >shape :)  Fabrice, are you still investigating it, or does it work for
> >you?  My local ARM setup crashes a few hundred instructions into ld.so;
> >a loop runs for too long and hits the top of the stack.
> >
> 
> With my latest commits it is working: QEMU can launch dynamically linked 
> 'ls' and 'bash' processes. I will provide soon a binary archive so that 
> people can at least try it if they have problems.

Still doesn't work here.  I've attached the debugging output if you're
curious; I won't have time to debug it properly until next week.  It
looks like something wrong with the conditional jump.

> Warning: no FPU emulation is done. I just added the necessary code to 
> skip the few FPU instructions present in the libc. If anyone has ideas 
> about FPU on ARM, I am interested. Unfortunately the Linux distributions 
> seem to use the kernel based NetWinder FPU emulator.

Yes; here we use userspace software floating point generally instead. 
Hardware which actually has the FPA unit is rare (is there any
supported?)

> I tested the ARM support with an ARM glibc-2.2.5 from a debian 3.0 
> installed on a StrongARM board.

My failing test is from a later version of glibc and GCC.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer

[-- Attachment #2: qemu.log --]
[-- Type: text/plain, Size: 8062 bytes --]

start    end      size     prot
00008000-00019000 00011000 r-x
00020000-00021000 00001000 rw-
40158000-401d8000 00080000 rw-
401d8000-401d9000 00001000 ---
401d9000-401ef000 00016000 r-x
401ef000-401f6000 00007000 ---
401f6000-401f7000 00001000 rw-
401f7000-401f8000 00001000 rwx
401f8000-421d9000 01fe1000 ---
start_brk   0x00020b0c
end_code    0x00018240
start_code  0x00008000
end_data    0x00020b0c
start_stack 0x401d7604
brk         0x00020b0c
entry       0x401dad10
----------------
IN: 
0x401dad10:  mov	r0, sp
0x401dad14:  bl	0x401daeac

OP:
0x0000: movl_T1_r13
0x0001: movl_r0_T1
0x0002: movl_T0_im 0x401dad18
0x0003: movl_r14_T0
0x0004: jmp 0x800764a0 0x401daeac
0x0005: end

OUT: [size=35]
0x802364a0:  movl   0x34(%ebp),%esi
0x802364a3:  movl   %esi,0x0(%ebp)
0x802364a6:  movl   $0x401dad18,%ebx
0x802364ab:  movl   %ebx,0x38(%ebp)
0x802364ae:  jmp    *0x800764c8
0x802364b4:  movl   %esi,%esi
0x802364b6:  movl   $0x800764a1,%ebx
0x802364bb:  movl   $0x401daeac,0x3c(%ebp)
0x802364c2:  ret    

----------------
IN: 
0x401daeac:  stmdb	sp!, {r4, r5, r6, r7, r8, r9, r10, r11, lr}
0x401daeb0:  ldr	r10, [pc, #1584]	; 0x401db4e8
0x401daeb4:  sub	sp, sp, #464	; 0x1d0
0x401daeb8:  mov	r2, #0	; 0x0
0x401daebc:  str	r0, [sp, #12]
0x401daec0:  add	r10, pc, r10
0x401daec4:  mov	r1, r2
0x401daec8:  add	r3, sp, #464	; 0x1d0
0x401daecc:  add	r2, r2, #1	; 0x1
0x401daed0:  cmp	r2, #52	; 0x34
0x401daed4:  str	r1, [r3, -#400]
0x401daed8:  add	r3, r3, #4	; 0x4
0x401daedc:  bls	0x401daecc

OP:
0x0000: movl_T1_r13
0x0001: addl_T1_im 0xffffffdc
0x0002: movl_T0_r4
0x0003: stl_T0_T1
0x0004: addl_T1_im 0x4
0x0005: movl_T0_r5
0x0006: stl_T0_T1
0x0007: addl_T1_im 0x4
0x0008: movl_T0_r6
0x0009: stl_T0_T1
0x000a: addl_T1_im 0x4
0x000b: movl_T0_r7
0x000c: stl_T0_T1
0x000d: addl_T1_im 0x4
0x000e: movl_T0_r8
0x000f: stl_T0_T1
0x0010: addl_T1_im 0x4
0x0011: movl_T0_r9
0x0012: stl_T0_T1
0x0013: addl_T1_im 0x4
0x0014: movl_T0_r10
0x0015: stl_T0_T1
0x0016: addl_T1_im 0x4
0x0017: movl_T0_r11
0x0018: stl_T0_T1
0x0019: addl_T1_im 0x4
0x001a: movl_T0_r14
0x001b: stl_T0_T1
0x001c: addl_T1_im 0xffffffe0
0x001d: movl_r13_T1
0x001e: movl_T1_im 0x401daeb8
0x001f: addl_T1_im 0x630
0x0020: ldl_T0_T1
0x0021: movl_r10_T0
0x0022: movl_T1_im 0x1d0
0x0023: movl_T0_r13
0x0024: subl_T0_T1
0x0025: movl_r13_T0
0x0026: movl_T1_im 0x0
0x0027: movl_r2_T1
0x0028: movl_T1_r13
0x0029: addl_T1_im 0xc
0x002a: movl_T0_r0
0x002b: stl_T0_T1
0x002c: movl_T1_r10
0x002d: movl_T0_im 0x401daec8
0x002e: addl_T0_T1
0x002f: movl_r10_T0
0x0030: movl_T1_r2
0x0031: movl_r1_T1
0x0032: movl_T1_im 0x1d0
0x0033: movl_T0_r13
0x0034: addl_T0_T1
0x0035: movl_r3_T0
0x0036: movl_T1_im 0x1
0x0037: movl_T0_r2
0x0038: addl_T0_T1
0x0039: movl_r2_T0
0x003a: movl_T1_im 0x34
0x003b: movl_T0_r2
0x003c: subl_T0_T1_cc
0x003d: movl_T1_r3
0x003e: addl_T1_im 0xfffffe70
0x003f: movl_T0_r1
0x0040: stl_T0_T1
0x0041: movl_T1_im 0x4
0x0042: movl_T0_r3
0x0043: addl_T0_T1
0x0044: movl_r3_T0
0x0045: test_hi 0x800764d8 0x401daee0
0x0046: jmp 0x800764d8 0x401daecc
0x0047: end

OUT: [size=323]
0x802364d0:  movl   0x34(%ebp),%esi
0x802364d3:  addl   $0xffffffdc,%esi
0x802364d9:  movl   0x10(%ebp),%ebx
0x802364dc:  movl   %ebx,(%esi)
0x802364de:  addl   $0x4,%esi
0x802364e4:  movl   0x14(%ebp),%ebx
0x802364e7:  movl   %ebx,(%esi)
0x802364e9:  addl   $0x4,%esi
0x802364ef:  movl   0x18(%ebp),%ebx
0x802364f2:  movl   %ebx,(%esi)
0x802364f4:  addl   $0x4,%esi
0x802364fa:  movl   0x1c(%ebp),%ebx
0x802364fd:  movl   %ebx,(%esi)
0x802364ff:  addl   $0x4,%esi
0x80236505:  movl   0x20(%ebp),%ebx
0x80236508:  movl   %ebx,(%esi)
0x8023650a:  addl   $0x4,%esi
0x80236510:  movl   0x24(%ebp),%ebx
0x80236513:  movl   %ebx,(%esi)
0x80236515:  addl   $0x4,%esi
0x8023651b:  movl   0x28(%ebp),%ebx
0x8023651e:  movl   %ebx,(%esi)
0x80236520:  addl   $0x4,%esi
0x80236526:  movl   0x2c(%ebp),%ebx
0x80236529:  movl   %ebx,(%esi)
0x8023652b:  addl   $0x4,%esi
0x80236531:  movl   0x38(%ebp),%ebx
0x80236534:  movl   %ebx,(%esi)
0x80236536:  addl   $0xffffffe0,%esi
0x8023653c:  movl   %esi,0x34(%ebp)
0x8023653f:  movl   $0x401daeb8,%esi
0x80236544:  addl   $0x630,%esi
0x8023654a:  movl   (%esi),%ebx
0x8023654c:  movl   %ebx,0x28(%ebp)
0x8023654f:  movl   $0x1d0,%esi
0x80236554:  movl   0x34(%ebp),%ebx
0x80236557:  subl   %esi,%ebx
0x80236559:  movl   %ebx,0x34(%ebp)
0x8023655c:  movl   $0x0,%esi
0x80236561:  movl   %esi,0x8(%ebp)
0x80236564:  movl   0x34(%ebp),%esi
0x80236567:  addl   $0xc,%esi
0x8023656d:  movl   0x0(%ebp),%ebx
0x80236570:  movl   %ebx,(%esi)
0x80236572:  movl   0x28(%ebp),%esi
0x80236575:  movl   $0x401daec8,%ebx
0x8023657a:  addl   %esi,%ebx
0x8023657c:  movl   %ebx,0x28(%ebp)
0x8023657f:  movl   0x8(%ebp),%esi
0x80236582:  movl   %esi,0x4(%ebp)
0x80236585:  movl   $0x1d0,%esi
0x8023658a:  movl   0x34(%ebp),%ebx
0x8023658d:  addl   %esi,%ebx
0x8023658f:  movl   %ebx,0xc(%ebp)
0x80236592:  movl   $0x1,%esi
0x80236597:  movl   0x8(%ebp),%ebx
0x8023659a:  addl   %esi,%ebx
0x8023659c:  movl   %ebx,0x8(%ebp)
0x8023659f:  movl   $0x34,%esi
0x802365a4:  movl   0x8(%ebp),%ebx
0x802365a7:  movl   %ebx,%eax
0x802365a9:  xorl   %edx,%edx
0x802365ab:  subl   %esi,%ebx
0x802365ad:  cmpl   %esi,%eax
0x802365af:  setae  %dl
0x802365b2:  movl   %edx,0x44(%ebp)
0x802365b5:  movl   %eax,%edx
0x802365b7:  xorl   %esi,%edx
0x802365b9:  xorl   %ebx,%eax
0x802365bb:  andl   %edx,%eax
0x802365bd:  movl   %ebx,0x4c(%ebp)
0x802365c0:  movl   %eax,0x48(%ebp)
0x802365c3:  movl   0xc(%ebp),%esi
0x802365c6:  addl   $0xfffffe70,%esi
0x802365cc:  movl   0x4(%ebp),%ebx
0x802365cf:  movl   %ebx,(%esi)
0x802365d1:  movl   $0x4,%esi
0x802365d6:  movl   0xc(%ebp),%ebx
0x802365d9:  addl   %esi,%ebx
0x802365db:  movl   %ebx,0xc(%ebp)
0x802365de:  movl   0x44(%ebp),%eax
0x802365e1:  testl  %eax,%eax
0x802365e3:  je     0x802365fe
0x802365e5:  movl   0x4c(%ebp),%eax
0x802365e8:  testl  %eax,%eax
0x802365ea:  je     0x802365fe
0x802365ec:  jmp    *0x800764fc
0x802365f2:  movl   $0x800764d8,%ebx
0x802365f7:  movl   $0x401daee0,0x3c(%ebp)
0x802365fe:  jmp    *0x80076500
0x80236604:  movl   %esi,%esi
0x80236606:  movl   $0x800764d9,%ebx
0x8023660b:  movl   $0x401daecc,0x3c(%ebp)
0x80236612:  ret    

----------------
IN: 
0x401daecc:  add	r2, r2, #1	; 0x1
0x401daed0:  cmp	r2, #52	; 0x34
0x401daed4:  str	r1, [r3, -#400]
0x401daed8:  add	r3, r3, #4	; 0x4
0x401daedc:  bls	0x401daecc

OP:
0x0000: movl_T1_im 0x1
0x0001: movl_T0_r2
0x0002: addl_T0_T1
0x0003: movl_r2_T0
0x0004: movl_T1_im 0x34
0x0005: movl_T0_r2
0x0006: subl_T0_T1_cc
0x0007: movl_T1_r3
0x0008: addl_T1_im 0xfffffe70
0x0009: movl_T0_r1
0x000a: stl_T0_T1
0x000b: movl_T1_im 0x4
0x000c: movl_T0_r3
0x000d: addl_T0_T1
0x000e: movl_r3_T0
0x000f: test_hi 0x80076510 0x401daee0
0x0010: jmp 0x80076510 0x401daecc
0x0011: end

OUT: [size=129]
0x80236620:  movl   $0x1,%esi
0x80236625:  movl   0x8(%ebp),%ebx
0x80236628:  addl   %esi,%ebx
0x8023662a:  movl   %ebx,0x8(%ebp)
0x8023662d:  movl   $0x34,%esi
0x80236632:  movl   0x8(%ebp),%ebx
0x80236635:  movl   %ebx,%eax
0x80236637:  xorl   %edx,%edx
0x80236639:  subl   %esi,%ebx
0x8023663b:  cmpl   %esi,%eax
0x8023663d:  setae  %dl
0x80236640:  movl   %edx,0x44(%ebp)
0x80236643:  movl   %eax,%edx
0x80236645:  xorl   %esi,%edx
0x80236647:  xorl   %ebx,%eax
0x80236649:  andl   %edx,%eax
0x8023664b:  movl   %ebx,0x4c(%ebp)
0x8023664e:  movl   %eax,0x48(%ebp)
0x80236651:  movl   0xc(%ebp),%esi
0x80236654:  addl   $0xfffffe70,%esi
0x8023665a:  movl   0x4(%ebp),%ebx
0x8023665d:  movl   %ebx,(%esi)
0x8023665f:  movl   $0x4,%esi
0x80236664:  movl   0xc(%ebp),%ebx
0x80236667:  addl   %esi,%ebx
0x80236669:  movl   %ebx,0xc(%ebp)
0x8023666c:  movl   0x44(%ebp),%eax
0x8023666f:  testl  %eax,%eax
0x80236671:  je     0x8023668c
0x80236673:  movl   0x4c(%ebp),%eax
0x80236676:  testl  %eax,%eax
0x80236678:  je     0x8023668c
0x8023667a:  jmp    *0x80076534
0x80236680:  movl   $0x80076510,%ebx
0x80236685:  movl   $0x401daee0,0x3c(%ebp)
0x8023668c:  jmp    *0x80076538
0x80236692:  movl   %esi,%esi
0x80236694:  movl   $0x80076511,%ebx
0x80236699:  movl   $0x401daecc,0x3c(%ebp)
0x802366a0:  ret    


  reply	other threads:[~2003-07-10 16:23 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-09 18:35 [Qemu-devel] ARM Daniel Jacobowitz
2003-07-09 19:49 ` Fabrice Bellard
2003-07-10 16:17   ` Daniel Jacobowitz [this message]
2003-07-10 20:10     ` Fabrice Bellard
2003-07-10 23:24       ` Daniel Jacobowitz
2003-07-10 16:45   ` Laurent Desnogues
2003-07-10 23:17     ` Daniel Jacobowitz
2003-07-09 19:53 ` Jocelyn Mayer
2003-07-10  8:44   ` Fabrice Bellard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030710161718.GA29632@nevyn.them.org \
    --to=drow@false.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).