[U-Boot] Hanging in kmalloc of nand_scan_tail() function

terry gliumailenator at gmail.com
Sat Nov 13 04:43:23 CET 2010


在 2010-11-12五的 11:19 -0600,Scott Wood写道:
> On Fri, 12 Nov 2010 20:45:18 +0800
> terry <gliumailenator at gmail.com> wrote:
> 
> > Dear Scott,
> > 	I have disassemble the nand_base.o file,because i know the problem
> > happened here.
> 
> Why not disassemble the whole u-boot?
> 
> Then you'll get malloc as well, and the addresses will be closer to
> what shows up in the dump.
> 
> > Do you think it's useful for your analysis?
> 
> Can you disassemble malloc?  That's where it actually crashed.

following is part of result that I disassemble the whole u-boot.

33f85f50 <nand_scan_tail>:
  6487 33f85f50:   e92d4070    push    {r4, r5, r6, lr}
  6488 33f85f54:   e590509c    ldr r5, [r0, #156]
  6489 33f85f58:   e595304c    ldr r3, [r5, #76]
  6490 33f85f5c:   e3130701    tst r3, #262144 ; 0x40000
  6491 33f85f60:   e1a06000    mov r6, r0
  6492 33f85f64:   1a000002    bne 33f85f74 <nand_scan_tail+0x24>
  6493 33f85f68:   e59f04ec    ldr r0, [pc, #1260] ; 33f8645c
<nand_scan_tail+0x       50c>// value seen below.
  6494 33f85f6c:   eb0026cc    bl  33f8faa4 <malloc>
  6495 33f85f70:   e58500dc    str r0, [r5, #220]
  6496 33f85f74:   e59510dc    ldr r1, [r5, #220]
  6497 33f85f78:   e3510000    cmp r1, #0  ; 0x0
  6498 33f85f7c:   03e0000b    mvneq   r0, #11 ; 0xb
  6499 33f85f80:   08bd8070    popeq   {r4, r5, r6, pc}

value of pc + 1260:
33f8645c:   0000128e    .word   0x0000128e

and the following is part of malloc after disassembled, you can find the
detailed content of malloc in the attachment malloc.dis file(I'm not
sure which part could be useful,so I attached whole malloc).

 61 33f8fb84:   9a000004    bls 33f8fb9c <malloc+0xf8>
 62 33f8fb88:   e59f352c    ldr r3, [pc, #1324] ; 33f900bc <malloc
+0x618>
 63 33f8fb8c:   e1520003    cmp r2, r3
 64 33f8fb90:   91a0392a    lsrls   r3, sl, #18
 65 33f8fb94:   83a0207e    movhi   r2, #126    ; 0x7e
 66 33f8fb98:   9283207c    addls   r2, r3, #124    ; 0x7c
 67 33f8fb9c:   e59f3514    ldr r3, [pc, #1300] ; 33f900b8 <malloc
+0x614>
 68 33f8fba0:   e0834182    add r4, r3, r2, lsl #3
 69 33f8fba4:   e594000c    ldr r0, [r4, #12]
 70 33f8fba8:   ea000012    b   33f8fbf8 <malloc+0x154>
 71 33f8fbac:   e5903004    ldr r3, [r0, #4]
 72 33f8fbb0:   e3c33003    bic r3, r3, #3  ; 0x3  //it seems that
exception occurs here
 73 33f8fbb4:   e06a1003    rsb r1, sl, r3
 74 33f8fbb8:   e351000f    cmp r1, #15 ; 0xf
 75 33f8fbbc:   c2422001    subgt   r2, r2, #1  ; 0x1
 76 33f8fbc0:   ca00000e    bgt 33f8fc00 <malloc+0x15c>
 77 33f8fbc4:   e3510000    cmp r1, #0  ; 0x0
 78 33f8fbc8:   e590c00c    ldr ip, [r0, #12]
 79 33f8fbcc:   ba000008    blt 33f8fbf4 <malloc+0x150>
 80 33f8fbd0:   e0803003    add r3, r0, r3
 81 33f8fbd4:   e5932004    ldr r2, [r3, #4]
 82 33f8fbd8:   e5901008    ldr r1, [r0, #8]

> > 00001a4c <nand_scan_tail>:
> >  1749     1a4c:   e92d4070    push    {r4, r5, r6, lr}
> >  1750     1a50:   e590509c    ldr r5, [r0, #156]
> >  1751     1a54:   e595304c    ldr r3, [r5, #76]
> >  1752     1a58:   e3130701    tst r3, #262144 ; 0x40000
> >  1753     1a5c:   e1a06000    mov r6, r0
> >  1754     1a60:   1a000002    bne 1a70 <nand_scan_tail+0x24>
> >  1755     1a64:   e59f04ec    ldr r0, [pc, #1260] ; 1f58 <nand_scan_tail
> > +0x50c>
> >  1756     1a68:   ebfffffe    bl  0 <malloc>
> 
> What's the value at PC+1260?
It's "1f58:   0000128e    .word   0x0000128e"
> 
> > by the way,I cann't find the prototype of malloc in the whole project,it
> > seems that it is encapsulated in some libs.
> 
> It's in common/malloc.c.  There's weird preprocessor renaming going on,
> so it's called mALLOc in that file, but it shows up as malloc in the
> binary.
Thanks very much for your carefully instruction.

> 
> -Scott
> 

-- 
Best regards,
terry
-------------- next part --------------
33f8faa0 <cfree>:
33f8faa0:	eaffff6f 	b	33f8f864 <free>

33f8faa4 <malloc>:
33f8faa4:	e59f2608 	ldr	r2, [pc, #1544]	; 33f900b4 <malloc+0x610>
33f8faa8:	e5923004 	ldr	r3, [r2, #4]
33f8faac:	e3530000 	cmp	r3, #0	; 0x0
33f8fab0:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}
33f8fab4:	1a000002 	bne	33f8fac4 <malloc+0x20>
33f8fab8:	e5923008 	ldr	r3, [r2, #8]
33f8fabc:	e3530000 	cmp	r3, #0	; 0x0
33f8fac0:	0a000178 	beq	33f900a8 <malloc+0x604>
33f8fac4:	e3500000 	cmp	r0, #0	; 0x0
33f8fac8:	ba000176 	blt	33f900a8 <malloc+0x604>
33f8facc:	e280000b 	add	r0, r0, #11	; 0xb
33f8fad0:	e3500016 	cmp	r0, #22	; 0x16
33f8fad4:	d3a0a010 	movle	sl, #16	; 0x10
33f8fad8:	da000002 	ble	33f8fae8 <malloc+0x44>
33f8fadc:	e3c0a007 	bic	sl, r0, #7	; 0x7
33f8fae0:	e35a0f7e 	cmp	sl, #504	; 0x1f8
33f8fae4:	2a000015 	bcs	33f8fb40 <malloc+0x9c>
33f8fae8:	e59f35c8 	ldr	r3, [pc, #1480]	; 33f900b8 <malloc+0x614>
33f8faec:	e1a021aa 	lsr	r2, sl, #3
33f8faf0:	e0833182 	add	r3, r3, r2, lsl #3
33f8faf4:	e593c00c 	ldr	ip, [r3, #12]
33f8faf8:	e15c0003 	cmp	ip, r3
33f8fafc:	1a000004 	bne	33f8fb14 <malloc+0x70>
33f8fb00:	e28c3008 	add	r3, ip, #8	; 0x8
33f8fb04:	e593c00c 	ldr	ip, [r3, #12]
33f8fb08:	e15c0003 	cmp	ip, r3
33f8fb0c:	02827002 	addeq	r7, r2, #2	; 0x2
33f8fb10:	0a00003b 	beq	33f8fc04 <malloc+0x160>
33f8fb14:	e59c3004 	ldr	r3, [ip, #4]
33f8fb18:	e3c33003 	bic	r3, r3, #3	; 0x3
33f8fb1c:	e08c3003 	add	r3, ip, r3
33f8fb20:	e5932004 	ldr	r2, [r3, #4]
33f8fb24:	e59c000c 	ldr	r0, [ip, #12]
33f8fb28:	e59c1008 	ldr	r1, [ip, #8]
33f8fb2c:	e3822001 	orr	r2, r2, #1	; 0x1
33f8fb30:	e5801008 	str	r1, [r0, #8]
33f8fb34:	e5832004 	str	r2, [r3, #4]
33f8fb38:	e581000c 	str	r0, [r1, #12]
33f8fb3c:	ea00004c 	b	33f8fc74 <malloc+0x1d0>
33f8fb40:	e1b024aa 	lsrs	r2, sl, #9
33f8fb44:	01a021aa 	lsreq	r2, sl, #3
33f8fb48:	0a000013 	beq	33f8fb9c <malloc+0xf8>
33f8fb4c:	e3520004 	cmp	r2, #4	; 0x4
33f8fb50:	91a0332a 	lsrls	r3, sl, #6
33f8fb54:	92832038 	addls	r2, r3, #56	; 0x38
33f8fb58:	9a00000f 	bls	33f8fb9c <malloc+0xf8>
33f8fb5c:	e3520014 	cmp	r2, #20	; 0x14
33f8fb60:	9282205b 	addls	r2, r2, #91	; 0x5b
33f8fb64:	9a00000c 	bls	33f8fb9c <malloc+0xf8>
33f8fb68:	e3520054 	cmp	r2, #84	; 0x54
33f8fb6c:	91a0362a 	lsrls	r3, sl, #12
33f8fb70:	9283206e 	addls	r2, r3, #110	; 0x6e
33f8fb74:	9a000008 	bls	33f8fb9c <malloc+0xf8>
33f8fb78:	e3520f55 	cmp	r2, #340	; 0x154
33f8fb7c:	91a037aa 	lsrls	r3, sl, #15
33f8fb80:	92832077 	addls	r2, r3, #119	; 0x77
33f8fb84:	9a000004 	bls	33f8fb9c <malloc+0xf8>
33f8fb88:	e59f352c 	ldr	r3, [pc, #1324]	; 33f900bc <malloc+0x618>
33f8fb8c:	e1520003 	cmp	r2, r3
33f8fb90:	91a0392a 	lsrls	r3, sl, #18
33f8fb94:	83a0207e 	movhi	r2, #126	; 0x7e
33f8fb98:	9283207c 	addls	r2, r3, #124	; 0x7c
33f8fb9c:	e59f3514 	ldr	r3, [pc, #1300]	; 33f900b8 <malloc+0x614>
33f8fba0:	e0834182 	add	r4, r3, r2, lsl #3
33f8fba4:	e594000c 	ldr	r0, [r4, #12]
33f8fba8:	ea000012 	b	33f8fbf8 <malloc+0x154>
33f8fbac:	e5903004 	ldr	r3, [r0, #4]
33f8fbb0:	e3c33003 	bic	r3, r3, #3	; 0x3
33f8fbb4:	e06a1003 	rsb	r1, sl, r3
33f8fbb8:	e351000f 	cmp	r1, #15	; 0xf
33f8fbbc:	c2422001 	subgt	r2, r2, #1	; 0x1
33f8fbc0:	ca00000e 	bgt	33f8fc00 <malloc+0x15c>
33f8fbc4:	e3510000 	cmp	r1, #0	; 0x0
33f8fbc8:	e590c00c 	ldr	ip, [r0, #12]
33f8fbcc:	ba000008 	blt	33f8fbf4 <malloc+0x150>
33f8fbd0:	e0803003 	add	r3, r0, r3
33f8fbd4:	e5932004 	ldr	r2, [r3, #4]
33f8fbd8:	e5901008 	ldr	r1, [r0, #8]
33f8fbdc:	e3822001 	orr	r2, r2, #1	; 0x1
33f8fbe0:	e58c1008 	str	r1, [ip, #8]
33f8fbe4:	e5832004 	str	r2, [r3, #4]
33f8fbe8:	e581c00c 	str	ip, [r1, #12]
33f8fbec:	e2805008 	add	r5, r0, #8	; 0x8
33f8fbf0:	ea00012d 	b	33f900ac <malloc+0x608>
33f8fbf4:	e1a0000c 	mov	r0, ip
33f8fbf8:	e1500004 	cmp	r0, r4
33f8fbfc:	1affffea 	bne	33f8fbac <malloc+0x108>
33f8fc00:	e2827001 	add	r7, r2, #1	; 0x1
33f8fc04:	e59f54ac 	ldr	r5, [pc, #1196]	; 33f900b8 <malloc+0x614>
33f8fc08:	e2859008 	add	r9, r5, #8	; 0x8
33f8fc0c:	e599c008 	ldr	ip, [r9, #8]
33f8fc10:	e15c0009 	cmp	ip, r9
33f8fc14:	0a000056 	beq	33f8fd74 <malloc+0x2d0>
33f8fc18:	e59c3004 	ldr	r3, [ip, #4]
33f8fc1c:	e3c34003 	bic	r4, r3, #3	; 0x3
33f8fc20:	e06a0004 	rsb	r0, sl, r4
33f8fc24:	e350000f 	cmp	r0, #15	; 0xf
33f8fc28:	da000009 	ble	33f8fc54 <malloc+0x1b0>
33f8fc2c:	e08c200a 	add	r2, ip, sl
33f8fc30:	e38a3001 	orr	r3, sl, #1	; 0x1
33f8fc34:	e3801001 	orr	r1, r0, #1	; 0x1
33f8fc38:	e58c3004 	str	r3, [ip, #4]
33f8fc3c:	e589200c 	str	r2, [r9, #12]
33f8fc40:	e5892008 	str	r2, [r9, #8]
33f8fc44:	e7820000 	str	r0, [r2, r0]
33f8fc48:	e9820202 	stmib	r2, {r1, r9}
33f8fc4c:	e582900c 	str	r9, [r2, #12]
33f8fc50:	ea000007 	b	33f8fc74 <malloc+0x1d0>
33f8fc54:	e3500000 	cmp	r0, #0	; 0x0
33f8fc58:	e589900c 	str	r9, [r9, #12]
33f8fc5c:	e5899008 	str	r9, [r9, #8]
33f8fc60:	ba000005 	blt	33f8fc7c <malloc+0x1d8>
33f8fc64:	e08c2004 	add	r2, ip, r4
33f8fc68:	e5923004 	ldr	r3, [r2, #4]
33f8fc6c:	e3833001 	orr	r3, r3, #1	; 0x1
33f8fc70:	e5823004 	str	r3, [r2, #4]
33f8fc74:	e28c5008 	add	r5, ip, #8	; 0x8
33f8fc78:	ea00010b 	b	33f900ac <malloc+0x608>
33f8fc7c:	e3540c02 	cmp	r4, #512	; 0x200
33f8fc80:	2a00000c 	bcs	33f8fcb8 <malloc+0x214>
33f8fc84:	e5953004 	ldr	r3, [r5, #4]
33f8fc88:	e1a011a4 	lsr	r1, r4, #3
33f8fc8c:	e1a00141 	asr	r0, r1, #2
33f8fc90:	e3a02001 	mov	r2, #1	; 0x1
33f8fc94:	e1833012 	orr	r3, r3, r2, lsl r0
33f8fc98:	e5853004 	str	r3, [r5, #4]
33f8fc9c:	e0851181 	add	r1, r5, r1, lsl #3
33f8fca0:	e5913008 	ldr	r3, [r1, #8]
33f8fca4:	e58c100c 	str	r1, [ip, #12]
33f8fca8:	e58c3008 	str	r3, [ip, #8]
33f8fcac:	e583c00c 	str	ip, [r3, #12]
33f8fcb0:	e581c008 	str	ip, [r1, #8]
33f8fcb4:	ea00002e 	b	33f8fd74 <malloc+0x2d0>
33f8fcb8:	e1a014a4 	lsr	r1, r4, #9
33f8fcbc:	e3510004 	cmp	r1, #4	; 0x4
33f8fcc0:	91a03324 	lsrls	r3, r4, #6
33f8fcc4:	92831038 	addls	r1, r3, #56	; 0x38
33f8fcc8:	9a00000f 	bls	33f8fd0c <malloc+0x268>
33f8fccc:	e3510014 	cmp	r1, #20	; 0x14
33f8fcd0:	9281105b 	addls	r1, r1, #91	; 0x5b
33f8fcd4:	9a00000c 	bls	33f8fd0c <malloc+0x268>
33f8fcd8:	e3510054 	cmp	r1, #84	; 0x54
33f8fcdc:	91a03624 	lsrls	r3, r4, #12
33f8fce0:	9283106e 	addls	r1, r3, #110	; 0x6e
33f8fce4:	9a000008 	bls	33f8fd0c <malloc+0x268>
33f8fce8:	e3510f55 	cmp	r1, #340	; 0x154
33f8fcec:	91a037a4 	lsrls	r3, r4, #15
33f8fcf0:	92831077 	addls	r1, r3, #119	; 0x77
33f8fcf4:	9a000004 	bls	33f8fd0c <malloc+0x268>
33f8fcf8:	e59f33bc 	ldr	r3, [pc, #956]	; 33f900bc <malloc+0x618>
33f8fcfc:	e1510003 	cmp	r1, r3
33f8fd00:	91a03924 	lsrls	r3, r4, #18
33f8fd04:	83a0107e 	movhi	r1, #126	; 0x7e
33f8fd08:	9283107c 	addls	r1, r3, #124	; 0x7c
33f8fd0c:	e59f63a4 	ldr	r6, [pc, #932]	; 33f900b8 <malloc+0x614>
33f8fd10:	e0865181 	add	r5, r6, r1, lsl #3
33f8fd14:	e5950008 	ldr	r0, [r5, #8]
33f8fd18:	e1500005 	cmp	r0, r5
33f8fd1c:	11a02000 	movne	r2, r0
33f8fd20:	1a000009 	bne	33f8fd4c <malloc+0x2a8>
33f8fd24:	e5963004 	ldr	r3, [r6, #4]
33f8fd28:	e1a01141 	asr	r1, r1, #2
33f8fd2c:	e3a02001 	mov	r2, #1	; 0x1
33f8fd30:	e1833112 	orr	r3, r3, r2, lsl r1
33f8fd34:	e5863004 	str	r3, [r6, #4]
33f8fd38:	e1a03000 	mov	r3, r0
33f8fd3c:	ea000008 	b	33f8fd64 <malloc+0x2c0>
33f8fd40:	e5922008 	ldr	r2, [r2, #8]
33f8fd44:	e1520005 	cmp	r2, r5
33f8fd48:	0a000003 	beq	33f8fd5c <malloc+0x2b8>
33f8fd4c:	e5923004 	ldr	r3, [r2, #4]
33f8fd50:	e3c33003 	bic	r3, r3, #3	; 0x3
33f8fd54:	e1540003 	cmp	r4, r3
33f8fd58:	3afffff8 	bcc	33f8fd40 <malloc+0x29c>
33f8fd5c:	e592300c 	ldr	r3, [r2, #12]
33f8fd60:	e1a00002 	mov	r0, r2
33f8fd64:	e58c300c 	str	r3, [ip, #12]
33f8fd68:	e58c0008 	str	r0, [ip, #8]
33f8fd6c:	e580c00c 	str	ip, [r0, #12]
33f8fd70:	e583c008 	str	ip, [r3, #8]
33f8fd74:	e1a03147 	asr	r3, r7, #2
33f8fd78:	e3a02001 	mov	r2, #1	; 0x1
33f8fd7c:	e1a00312 	lsl	r0, r2, r3
33f8fd80:	e59f3330 	ldr	r3, [pc, #816]	; 33f900b8 <malloc+0x614>
33f8fd84:	e5932004 	ldr	r2, [r3, #4]
33f8fd88:	e1500002 	cmp	r0, r2
33f8fd8c:	8a00004f 	bhi	33f8fed0 <malloc+0x42c>
33f8fd90:	e1100002 	tst	r0, r2
33f8fd94:	03c73003 	biceq	r3, r7, #3	; 0x3
33f8fd98:	02837004 	addeq	r7, r3, #4	; 0x4
33f8fd9c:	0a000001 	beq	33f8fda8 <malloc+0x304>
33f8fda0:	ea000003 	b	33f8fdb4 <malloc+0x310>
33f8fda4:	e2877004 	add	r7, r7, #4	; 0x4
33f8fda8:	e1a00080 	lsl	r0, r0, #1
33f8fdac:	e1100002 	tst	r0, r2
33f8fdb0:	0afffffb 	beq	33f8fda4 <malloc+0x300>
33f8fdb4:	e59f32fc 	ldr	r3, [pc, #764]	; 33f900b8 <malloc+0x614>
33f8fdb8:	e0831187 	add	r1, r3, r7, lsl #3
33f8fdbc:	e1a05007 	mov	r5, r7
33f8fdc0:	e1a02001 	mov	r2, r1
33f8fdc4:	e592400c 	ldr	r4, [r2, #12]
33f8fdc8:	ea000020 	b	33f8fe50 <malloc+0x3ac>
33f8fdcc:	e5943004 	ldr	r3, [r4, #4]
33f8fdd0:	e3c33003 	bic	r3, r3, #3	; 0x3
33f8fdd4:	e06a6003 	rsb	r6, sl, r3
33f8fdd8:	e356000f 	cmp	r6, #15	; 0xf
33f8fddc:	da00000e 	ble	33f8fe1c <malloc+0x378>
33f8fde0:	e1a05004 	mov	r5, r4
33f8fde4:	e594c00c 	ldr	ip, [r4, #12]
33f8fde8:	e5b50008 	ldr	r0, [r5, #8]!
33f8fdec:	e084300a 	add	r3, r4, sl
33f8fdf0:	e38a1001 	orr	r1, sl, #1	; 0x1
33f8fdf4:	e3862001 	orr	r2, r6, #1	; 0x1
33f8fdf8:	e58c0008 	str	r0, [ip, #8]
33f8fdfc:	e580c00c 	str	ip, [r0, #12]
33f8fe00:	e5841004 	str	r1, [r4, #4]
33f8fe04:	e5893008 	str	r3, [r9, #8]
33f8fe08:	e589300c 	str	r3, [r9, #12]
33f8fe0c:	e7836006 	str	r6, [r3, r6]
33f8fe10:	e9830204 	stmib	r3, {r2, r9}
33f8fe14:	e583900c 	str	r9, [r3, #12]
33f8fe18:	ea0000a3 	b	33f900ac <malloc+0x608>
33f8fe1c:	e3560000 	cmp	r6, #0	; 0x0
33f8fe20:	e594c00c 	ldr	ip, [r4, #12]
33f8fe24:	ba000008 	blt	33f8fe4c <malloc+0x3a8>
33f8fe28:	e0843003 	add	r3, r4, r3
33f8fe2c:	e5932004 	ldr	r2, [r3, #4]
33f8fe30:	e1a05004 	mov	r5, r4
33f8fe34:	e5b51008 	ldr	r1, [r5, #8]!
33f8fe38:	e3822001 	orr	r2, r2, #1	; 0x1
33f8fe3c:	e5832004 	str	r2, [r3, #4]
33f8fe40:	e58c1008 	str	r1, [ip, #8]
33f8fe44:	e581c00c 	str	ip, [r1, #12]
33f8fe48:	ea000097 	b	33f900ac <malloc+0x608>
33f8fe4c:	e1a0400c 	mov	r4, ip
33f8fe50:	e1540002 	cmp	r4, r2
33f8fe54:	1affffdc 	bne	33f8fdcc <malloc+0x328>
33f8fe58:	e2855001 	add	r5, r5, #1	; 0x1
33f8fe5c:	e3150003 	tst	r5, #3	; 0x3
33f8fe60:	12822008 	addne	r2, r2, #8	; 0x8
33f8fe64:	1affffd6 	bne	33f8fdc4 <malloc+0x320>
33f8fe68:	e1a03007 	mov	r3, r7
33f8fe6c:	e3130003 	tst	r3, #3	; 0x3
33f8fe70:	e1a02001 	mov	r2, r1
33f8fe74:	e2433001 	sub	r3, r3, #1	; 0x1
33f8fe78:	059f2238 	ldreq	r2, [pc, #568]	; 33f900b8 <malloc+0x614>
33f8fe7c:	05923004 	ldreq	r3, [r2, #4]
33f8fe80:	01c33000 	biceq	r3, r3, r0
33f8fe84:	05823004 	streq	r3, [r2, #4]
33f8fe88:	0a000002 	beq	33f8fe98 <malloc+0x3f4>
33f8fe8c:	e4121008 	ldr	r1, [r2], #-8
33f8fe90:	e1510002 	cmp	r1, r2
33f8fe94:	0afffff4 	beq	33f8fe6c <malloc+0x3c8>
33f8fe98:	e59f3218 	ldr	r3, [pc, #536]	; 33f900b8 <malloc+0x614>
33f8fe9c:	e5933004 	ldr	r3, [r3, #4]
33f8fea0:	e1a00080 	lsl	r0, r0, #1
33f8fea4:	e1500003 	cmp	r0, r3
33f8fea8:	8a000008 	bhi	33f8fed0 <malloc+0x42c>
33f8feac:	e3500000 	cmp	r0, #0	; 0x0
33f8feb0:	0a000006 	beq	33f8fed0 <malloc+0x42c>
33f8feb4:	e1a07005 	mov	r7, r5
33f8feb8:	ea000001 	b	33f8fec4 <malloc+0x420>
33f8febc:	e2877004 	add	r7, r7, #4	; 0x4
33f8fec0:	e1a00080 	lsl	r0, r0, #1
33f8fec4:	e1100003 	tst	r0, r3
33f8fec8:	1affffb9 	bne	33f8fdb4 <malloc+0x310>
33f8fecc:	eafffffa 	b	33f8febc <malloc+0x418>
33f8fed0:	e59f21e0 	ldr	r2, [pc, #480]	; 33f900b8 <malloc+0x614>
33f8fed4:	e5926008 	ldr	r6, [r2, #8]
33f8fed8:	e5963004 	ldr	r3, [r6, #4]
33f8fedc:	e3c37003 	bic	r7, r3, #3	; 0x3
33f8fee0:	e06a0007 	rsb	r0, sl, r7
33f8fee4:	e350000f 	cmp	r0, #15	; 0xf
33f8fee8:	ca000064 	bgt	33f90080 <malloc+0x5dc>
33f8feec:	e59f31c0 	ldr	r3, [pc, #448]	; 33f900b4 <malloc+0x610>
33f8fef0:	e5933034 	ldr	r3, [r3, #52]
33f8fef4:	e5929408 	ldr	r9, [r2, #1032]
33f8fef8:	e2833010 	add	r3, r3, #16	; 0x10
33f8fefc:	e3790001 	cmn	r9, #1	; 0x1
33f8ff00:	e083500a 	add	r5, r3, sl
33f8ff04:	12853eff 	addne	r3, r5, #4080	; 0xff0
33f8ff08:	1283300f 	addne	r3, r3, #15	; 0xf
33f8ff0c:	13c35eff 	bicne	r5, r3, #4080	; 0xff0
33f8ff10:	13c5500f 	bicne	r5, r5, #15	; 0xf
33f8ff14:	e1a00005 	mov	r0, r5
33f8ff18:	ebfffe11 	bl	33f8f764 <sbrk>
33f8ff1c:	e3700001 	cmn	r0, #1	; 0x1
33f8ff20:	e1a04000 	mov	r4, r0
33f8ff24:	0a00004e 	beq	33f90064 <malloc+0x5c0>
33f8ff28:	e0862007 	add	r2, r6, r7
33f8ff2c:	e1500002 	cmp	r0, r2
33f8ff30:	2a000002 	bcs	33f8ff40 <malloc+0x49c>
33f8ff34:	e59f317c 	ldr	r3, [pc, #380]	; 33f900b8 <malloc+0x614>
33f8ff38:	e1560003 	cmp	r6, r3
33f8ff3c:	1a000048 	bne	33f90064 <malloc+0x5c0>
33f8ff40:	e59f116c 	ldr	r1, [pc, #364]	; 33f900b4 <malloc+0x610>
33f8ff44:	e591300c 	ldr	r3, [r1, #12]
33f8ff48:	e1540002 	cmp	r4, r2
33f8ff4c:	e0853003 	add	r3, r5, r3
33f8ff50:	e581300c 	str	r3, [r1, #12]
33f8ff54:	1a000005 	bne	33f8ff70 <malloc+0x4cc>
33f8ff58:	e59f2158 	ldr	r2, [pc, #344]	; 33f900b8 <malloc+0x614>
33f8ff5c:	e0853007 	add	r3, r5, r7
33f8ff60:	e5922008 	ldr	r2, [r2, #8]
33f8ff64:	e3833001 	orr	r3, r3, #1	; 0x1
33f8ff68:	e5823004 	str	r3, [r2, #4]
33f8ff6c:	ea000033 	b	33f90040 <malloc+0x59c>
33f8ff70:	e3790001 	cmn	r9, #1	; 0x1
33f8ff74:	10843003 	addne	r3, r4, r3
33f8ff78:	059f3138 	ldreq	r3, [pc, #312]	; 33f900b8 <malloc+0x614>
33f8ff7c:	10623003 	rsbne	r3, r2, r3
33f8ff80:	05834408 	streq	r4, [r3, #1032]
33f8ff84:	1581300c 	strne	r3, [r1, #12]
33f8ff88:	e2143007 	ands	r3, r4, #7	; 0x7
33f8ff8c:	12630008 	rsbne	r0, r3, #8	; 0x8
33f8ff90:	01a00003 	moveq	r0, r3
33f8ff94:	e2853eff 	add	r3, r5, #4080	; 0xff0
33f8ff98:	10844000 	addne	r4, r4, r0
33f8ff9c:	e283300f 	add	r3, r3, #15	; 0xf
33f8ffa0:	e0843003 	add	r3, r4, r3
33f8ffa4:	e3c33eff 	bic	r3, r3, #4080	; 0xff0
33f8ffa8:	e0842005 	add	r2, r4, r5
33f8ffac:	e3c3300f 	bic	r3, r3, #15	; 0xf
33f8ffb0:	e0623003 	rsb	r3, r2, r3
33f8ffb4:	e0835000 	add	r5, r3, r0
33f8ffb8:	e1a00005 	mov	r0, r5
33f8ffbc:	ebfffde8 	bl	33f8f764 <sbrk>
33f8ffc0:	e3700001 	cmn	r0, #1	; 0x1
33f8ffc4:	e1a03000 	mov	r3, r0
33f8ffc8:	0a000025 	beq	33f90064 <malloc+0x5c0>
33f8ffcc:	e59f00e0 	ldr	r0, [pc, #224]	; 33f900b4 <malloc+0x610>
33f8ffd0:	e59f10e0 	ldr	r1, [pc, #224]	; 33f900b8 <malloc+0x614>
33f8ffd4:	e590200c 	ldr	r2, [r0, #12]
33f8ffd8:	e0643003 	rsb	r3, r4, r3
33f8ffdc:	e0853003 	add	r3, r5, r3
33f8ffe0:	e0852002 	add	r2, r5, r2
33f8ffe4:	e3833001 	orr	r3, r3, #1	; 0x1
33f8ffe8:	e1560001 	cmp	r6, r1
33f8ffec:	e580200c 	str	r2, [r0, #12]
33f8fff0:	e5814008 	str	r4, [r1, #8]
33f8fff4:	e5843004 	str	r3, [r4, #4]
33f8fff8:	0a000010 	beq	33f90040 <malloc+0x59c>
33f8fffc:	e357000f 	cmp	r7, #15	; 0xf
33f90000:	93a03001 	movls	r3, #1	; 0x1
33f90004:	95843004 	strls	r3, [r4, #4]
33f90008:	9a000015 	bls	33f90064 <malloc+0x5c0>
33f9000c:	e5963004 	ldr	r3, [r6, #4]
33f90010:	e247200c 	sub	r2, r7, #12	; 0xc
33f90014:	e3c22007 	bic	r2, r2, #7	; 0x7
33f90018:	e2033001 	and	r3, r3, #1	; 0x1
33f9001c:	e1823003 	orr	r3, r2, r3
33f90020:	e3a01005 	mov	r1, #5	; 0x5
33f90024:	e352000f 	cmp	r2, #15	; 0xf
33f90028:	e0862002 	add	r2, r6, r2
33f9002c:	e5863004 	str	r3, [r6, #4]
33f90030:	e5821008 	str	r1, [r2, #8]
33f90034:	e5821004 	str	r1, [r2, #4]
33f90038:	82860008 	addhi	r0, r6, #8	; 0x8
33f9003c:	8bfffe08 	blhi	33f8f864 <free>
33f90040:	e59f106c 	ldr	r1, [pc, #108]	; 33f900b4 <malloc+0x610>
33f90044:	e591200c 	ldr	r2, [r1, #12]
33f90048:	e5913038 	ldr	r3, [r1, #56]
33f9004c:	e1520003 	cmp	r2, r3
33f90050:	85812038 	strhi	r2, [r1, #56]
33f90054:	e59f1058 	ldr	r1, [pc, #88]	; 33f900b4 <malloc+0x610>
33f90058:	e591303c 	ldr	r3, [r1, #60]
33f9005c:	e1520003 	cmp	r2, r3
33f90060:	8581203c 	strhi	r2, [r1, #60]
33f90064:	e59f304c 	ldr	r3, [pc, #76]	; 33f900b8 <malloc+0x614>
33f90068:	e5933008 	ldr	r3, [r3, #8]
33f9006c:	e5933004 	ldr	r3, [r3, #4]
33f90070:	e3c33003 	bic	r3, r3, #3	; 0x3
33f90074:	e06a0003 	rsb	r0, sl, r3
33f90078:	e350000f 	cmp	r0, #15	; 0xf
33f9007c:	da000009 	ble	33f900a8 <malloc+0x604>
33f90080:	e59fc030 	ldr	ip, [pc, #48]	; 33f900b8 <malloc+0x614>
33f90084:	e59c2008 	ldr	r2, [ip, #8]
33f90088:	e3800001 	orr	r0, r0, #1	; 0x1
33f9008c:	e082100a 	add	r1, r2, sl
33f90090:	e38a3001 	orr	r3, sl, #1	; 0x1
33f90094:	e5823004 	str	r3, [r2, #4]
33f90098:	e58c1008 	str	r1, [ip, #8]
33f9009c:	e5810004 	str	r0, [r1, #4]
33f900a0:	e2825008 	add	r5, r2, #8	; 0x8
33f900a4:	ea000000 	b	33f900ac <malloc+0x608>
33f900a8:	e3a05000 	mov	r5, #0	; 0x0
33f900ac:	e1a00005 	mov	r0, r5
33f900b0:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}
33f900b4:	33fa3e20 	.word	0x33fa3e20
33f900b8:	33f9ff54 	.word	0x33f9ff54
33f900bc:	00000554 	.word	0x00000554


More information about the U-Boot mailing list