bug-mes
[Top][All Lists]
Advanced

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

Re: mes-tcc can build itself on arm, without long long or floats


From: Jan Nieuwenhuizen
Subject: Re: mes-tcc can build itself on arm, without long long or floats
Date: Thu, 10 Dec 2020 23:13:28 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux)

Danny Milosavljevic writes:

Hi Danny!

> On Wed, 09 Dec 2020 23:24:22 +0100
> Jan Nieuwenhuizen <janneke@gnu.org> wrote:
>
>> Finally I got an initial version of mes-tcc bootstrapped so that it can
>> build itself!
[..]
> That is awesome!  \o/

Yes! \o/

>> The bad news is that when I try to enable either long longs of floats, a
>> corrupted bootX-tcc (boot2-tcc or boot3-tcc) is produced.  The good news
>> is that when I do not enable those features, boot5-tcc fails only 12 of
>> 255 tests (as expected because we are missing some features).
>>
> If I can help in any way, please tell me.

Thanks for listening!  So, I introduced HAVE_LONG_LONG_STUB as a
preliminary stage before introducing HAVE_LONG_LONG.  This works and we
now also have long long!

> I could look at the assembly differences etc.

Yeah, differences are difficult...I don't have a baseline that I can
think of.  We could try diffing with gcc-built versions, or with
versions without floats...dunno.

> It's interesting that it also happens with-only long longs.  The floats
> I would have expected with the wrong FPU enabled, but long longs?
> Weird...

Yeah; I guess we were "just lucky" on x86.  I guess it makes sense to
first make room in structs, on the stack etc. before starting to use
it for calculations; though I don't fully understand.

As for floats (the last big hurdle for tinycc now), I "discovered" that
besides floats, there are not only doubles but also long doubles.  So,
we may want/need to introduce STUB stages or HAVE_LONG_DOULE...?

Another thing.  I am now using TCC_ARM_VFP=1, but the default, gcc-built
version also uses TCC_CPU_VERSION=7 TCC_ARM_EABI=1 TCC_ARM_HARDFLOAT=1.

I briefly tried those, but that "seemed to give worse results".  I
haven't really looked closely, though.  Also, there's the code in
lib/armeabi.c, lib/libtcc1.c, and mes-source/lib/libtcc1.c to
consider...

Anyway, the boot3-tcc built with HAVE_FLOAT now gives the Bus error
below.  Ideas?

Greetings,
Janneke


+ ./boot3-tcc -c -g -D TCC_TARGET_ARM=1 -D TCC_ARM_VFP=1 -o libtcc1.o 
mes-source/gcc-lib/arm-mes/libtcc1.c
boot.sh: line 225: 23540 Bus error               (core dumped) 
./${program_prefix}tcc -c -g $CPP_TARGET_FLAG -o libtcc1.o $MES_LIB/libtcc1.c
[135]23:00:29 janneke@banana:~/src/tinycc [env]
$ gdb boot3-tcc
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabihf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from boot3-tcc...done.
(gdb) r  -c -g -D TCC_TARGET_ARM=1 -D TCC_ARM_VFP=1 -o libtcc1.o 
mes-source/gcc-lib/arm-mes/libtcc1.c
Starting program: /home/janneke/src/tinycc/boot3-tcc -c -g -D TCC_TARGET_ARM=1 
-D TCC_ARM_VFP=1 -o libtcc1.o mes-source/gcc-lib/arm-mes/libtcc1.c

Program received signal SIGBUS, Bus error.
init_putv () at tccgen.c:6301
6301                    break;
(gdb) disassemble
Dump of assembler code for function init_putv:
   0x000254fc <+0>:     mov     r12, sp
   0x00025500 <+4>:     push    {r0, r1, r2}
   0x00025504 <+8>:     push    {r11, r12, lr}
   0x00025508 <+12>:    mov     r11, sp
   0x0002550c <+16>:    sub     sp, r11, #104   ; 0x68
   0x00025510 <+20>:    ldr     r0, [r11, #12]
   0x00025514 <+24>:    mov     r2, #8
   0x00025518 <+28>:    mov     r1, r0
   0x0002551c <+32>:    str     r0, [r11, #-36] ; 0xffffffdc
   0x00025520 <+36>:    sub     r0, r11, #32
   0x00025524 <+40>:    bl      0x438dc <__memmove>
   0x00025528 <+44>:    ldr     r0, [r11, #-32] ; 0xffffffe0
   0x0002552c <+48>:    bic     r0, r0, #2048   ; 0x800
   0x00025530 <+52>:    str     r0, [r11, #-32] ; 0xffffffe0
   0x00025534 <+56>:    ldr     r0, [r11, #16]
   0x00025538 <+60>:    cmp     r0, #0
   0x0002553c <+64>:    beq     0x25d30 <init_putv+2100>
   0x00025540 <+68>:    sub     r0, r11, #32
   0x00025544 <+72>:    bl      0x1be20 <gen_assign_cast>
   0x00025548 <+76>:    ldr     r0, [r11, #12]
   0x0002554c <+80>:    ldr     r1, [r0]
   0x00025550 <+84>:    and     r1, r1, #15
   0x00025554 <+88>:    str     r1, [r11, #-4]
   0x00025558 <+92>:    sub     r1, r11, #44    ; 0x2c
   0x0002555c <+96>:    ldr     r0, [r11, #12]
   0x00025560 <+100>:   bl      0x1b064 <type_size>
   0x00025564 <+104>:   str     r0, [r11, #-40] ; 0xffffffd8
   0x00025568 <+108>:   ldr     r0, [r11, #20]
   0x0002556c <+112>:   ldr     r1, [r11, #-40] ; 0xffffffd8
   0x00025570 <+116>:   add     r0, r0, r1
   0x00025574 <+120>:   mov     r1, r0
   0x00025578 <+124>:   ldr     r0, [r11, #16]
   0x0002557c <+128>:   bl      0x28ef4 <section_reserve>
   0x00025580 <+132>:   ldr     r0, [r11, #16]
   0x00025584 <+136>:   add     r0, r0, #4
   0x00025588 <+140>:   ldr     r1, [r11, #20]
   0x0002558c <+144>:   ldr     r2, [r0]
   0x00025590 <+148>:   add     r1, r2, r1
   0x00025594 <+152>:   str     r1, [r11, #-16]
   0x00025598 <+156>:   ldr     r0, [r11, #12]
   0x0002559c <+160>:   ldr     r1, [r0]
   0x000255a0 <+164>:   and     r1, r1, #64     ; 0x40
   0x000255a4 <+168>:   cmp     r1, #0
   0x000255a8 <+172>:   beq     0x255b0 <init_putv+180>
   0x000255ac <+176>:   b       0x255d4 <init_putv+216>
   0x000255b0 <+180>:   mov     r0, #0
   0x000255b4 <+184>:   str     r0, [r11, #-8]
   0x000255b8 <+188>:   mov     r0, #32
   0x000255bc <+192>:   str     r0, [r11, #-12]
   0x000255c0 <+196>:   mvn     r0, #0
   0x000255c4 <+200>:   mvn     r1, #0
   0x000255c8 <+204>:   str     r0, [r11, #-24] ; 0xffffffe8
   0x000255cc <+208>:   str     r1, [r11, #-20] ; 0xffffffec
   0x000255d0 <+212>:   b       0x25634 <init_putv+312>
   0x000255d4 <+216>:   ldr     lr, [pc]        ; 0x255dc <init_putv+224>
   0x000255d8 <+220>:   b       0x255e0 <init_putv+228>
   0x000255dc <+224>:   andeq   r2, r6, r4, lsl #6
   0x000255e0 <+228>:   ldr     r0, [lr]
   0x000255e4 <+232>:   ldr     r1, [r0]
   0x000255e8 <+236>:   asr     r1, r1, #19
   0x000255ec <+240>:   and     r1, r1, #63     ; 0x3f
   0x000255f0 <+244>:   str     r1, [r11, #-8]
   0x000255f4 <+248>:   ldr     lr, [pc]        ; 0x255fc <init_putv+256>
   0x000255f8 <+252>:   b       0x25600 <init_putv+260>
   0x000255fc <+256>:   andeq   r2, r6, r4, lsl #6
   0x00025600 <+260>:   ldr     r0, [lr]
   0x00025604 <+264>:   ldr     r1, [r0]
   0x00025608 <+268>:   asr     r1, r1, #25
   0x0002560c <+272>:   and     r1, r1, #63     ; 0x3f
   0x00025610 <+276>:   str     r1, [r11, #-12]
   0x00025614 <+280>:   ldr     r2, [r11, #-12]
   0x00025618 <+284>:   mov     r1, #0
   0x0002561c <+288>:   mov     r0, #1
   0x00025620 <+292>:   bl      0x43038 <__ashldi3>
   0x00025624 <+296>:   subs    r0, r0, #1
   0x00025628 <+300>:   sbc     r1, r1, #0
   0x0002562c <+304>:   str     r0, [r11, #-24] ; 0xffffffe8
   0x00025630 <+308>:   str     r1, [r11, #-20] ; 0xffffffec
   0x00025634 <+312>:   ldr     lr, [pc]        ; 0x2563c <init_putv+320>
   0x00025638 <+316>:   b       0x25640 <init_putv+324>
   0x0002563c <+320>:   andeq   r2, r6, r4, lsl #6
   0x00025640 <+324>:   ldr     r0, [lr]
   0x00025644 <+328>:   add     r0, r0, #8
   0x00025648 <+332>:   ldrh    r1, [r0]
   0x0002564c <+336>:   and     r1, r1, #560    ; 0x230
   0x00025650 <+340>:   cmp     r1, #560        ; 0x230
   0x00025654 <+344>:   bne     0x25880 <init_putv+900>
   0x00025658 <+348>:   ldr     lr, [pc]        ; 0x25660 <init_putv+356>
   0x0002565c <+352>:   b       0x25664 <init_putv+360>
   0x00025660 <+356>:   andeq   r2, r6, r4, lsl #6
   0x00025664 <+360>:   ldr     r0, [lr]
   0x00025668 <+364>:   add     r0, r0, #28
   0x0002566c <+368>:   ldr     r1, [r0]
   0x00025670 <+372>:   ldr     r0, [r1]
   0x00025674 <+376>:   cmp     r0, #268435456  ; 0x10000000
   0x00025678 <+380>:   blt     0x25880 <init_putv+900>
   0x0002567c <+384>:   ldr     lr, [pc]        ; 0x25684 <init_putv+392>
   0x00025680 <+388>:   b       0x25688 <init_putv+396>
   0x00025684 <+392>:   andeq   r2, r6, r4, lsl #6
   0x00025688 <+396>:   ldr     r0, [lr]
   0x0002568c <+400>:   ldr     r1, [r0]
   0x00025690 <+404>:   and     r1, r1, #15
   0x00025694 <+408>:   cmp     r1, #4
   0x00025698 <+412>:   beq     0x25880 <init_putv+900>
   0x0002569c <+416>:   ldr     lr, [pc]        ; 0x256a4 <init_putv+424>
   0x000256a0 <+420>:   b       0x256a8 <init_putv+428>
   0x000256a4 <+424>:   andeq   r2, r6, r4, ror r3
   0x000256a8 <+428>:   ldr     r0, [lr]
   0x000256ac <+432>:   add     r0, r0, #4
   0x000256b0 <+436>:   ldr     lr, [pc]        ; 0x256b8 <init_putv+444>
   0x000256b4 <+440>:   b       0x256bc <init_putv+448>
   0x000256b8 <+444>:   andeq   r2, r6, r4, lsl #6
   0x000256bc <+448>:   ldr     r1, [lr]
   0x000256c0 <+452>:   add     r1, r1, #28
   0x000256c4 <+456>:   ldr     r2, [r1]
   0x000256c8 <+460>:   add     r2, r2, #12
   0x000256cc <+464>:   ldr     r1, [r2]
   0x000256d0 <+468>:   lsl     r1, r1, #4
   0x000256d4 <+472>:   ldr     r2, [r0]
   0x000256d8 <+476>:   add     r1, r2, r1
   0x000256dc <+480>:   str     r1, [r11, #-52] ; 0xffffffcc
   0x000256e0 <+484>:   ldr     lr, [pc]        ; 0x256e8 <init_putv+492>
   0x000256e4 <+488>:   b       0x256ec <init_putv+496>
   0x000256e8 <+492>:                   ; <UNDEFINED> instruction: 0x000623b8
   0x000256ec <+496>:   ldr     r0, [lr]
   0x000256f0 <+500>:   add     r0, r0, #804    ; 0x324
   0x000256f4 <+504>:   ldr     r1, [r11, #-52] ; 0xffffffcc
   0x000256f8 <+508>:   add     r1, r1, #14
   0x000256fc <+512>:   ldrh    r2, [r1]
   0x00025700 <+516>:   lsl     r2, r2, #2
   0x00025704 <+520>:   ldr     r1, [r0]
   0x00025708 <+524>:   add     r1, r1, r2
   0x0002570c <+528>:   ldr     r0, [r1]
   0x00025710 <+532>:   str     r0, [r11, #-48] ; 0xffffffd0
   0x00025714 <+536>:   ldr     r0, [r11, #-48] ; 0xffffffd0
   0x00025718 <+540>:   add     r0, r0, #4
   0x0002571c <+544>:   ldr     r1, [r11, #-52] ; 0xffffffcc
   0x00025720 <+548>:   add     r1, r1, #4
   0x00025724 <+552>:   ldr     r2, [r1]
   0x00025728 <+556>:   ldr     r1, [r0]
   0x0002572c <+560>:   add     r1, r1, r2
   0x00025730 <+564>:   ldr     r2, [r11, #-40] ; 0xffffffd8
   0x00025734 <+568>:   ldr     r0, [r11, #-16]
   0x00025738 <+572>:   bl      0x462cc <memmove>
   0x0002573c <+576>:   ldr     r0, [r11, #-48] ; 0xffffffd0
   0x00025740 <+580>:   add     r0, r0, #60     ; 0x3c
   0x00025744 <+584>:   ldr     r1, [r0]
   0x00025748 <+588>:   cmp     r1, #0
   0x0002574c <+592>:   beq     0x2587c <init_putv+896>
   0x00025750 <+596>:   ldr     r0, [r11, #-48] ; 0xffffffd0
   0x00025754 <+600>:   add     r0, r0, #60     ; 0x3c
   0x00025758 <+604>:   ldr     r1, [r0]
   0x0002575c <+608>:   ldr     r0, [r1]
   0x00025760 <+612>:   lsr     r0, r0, #3
   0x00025764 <+616>:   str     r0, [r11, #-60] ; 0xffffffc4
   0x00025768 <+620>:   ldr     r0, [r11, #-48] ; 0xffffffd0
   0x0002576c <+624>:   add     r0, r0, #60     ; 0x3c
   0x00025770 <+628>:   ldr     r1, [r0]
   0x00025774 <+632>:   add     r1, r1, #4
   0x00025778 <+636>:   ldr     r0, [r11, #-48] ; 0xffffffd0
   0x0002577c <+640>:   add     r0, r0, #60     ; 0x3c
   0x00025780 <+644>:   ldr     r2, [r0]
   0x00025784 <+648>:   ldr     r0, [r2]
   0x00025788 <+652>:   ldr     r2, [r1]
   0x0002578c <+656>:   add     r0, r2, r0
   0x00025790 <+660>:   str     r0, [r11, #-56] ; 0xffffffc8
   0x00025794 <+664>:   ldr     r0, [r11, #-60] ; 0xffffffc4
   0x00025798 <+668>:   mov     r1, r0
   0x0002579c <+672>:   sub     r0, r0, #1
   0x000257a0 <+676>:   str     r0, [r11, #-60] ; 0xffffffc4
   0x000257a4 <+680>:   cmp     r1, #0
   0x000257a8 <+684>:   beq     0x2587c <init_putv+896>
   0x000257ac <+688>:   ldr     r0, [r11, #-56] ; 0xffffffc8
   0x000257b0 <+692>:   mov     r1, r0
   0x000257b4 <+696>:   sub     r0, r0, #8
   0x000257b8 <+700>:   str     r0, [r11, #-56] ; 0xffffffc8
   0x000257bc <+704>:   ldr     r0, [r11, #-56] ; 0xffffffc8
   0x000257c0 <+708>:   ldr     r1, [r11, #-52] ; 0xffffffcc
   0x000257c4 <+712>:   add     r1, r1, #4
   0x000257c8 <+716>:   ldr     r2, [r1]
   0x000257cc <+720>:   ldr     r1, [r11, #-40] ; 0xffffffd8
   0x000257d0 <+724>:   add     r1, r2, r1
   0x000257d4 <+728>:   ldr     r2, [r0]
   0x000257d8 <+732>:   cmp     r2, r1
   0x000257dc <+736>:   bcc     0x257e4 <init_putv+744>
   0x000257e0 <+740>:   b       0x25794 <init_putv+664>
   0x000257e4 <+744>:   ldr     r0, [r11, #-56] ; 0xffffffc8
   0x000257e8 <+748>:   ldr     r1, [r11, #-52] ; 0xffffffcc
   0x000257ec <+752>:   add     r1, r1, #4
   0x000257f0 <+756>:   ldr     r2, [r0]
   0x000257f4 <+760>:   ldr     r0, [r1]
   0x000257f8 <+764>:   cmp     r2, r0
   0x000257fc <+768>:   bcs     0x25804 <init_putv+776>
   0x00025800 <+772>:   b       0x2587c <init_putv+896>
   0x00025804 <+776>:   ldr     r0, [r11, #-56] ; 0xffffffc8
   0x00025808 <+780>:   ldr     r1, [r11, #20]
   0x0002580c <+784>:   ldr     r2, [r0]
   0x00025810 <+788>:   add     r1, r1, r2
   0x00025814 <+792>:   ldr     r0, [r11, #-52] ; 0xffffffcc
   0x00025818 <+796>:   add     r0, r0, #4
   0x0002581c <+800>:   ldr     r2, [r0]
   0x00025820 <+804>:   sub     r1, r1, r2
   0x00025824 <+808>:   ldr     r0, [r11, #-56] ; 0xffffffc8
   0x00025828 <+812>:   add     r0, r0, #4
   0x0002582c <+816>:   ldr     r2, [r0]
   0x00025830 <+820>:   and     r2, r2, #255    ; 0xff
   0x00025834 <+824>:   ldr     r0, [r11, #-56] ; 0xffffffc8
   0x00025838 <+828>:   add     r0, r0, #4
   0x0002583c <+832>:   ldr     r3, [r0]
   0x00025840 <+836>:   lsr     r3, r3, #8
   0x00025844 <+840>:   mov     r0, #0
   0x00025848 <+844>:   push    {r0}            ; (str r0, [sp, #-4]!)
   0x0002584c <+848>:   add     sp, sp, #0
   0x00025850 <+852>:   push    {r3}            ; (str r3, [sp, #-4]!)
   0x00025854 <+856>:   mov     r3, r2
   0x00025858 <+860>:   mov     r2, r1
   0x0002585c <+864>:   ldr     r1, [r11, #16]
   0x00025860 <+868>:   ldr     lr, [pc]        ; 0x25868 <init_putv+876>
   0x00025864 <+872>:   b       0x2586c <init_putv+880>
   0x00025868 <+876>:   andeq   r2, r6, r4, ror r3
   0x0002586c <+880>:   ldr     r0, [lr]
   0x00025870 <+884>:   bl      0x29b68 <put_elf_reloca>
   0x00025874 <+888>:   add     sp, sp, #8
   0x00025878 <+892>:   b       0x25794 <init_putv+664>
   0x0002587c <+896>:   b       0x25d04 <init_putv+2056>
   0x00025880 <+900>:   ldr     lr, [pc]        ; 0x25888 <init_putv+908>
   0x00025884 <+904>:   b       0x2588c <init_putv+912>
   0x00025888 <+908>:   andeq   r2, r6, r4, lsl #6
   0x0002588c <+912>:   ldr     r0, [lr]
   0x00025890 <+916>:   add     r0, r0, #8
   0x00025894 <+920>:   ldrh    r1, [r0]
   0x00025898 <+924>:   and     r1, r1, #512    ; 0x200
   0x0002589c <+928>:   cmp     r1, #0
   0x000258a0 <+932>:   beq     0x25910 <init_putv+1044>
   0x000258a4 <+936>:   ldr     r0, [r11, #-4]
   0x000258a8 <+940>:   cmp     r0, #1
   0x000258ac <+944>:   beq     0x25900 <init_putv+1028>
   0x000258b0 <+948>:   ldr     r0, [r11, #-4]
   0x000258b4 <+952>:   cmp     r0, #2
   0x000258b8 <+956>:   beq     0x25900 <init_putv+1028>
   0x000258bc <+960>:   ldr     r0, [r11, #-4]
   0x000258c0 <+964>:   cmp     r0, #9
   0x000258c4 <+968>:   beq     0x25900 <init_putv+1028>
   0x000258c8 <+972>:   ldr     r0, [r11, #-4]
   0x000258cc <+976>:   cmp     r0, #10
   0x000258d0 <+980>:   beq     0x25900 <init_putv+1028>
   0x000258d4 <+984>:   ldr     r0, [r11, #-4]
   0x000258d8 <+988>:   cmp     r0, #12
   0x000258dc <+992>:   beq     0x25900 <init_putv+1028>
   0x000258e0 <+996>:   ldr     r0, [r11, #-4]
   0x000258e4 <+1000>:  cmp     r0, #0
   0x000258e8 <+1004>:  bne     0x258fc <init_putv+1024>
   0x000258ec <+1008>:  ldr     r0, [r11, #-12]
   0x000258f0 <+1012>:  cmp     r0, #32
   0x000258f4 <+1016>:  beq     0x258fc <init_putv+1024>
   0x000258f8 <+1020>:  b       0x25900 <init_putv+1028>
   0x000258fc <+1024>:  b       0x25910 <init_putv+1044>
   0x00025900 <+1028>:  ldr     r0, [pc]        ; 0x25908 <init_putv+1036>
   0x00025904 <+1032>:  b       0x2590c <init_putv+1040>
   0x00025908 <+1036>:  andeq   sp, r4, r5, ror r1
   0x0002590c <+1040>:  bl      0x3ddb8 <tcc_error>
   0x00025910 <+1044>:  b       0x25cb0 <init_putv+1972>
   0x00025914 <+1048>:  ldr     lr, [pc]        ; 0x2591c <init_putv+1056>
   0x00025918 <+1052>:  b       0x25920 <init_putv+1060>
   0x0002591c <+1056>:  andeq   r2, r6, r4, lsl #6
   0x00025920 <+1060>:  ldr     r0, [lr]
   0x00025924 <+1064>:  add     r0, r0, #12
   0x00025928 <+1068>:  ldr     lr, [pc]        ; 0x25930 <init_putv+1076>
   0x0002592c <+1072>:  b       0x25934 <init_putv+1080>
   0x00025930 <+1076>:  andeq   r2, r6, r4, lsl #6
   0x00025934 <+1080>:  ldr     r1, [lr]
   0x00025938 <+1084>:  add     r1, r1, #12
   0x0002593c <+1088>:  ldr     r2, [r1]
   0x00025940 <+1092>:  add     r1, r1, #4
   0x00025944 <+1096>:  ldr     r3, [r1]
   0x00025948 <+1100>:  cmp     r3, #0
   0x0002594c <+1104>:  bne     0x25958 <init_putv+1116>
   0x00025950 <+1108>:  cmp     r2, #0
   0x00025954 <+1112>:  beq     0x25960 <init_putv+1124>
   0x00025958 <+1116>:  mov     r1, #1
   0x0002595c <+1120>:  b       0x25964 <init_putv+1128>
   0x00025960 <+1124>:  mov     r1, #0
   0x00025964 <+1128>:  mov     r2, r1
   0x00025968 <+1132>:  asr     r2, r2, #31
   0x0002596c <+1136>:  str     r1, [r0]
   0x00025970 <+1140>:  add     r0, r0, #4
   0x00025974 <+1144>:  str     r2, [r0]
   0x00025978 <+1148>:  ldr     r0, [r11, #-16]
   0x0002597c <+1152>:  ldr     lr, [pc]        ; 0x25984 <init_putv+1160>
   0x00025980 <+1156>:  b       0x25988 <init_putv+1164>
   0x00025984 <+1160>:  andeq   r2, r6, r4, lsl #6
   0x00025988 <+1164>:  ldr     r1, [lr]
   0x0002598c <+1168>:  add     r1, r1, #12
   0x00025990 <+1172>:  ldr     r2, [r1]
   0x00025994 <+1176>:  add     r1, r1, #4
   0x00025998 <+1180>:  ldr     r3, [r1]
   0x0002599c <+1184>:  ldr     r1, [r11, #-24] ; 0xffffffe8
   0x000259a0 <+1188>:  and     r1, r2, r1
   0x000259a4 <+1192>:  ldr     r2, [r11, #-20] ; 0xffffffec
   0x000259a8 <+1196>:  and     r2, r3, r2
   0x000259ac <+1200>:  str     r1, [r11, #-68] ; 0xffffffbc
   0x000259b0 <+1204>:  str     r2, [r11, #-64] ; 0xffffffc0
   0x000259b4 <+1208>:  ldr     r2, [r11, #-8]
   0x000259b8 <+1212>:  ldr     r1, [r11, #-64] ; 0xffffffc0
   0x000259bc <+1216>:  str     r0, [r11, #-72] ; 0xffffffb8
   0x000259c0 <+1220>:  ldr     r0, [r11, #-68] ; 0xffffffbc
   0x000259c4 <+1224>:  bl      0x43038 <__ashldi3>
   0x000259c8 <+1228>:  ldr     lr, [r11, #-72] ; 0xffffffb8
   0x000259cc <+1232>:  ldrb    r2, [lr]
   0x000259d0 <+1236>:  mov     r3, r2
   0x000259d4 <+1240>:  asr     r3, r3, #31
   0x000259d8 <+1244>:  orr     r0, r2, r0
   0x000259dc <+1248>:  orr     r1, r3, r1
   0x000259e0 <+1252>:  and     r0, r0, #255    ; 0xff
   0x000259e4 <+1256>:  mov     r1, #0
   0x000259e8 <+1260>:  ldr     r2, [r11, #-72] ; 0xffffffb8
   0x000259ec <+1264>:  strb    r0, [r2]
   0x000259f0 <+1268>:  b       0x25d04 <init_putv+2056>
   0x000259f4 <+1272>:  ldr     r0, [r11, #-16]
   0x000259f8 <+1276>:  ldr     lr, [pc]        ; 0x25a00 <init_putv+1284>
   0x000259fc <+1280>:  b       0x25a04 <init_putv+1288>
   0x00025a00 <+1284>:  andeq   r2, r6, r4, lsl #6
   0x00025a04 <+1288>:  ldr     r1, [lr]
   0x00025a08 <+1292>:  add     r1, r1, #12
   0x00025a0c <+1296>:  ldr     r2, [r1]
   0x00025a10 <+1300>:  add     r1, r1, #4
   0x00025a14 <+1304>:  ldr     r3, [r1]
   0x00025a18 <+1308>:  ldr     r1, [r11, #-24] ; 0xffffffe8
   0x00025a1c <+1312>:  and     r1, r2, r1
   0x00025a20 <+1316>:  ldr     r2, [r11, #-20] ; 0xffffffec
   0x00025a24 <+1320>:  and     r2, r3, r2
   0x00025a28 <+1324>:  str     r1, [r11, #-80] ; 0xffffffb0
   0x00025a2c <+1328>:  str     r2, [r11, #-76] ; 0xffffffb4
   0x00025a30 <+1332>:  ldr     r2, [r11, #-8]
   0x00025a34 <+1336>:  ldr     r1, [r11, #-76] ; 0xffffffb4
   0x00025a38 <+1340>:  str     r0, [r11, #-84] ; 0xffffffac
   0x00025a3c <+1344>:  ldr     r0, [r11, #-80] ; 0xffffffb0
   0x00025a40 <+1348>:  bl      0x43038 <__ashldi3>
   0x00025a44 <+1352>:  ldr     lr, [r11, #-84] ; 0xffffffac
   0x00025a48 <+1356>:  ldrsh   r2, [lr]
   0x00025a4c <+1360>:  mov     r3, r2
   0x00025a50 <+1364>:  asr     r3, r3, #31
   0x00025a54 <+1368>:  orr     r0, r2, r0
   0x00025a58 <+1372>:  orr     r1, r3, r1
   0x00025a5c <+1376>:  lsl     r0, r0, #16
   0x00025a60 <+1380>:  mov     r1, #0
   0x00025a64 <+1384>:  asr     r0, r0, #16
   0x00025a68 <+1388>:  mov     r1, r0
   0x00025a6c <+1392>:  asr     r1, r1, #31
   0x00025a70 <+1396>:  ldr     r2, [r11, #-84] ; 0xffffffac
   0x00025a74 <+1400>:  strh    r0, [r2]
   0x00025a78 <+1404>:  b       0x25d04 <init_putv+2056>
   0x00025a7c <+1408>:  ldr     r0, [r11, #-16]
   0x00025a80 <+1412>:  ldr     lr, [pc]        ; 0x25a88 <init_putv+1420>
   0x00025a84 <+1416>:  b       0x25a8c <init_putv+1424>
   0x00025a88 <+1420>:  andeq   r2, r6, r4, lsl #6
   0x00025a8c <+1424>:  ldr     r1, [lr]
   0x00025a90 <+1428>:  add     r1, r1, #12
   0x00025a94 <+1432>:  vldr    s0, [r1]
   0x00025a98 <+1436>:  vstr    s0, [r0]
   0x00025a9c <+1440>:  b       0x25d04 <init_putv+2056>
   0x00025aa0 <+1444>:  ldr     r0, [r11, #-16]
   0x00025aa4 <+1448>:  ldr     lr, [pc]        ; 0x25aac <init_putv+1456>
   0x00025aa8 <+1452>:  b       0x25ab0 <init_putv+1460>
   0x00025aac <+1456>:  andeq   r2, r6, r4, lsl #6
   0x00025ab0 <+1460>:  ldr     r1, [lr]
   0x00025ab4 <+1464>:  add     r1, r1, #12
   0x00025ab8 <+1468>:  vldr    d0, [r1]
   0x00025abc <+1472>:  vstr    d0, [r0]
=> 0x00025ac0 <+1476>:  b       0x25d04 <init_putv+2056>
   0x00025ac4 <+1480>:  ldr     r0, [r11, #-16]
   0x00025ac8 <+1484>:  ldr     lr, [pc]        ; 0x25ad0 <init_putv+1492>
   0x00025acc <+1488>:  b       0x25ad4 <init_putv+1496>
   0x00025ad0 <+1492>:  andeq   r2, r6, r4, lsl #6
   0x00025ad4 <+1496>:  ldr     r1, [lr]
   0x00025ad8 <+1500>:  add     r1, r1, #12
   0x00025adc <+1504>:  vldr    d0, [r1]
   0x00025ae0 <+1508>:  vstr    d0, [r0]
   0x00025ae4 <+1512>:  nop                     ; (mov r0, r0)
   0x00025ae8 <+1516>:  b       0x25d04 <init_putv+2056>
   0x00025aec <+1520>:  ldr     r0, [r11, #-16]
   0x00025af0 <+1524>:  ldr     lr, [pc]        ; 0x25af8 <init_putv+1532>
   0x00025af4 <+1528>:  b       0x25afc <init_putv+1536>
   0x00025af8 <+1532>:  andeq   r2, r6, r4, lsl #6
   0x00025afc <+1536>:  ldr     r1, [lr]
   0x00025b00 <+1540>:  add     r1, r1, #12
   0x00025b04 <+1544>:  ldr     r2, [r1]
   0x00025b08 <+1548>:  add     r1, r1, #4
   0x00025b0c <+1552>:  ldr     r3, [r1]
   0x00025b10 <+1556>:  ldr     r1, [r11, #-24] ; 0xffffffe8
   0x00025b14 <+1560>:  and     r1, r2, r1
   0x00025b18 <+1564>:  ldr     r2, [r11, #-20] ; 0xffffffec
   0x00025b1c <+1568>:  and     r2, r3, r2
   0x00025b20 <+1572>:  str     r1, [r11, #-92] ; 0xffffffa4
   0x00025b24 <+1576>:  str     r2, [r11, #-88] ; 0xffffffa8
   0x00025b28 <+1580>:  ldr     r2, [r11, #-8]
   0x00025b2c <+1584>:  ldr     r1, [r11, #-88] ; 0xffffffa8
   0x00025b30 <+1588>:  str     r0, [r11, #-96] ; 0xffffffa0
   0x00025b34 <+1592>:  ldr     r0, [r11, #-92] ; 0xffffffa4
   0x00025b38 <+1596>:  bl      0x43038 <__ashldi3>
   0x00025b3c <+1600>:  ldr     lr, [r11, #-96] ; 0xffffffa0
   0x00025b40 <+1604>:  ldr     r2, [lr]
   0x00025b44 <+1608>:  ldr     r3, [r11, #-96] ; 0xffffffa0
   0x00025b48 <+1612>:  add     r3, r3, #4
   0x00025b4c <+1616>:  ldr     r12, [r3]
   0x00025b50 <+1620>:  orr     r0, r2, r0
   0x00025b54 <+1624>:  orr     r1, r12, r1
   0x00025b58 <+1628>:  ldr     r2, [r11, #-96] ; 0xffffffa0
   0x00025b5c <+1632>:  str     r0, [r2]
   0x00025b60 <+1636>:  add     r2, r2, #4
   0x00025b64 <+1640>:  str     r1, [r2]
   0x00025b68 <+1644>:  b       0x25d04 <init_putv+2056>
   0x00025b6c <+1648>:  ldr     lr, [pc]        ; 0x25b74 <init_putv+1656>
   0x00025b70 <+1652>:  b       0x25b78 <init_putv+1660>
   0x00025b74 <+1656>:  andeq   r2, r6, r4, lsl #6
   0x00025b78 <+1660>:  ldr     r0, [lr]
   0x00025b7c <+1664>:  add     r0, r0, #12
   0x00025b80 <+1668>:  ldr     r1, [r0]
   0x00025b84 <+1672>:  add     r0, r0, #4
   0x00025b88 <+1676>:  ldr     r2, [r0]
   0x00025b8c <+1680>:  ldr     r0, [r11, #-24] ; 0xffffffe8
   0x00025b90 <+1684>:  and     r0, r1, r0
   0x00025b94 <+1688>:  ldr     r1, [r11, #-20] ; 0xffffffec
   0x00025b98 <+1692>:  and     r1, r2, r1
   0x00025b9c <+1696>:  ldr     r2, [r11, #-8]
   0x00025ba0 <+1700>:  bl      0x43038 <__ashldi3>
   0x00025ba4 <+1704>:  str     r0, [r11, #-100]        ; 0xffffff9c
   0x00025ba8 <+1708>:  ldr     lr, [pc]        ; 0x25bb0 <init_putv+1716>
   0x00025bac <+1712>:  b       0x25bb4 <init_putv+1720>
   0x00025bb0 <+1716>:  andeq   r2, r6, r4, lsl #6
   0x00025bb4 <+1720>:  ldr     r0, [lr]
   0x00025bb8 <+1724>:  add     r0, r0, #8
   0x00025bbc <+1728>:  ldrh    r1, [r0]
   0x00025bc0 <+1732>:  and     r1, r1, #512    ; 0x200
   0x00025bc4 <+1736>:  cmp     r1, #0
   0x00025bc8 <+1740>:  beq     0x25bf4 <init_putv+1784>
   0x00025bcc <+1744>:  ldr     lr, [pc]        ; 0x25bd4 <init_putv+1752>
   0x00025bd0 <+1748>:  b       0x25bd8 <init_putv+1756>
   0x00025bd4 <+1752>:  andeq   r2, r6, r4, lsl #6
   0x00025bd8 <+1756>:  ldr     r0, [lr]
   0x00025bdc <+1760>:  add     r0, r0, #28
   0x00025be0 <+1764>:  mov     r3, #2
   0x00025be4 <+1768>:  ldr     r2, [r11, #20]
   0x00025be8 <+1772>:  ldr     r1, [r0]
   0x00025bec <+1776>:  ldr     r0, [r11, #16]
   0x00025bf0 <+1780>:  bl      0x14dd4 <greloc>
   0x00025bf4 <+1784>:  ldr     r0, [r11, #-16]
   0x00025bf8 <+1788>:  ldr     r1, [r0]
   0x00025bfc <+1792>:  ldr     r2, [r11, #-100]        ; 0xffffff9c
   0x00025c00 <+1796>:  orr     r1, r1, r2
   0x00025c04 <+1800>:  str     r1, [r0]
   0x00025c08 <+1804>:  b       0x25d04 <init_putv+2056>
   0x00025c0c <+1808>:  ldr     lr, [pc]        ; 0x25c14 <init_putv+1816>
   0x00025c10 <+1812>:  b       0x25c18 <init_putv+1820>
   0x00025c14 <+1816>:  andeq   r2, r6, r4, lsl #6
   0x00025c18 <+1820>:  ldr     r0, [lr]
   0x00025c1c <+1824>:  add     r0, r0, #12
   0x00025c20 <+1828>:  ldr     r1, [r0]
   0x00025c24 <+1832>:  add     r0, r0, #4
   0x00025c28 <+1836>:  ldr     r2, [r0]
   0x00025c2c <+1840>:  ldr     r0, [r11, #-24] ; 0xffffffe8
   0x00025c30 <+1844>:  and     r0, r1, r0
   0x00025c34 <+1848>:  ldr     r1, [r11, #-20] ; 0xffffffec
   0x00025c38 <+1852>:  and     r1, r2, r1
   0x00025c3c <+1856>:  ldr     r2, [r11, #-8]
   0x00025c40 <+1860>:  bl      0x43038 <__ashldi3>
   0x00025c44 <+1864>:  str     r0, [r11, #-104]        ; 0xffffff98
   0x00025c48 <+1868>:  ldr     lr, [pc]        ; 0x25c50 <init_putv+1876>
   0x00025c4c <+1872>:  b       0x25c54 <init_putv+1880>
   0x00025c50 <+1876>:  andeq   r2, r6, r4, lsl #6
   0x00025c54 <+1880>:  ldr     r0, [lr]
   0x00025c58 <+1884>:  add     r0, r0, #8
   0x00025c5c <+1888>:  ldrh    r1, [r0]
   0x00025c60 <+1892>:  and     r1, r1, #512    ; 0x200
   0x00025c64 <+1896>:  cmp     r1, #0
   0x00025c68 <+1900>:  beq     0x25c94 <init_putv+1944>
   0x00025c6c <+1904>:  ldr     lr, [pc]        ; 0x25c74 <init_putv+1912>
   0x00025c70 <+1908>:  b       0x25c78 <init_putv+1916>
   0x00025c74 <+1912>:  andeq   r2, r6, r4, lsl #6
   0x00025c78 <+1916>:  ldr     r0, [lr]
   0x00025c7c <+1920>:  add     r0, r0, #28
   0x00025c80 <+1924>:  mov     r3, #2
   0x00025c84 <+1928>:  ldr     r2, [r11, #20]
   0x00025c88 <+1932>:  ldr     r1, [r0]
   0x00025c8c <+1936>:  ldr     r0, [r11, #16]
   0x00025c90 <+1940>:  bl      0x14dd4 <greloc>
   0x00025c94 <+1944>:  ldr     r0, [r11, #-16]
   0x00025c98 <+1948>:  ldr     r1, [r0]
   0x00025c9c <+1952>:  ldr     r2, [r11, #-104]        ; 0xffffff98
   0x00025ca0 <+1956>:  orr     r1, r1, r2
   0x00025ca4 <+1960>:  str     r1, [r0]
   0x00025ca8 <+1964>:  b       0x25d04 <init_putv+2056>
   0x00025cac <+1968>:  b       0x25d04 <init_putv+2056>
   0x00025cb0 <+1972>:  ldr     r0, [r11, #-4]
   0x00025cb4 <+1976>:  cmp     r0, #9
   0x00025cb8 <+1980>:  bgt     0x25ce8 <init_putv+2028>
   0x00025cbc <+1984>:  cmp     r0, #9
   0x00025cc0 <+1988>:  bge     0x25aa0 <init_putv+1444>
   0x00025cc4 <+1992>:  cmp     r0, #1
   0x00025cc8 <+1996>:  beq     0x25978 <init_putv+1148>
   0x00025ccc <+2000>:  cmp     r0, #2
   0x00025cd0 <+2004>:  beq     0x259f4 <init_putv+1272>
   0x00025cd4 <+2008>:  cmp     r0, #4
   0x00025cd8 <+2012>:  beq     0x25b6c <init_putv+1648>
   0x00025cdc <+2016>:  cmp     r0, #8
   0x00025ce0 <+2020>:  beq     0x25a7c <init_putv+1408>
   0x00025ce4 <+2024>:  b       0x25c0c <init_putv+1808>
   0x00025ce8 <+2028>:  cmp     r0, #10
   0x00025cec <+2032>:  beq     0x25ac4 <init_putv+1480>
   0x00025cf0 <+2036>:  cmp     r0, #11
   0x00025cf4 <+2040>:  beq     0x25914 <init_putv+1048>
   0x00025cf8 <+2044>:  cmp     r0, #12
   0x00025cfc <+2048>:  beq     0x25aec <init_putv+1520>
   0x00025d00 <+2052>:  b       0x25c0c <init_putv+1808>
   0x00025d04 <+2056>:  ldr     lr, [pc]        ; 0x25d0c <init_putv+2064>
   0x00025d08 <+2060>:  b       0x25d10 <init_putv+2068>
   0x00025d0c <+2064>:  andeq   r2, r6, r4, lsl #6
   0x00025d10 <+2068>:  ldr     r0, [lr]
   0x00025d14 <+2072>:  mov     r1, r0
   0x00025d18 <+2076>:  sub     r0, r0, #32
   0x00025d1c <+2080>:  ldr     lr, [pc]        ; 0x25d24 <init_putv+2088>
   0x00025d20 <+2084>:  b       0x25d28 <init_putv+2092>
   0x00025d24 <+2088>:  andeq   r2, r6, r4, lsl #6
   0x00025d28 <+2092>:  str     r0, [lr]
   0x00025d2c <+2096>:  b       0x25d54 <init_putv+2136>
   0x00025d30 <+2100>:  ldr     r2, [r11, #20]
   0x00025d34 <+2104>:  ldr     r1, [pc]        ; 0x25d3c <init_putv+2112>
   0x00025d38 <+2108>:  b       0x25d40 <init_putv+2116>
   0x00025d3c <+2112>:  andeq   r0, r0, r2, lsr r1
   0x00025d40 <+2116>:  sub     r0, r11, #32
   0x00025d44 <+2120>:  bl      0x15978 <vset>
   0x00025d48 <+2124>:  bl      0x156ac <vswap>
   0x00025d4c <+2128>:  bl      0x1c230 <vstore>
   0x00025d50 <+2132>:  bl      0x157bc <vpop>
   0x00025d54 <+2136>:  ldm     r11, {r11, sp, pc}
End of assembler dump.

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | AvatarĀ® http://AvatarAcademy.com



reply via email to

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