view pirelli/preboot.disasm @ 67:88cf9811f97c

started disassembly of Pirelli's boot code
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sun, 09 Feb 2014 09:36:42 +0000
parents
children 6a136554378e
line wrap: on
line source

       0:	ea00004b 	b	0x134
       4:	ea00bffe 	b	0x30004
       8:	ea00bffe 	b	0x30008
       c:	ea00bffe 	b	0x3000c
      10:	ea00bffe 	b	0x30010
      14:	ea00bffe 	b	0x30014
      18:	ea00bffe 	b	0x30018
      1c:	ea00bffe 	b	0x3001c

<20-FF: all FFs>

     100:	fffffb00
     104:	02a102a1
     108:	028302a1
     10c:	00c000aa
     110:	002a0040
     114:	fffffd00
     118:	ffff9800
     11c:	fffffb10
     120:	ffffff08
     124:	fffff804
     128:	20061081
     12c:	00000800
     130:	00a000f5

; RESET vector branches here
     134:	e51f1024 	ldr	r1, [pc, #-36]	; 0x118 =0xffff9800
     138:	e15f21b6 	ldrh	r2, [pc, #-22]	; 0x12a =0x2006
     13c:	e1c120b0 	strh	r2, [r1]
     140:	e5912000 	ldr	r2, [r1]
     144:	e2022001 	and	r2, r2, #1	; 0x1
     148:	e3520001 	cmp	r2, #1	; 0x1
     14c:	0afffffb 	beq	0x140
     150:	e51f1044 	ldr	r1, [pc, #-68]	; 0x114 =0xfffffd00
     154:	e15f23b4 	ldrh	r2, [pc, #-52]	; 0x128 =0x1081
     158:	e1c120b0 	strh	r2, [r1]
     15c:	e51f1048 	ldr	r1, [pc, #-72]	; 0x11c =0xfffffb10
     160:	e15f23bc 	ldrh	r2, [pc, #-60]	; 0x12c =0x0800
     164:	e1d100b0 	ldrh	r0, [r1]
     168:	e1800002 	orr	r0, r0, r2
     16c:	e1c100b0 	strh	r0, [r1]	; DU disable
     170:	e51f1058 	ldr	r1, [pc, #-88]	; 0x120 =0xffffff08
     174:	e15f24be 	ldrh	r2, [pc, #-78]	; 0x12e =0x0000
     178:	e1c120b0 	strh	r2, [r1]	; MPU disable
     17c:	e51f1084 	ldr	r1, [pc, #-132]	; 0x100 =0xfffffb00
     180:	e51f1064 	ldr	r1, [pc, #-100]	; 0x124 =0xfffff804
     184:	e15f25bc 	ldrh	r2, [pc, #-92]	; 0x130 =0x00f5
     188:	e1c120b0 	strh	r2, [r1]	; WDOG disable cycle 1
     18c:	e51f1070 	ldr	r1, [pc, #-112]	; 0x124 =0xfffff804
     190:	e15f26b6 	ldrh	r2, [pc, #-102]	; 0x132 =0x00a0
     194:	e1c120b0 	strh	r2, [r1]	; WDOG disable cycle 2
     198:	e15f29bc 	ldrh	r2, [pc, #-156]	; 0x104
     19c:	e1c120b0 	strh	r2, [r1]
     1a0:	e15f2ab2 	ldrh	r2, [pc, #-162]	; 0x106
     1a4:	e1c120b2 	strh	r2, [r1, #2]
     1a8:	e15f2ab8 	ldrh	r2, [pc, #-168]	; 0x108
     1ac:	e1c120b4 	strh	r2, [r1, #4]
     1b0:	e15f2abe 	ldrh	r2, [pc, #-174]	; 0x10a
     1b4:	e1c120b6 	strh	r2, [r1, #6]
     1b8:	e15f2bb4 	ldrh	r2, [pc, #-180]	; 0x10c
     1bc:	e1c120ba 	strh	r2, [r1, #10]
     1c0:	e15f2bba 	ldrh	r2, [pc, #-186]	; 0x10e
     1c4:	e1c120bc 	strh	r2, [r1, #12]
     1c8:	e15f2cb0 	ldrh	r2, [pc, #-192]	; 0x110
     1cc:	e1c120b8 	strh	r2, [r1, #8]
     1d0:	e15f2cb6 	ldrh	r2, [pc, #-198]	; 0x112
     1d4:	e1c120be 	strh	r2, [r1, #14]
     1d8:	e59f0020 	ldr	r0, [pc, #32]	; 0x200 =0x81047c
     1dc:	e3a01b01 	mov	r1, #1024	; 0x400
     1e0:	e2411004 	sub	r1, r1, #4	; 0x4
     1e4:	e0802001 	add	r2, r0, r1
     1e8:	e3c22003 	bic	r2, r2, #3	; 0x3
     1ec:	e1a0d002 	mov	sp, r2
     1f0:	e92d100f 	stmdb	sp!, {r0, r1, r2, r3, ip}
     1f4:	eb00003b 	bl	0x2e8
     1f8:	e8bd100f 	ldmia	sp!, {r0, r1, r2, r3, ip}
     1fc:	ea000796 	b	0x205c

     200:	0081047c

; copy(src, len, dest)
     204:	2900      	cmp	r1, #0
     206:	d006      	beq	0x216
     208:	6803      	ldr	r3, [r0, #0]
     20a:	6013      	str	r3, [r2, #0]
     20c:	3204      	add	r2, #4
     20e:	3004      	add	r0, #4
     210:	3904      	sub	r1, #4
     212:	2900      	cmp	r1, #0
     214:	d1f8      	bne	0x208
     216:	4770      	bx	lr

; checksumming function: XOR of all 16-bit words in region
     218:	2200      	mov	r2, #0
     21a:	2900      	cmp	r1, #0
     21c:	d007      	beq	0x22e
     21e:	8803      	ldrh	r3, [r0, #0]
     220:	4053      	eor	r3, r2
     222:	041a      	lsl	r2, r3, #16
     224:	0c12      	lsr	r2, r2, #16
     226:	3002      	add	r0, #2
     228:	3902      	sub	r1, #2
     22a:	2900      	cmp	r1, #0
     22c:	d1f7      	bne	0x21e
     22e:	1c10      	mov	r0, r2		(add r0, r2, #0)
     230:	4770      	bx	lr

; 0x232 routine is bzero() with 4-byte alignment required
     232:	2900      	cmp	r1, #0
     234:	d005      	beq	0x242
     236:	2200      	mov	r2, #0
     238:	6002      	str	r2, [r0, #0]
     23a:	3004      	add	r0, #4
     23c:	3904      	sub	r1, #4
     23e:	2900      	cmp	r1, #0
     240:	d1fa      	bne	0x238
     242:	4770      	bx	lr

; 0xAA88 bytes are copied from 0x2508 to 0x810484
     244:	b5f0      	push	{r4, r5, r6, r7, lr}
     246:	4e10      	ldr	r6, [pc, #64]	(0x288) =0x800010
     248:	2000      	mov	r0, #0
     24a:	8030      	strh	r0, [r6, #0]
     24c:	4f0f      	ldr	r7, [pc, #60]	(0x28c) =0x800012
     24e:	8038      	strh	r0, [r7, #0]
     250:	480f      	ldr	r0, [pc, #60]	(0x290) =0x810480
     252:	4910      	ldr	r1, [pc, #64]	(0x294) =0x81AF0C
     254:	1a09      	sub	r1, r1, r0
     256:	3904      	sub	r1, #4
     258:	468c      	mov	ip, r1
     25a:	2104      	mov	r1, #4
     25c:	180c      	add	r4, r1, r0
     25e:	1c20      	mov	r0, r4		(add r0, r4, #0)
     260:	4661      	mov	r1, ip
     262:	ffe6f7ff 	bl	0x232		; bzero()
     266:	4d0c      	ldr	r5, [pc, #48]	(0x298) =0x2508
     268:	1c28      	mov	r0, r5		(add r0, r5, #0)
     26a:	4661      	mov	r1, ip
     26c:	ffd4f7ff 	bl	0x218
     270:	8030      	strh	r0, [r6, #0]
     272:	1c28      	mov	r0, r5		(add r0, r5, #0)
     274:	4661      	mov	r1, ip
     276:	1c22      	mov	r2, r4		(add r2, r4, #0)
     278:	ffc4f7ff 	bl	0x204
     27c:	1c20      	mov	r0, r4		(add r0, r4, #0)
     27e:	4661      	mov	r1, ip
     280:	ffcaf7ff 	bl	0x218
     284:	8038      	strh	r0, [r7, #0]
     286:	bdf0      	pop	{r4, r5, r6, r7, pc}

     288:	00800010
     28c:	00800012
     290:	00810480
     294:	0081af0c
     298:	00002508

     29c:	b500      	push	{lr}
     29e:	f82bf000 	bl	0x2f8
     2a2:	f802f000 	bl	0x2aa
     2a6:	bd00      	pop	{pc}

     2a8:	4770      	bx	lr

     2aa:	b500      	push	{lr}
     2ac:	2003      	mov	r0, #3
     2ae:	0400      	lsl	r0, r0, #16
     2b0:	f820f000 	bl	0x2f4
     2b4:	bd00      	pop	{pc}
     2b6:	0000

     2b8:	e92d4000 	stmdb	sp!, {lr}
     2bc:	e28fe001 	add	lr, pc, #1	; 0x1
     2c0:	e12fff1e 	bx	lr
     2c4:	ffeaf7ff 	bl	0x29c
     2c8:	4778      	bx	pc
     2ca:	46c0      	nop			(mov r8, r8)
     2cc:	e8bd8000 	ldmia	sp!, {pc}

     2d0:	e92d4000 	stmdb	sp!, {lr}
     2d4:	e28fe001 	add	lr, pc, #1	; 0x1
     2d8:	e12fff1e 	bx	lr
     2dc:	ffb2f7ff 	bl	0x244
     2e0:	4778      	bx	pc
     2e2:	46c0      	nop			(mov r8, r8)
     2e4:	e8bd8000 	ldmia	sp!, {pc}

     2e8:	e59fc000 	ldr	ip, [pc, #0]	; 0x2f0
     2ec:	e12fff1c 	bx	ip
     2f0:	000002a9

     2f4:	4700      	bx	r0
     2f6:	0000

     2f8:	b082      	sub	sp, #8
     2fa:	9400      	str	r4, [sp, #0]
     2fc:	4c01      	ldr	r4, [pc, #4]	(0x304)
     2fe:	9401      	str	r4, [sp, #4]
     300:	bd10      	pop	{r4, pc}
     302:	0000
     304:	00818f2c

<308-1FFF: all FFs>

    2000:	00000001	; magic word for the Calypso boot ROM

    2004:	ea0000be 	b	0x2304
    2008:	ea0000c0 	b	0x2310
    200c:	ea0000c2 	b	0x231c
    2010:	ea0000c4 	b	0x2328
    2014:	ea0000c6 	b	0x2334
    2018:	ea0000b0 	b	0x22e0
    201c:	ea0000b6 	b	0x22fc

    2020:	02a102a4
    2024:	02a402a1
    2028:	02c0009c
    202c:	002a0040
    2030:	fffffb00
    2034:	fffef006
    2038:	00000008
    203c:	fffffd00
    2040:	ffff9800
    2044:	fffffb10
    2048:	ffffff08
    204c:	20021081
    2050:	f7ff0800
    2054:	00000000
    2058:	0001fa00

; COME FROM 0x1fc
    205c:	e51f1024 	ldr	r1, [pc, #-36]	; 0x2040 =0xffff9800
    2060:	e15f21ba 	ldrh	r2, [pc, #-26]	; 0x204e =0x2002
    2064:	e1c120b0 	strh	r2, [r1]
    2068:	e5912000 	ldr	r2, [r1]
    206c:	e2022001 	and	r2, r2, #1	; 0x1
    2070:	e3520001 	cmp	r2, #1	; 0x1
    2074:	0afffffb 	beq	0x2068
    2078:	e51f1044 	ldr	r1, [pc, #-68]	; 0x203c =0xfffffd00
    207c:	e15f23b8 	ldrh	r2, [pc, #-56]	; 0x204c =0x1081
    2080:	e1c120b0 	strh	r2, [r1]
    2084:	e51f1048 	ldr	r1, [pc, #-72]	; 0x2044 =0xfffffb10
    2088:	e15f23be 	ldrh	r2, [pc, #-62]	; 0x2052 =0xf7ff
    208c:	e1d100b0 	ldrh	r0, [r1]
    2090:	e0000002 	and	r0, r0, r2
    2094:	e1c100b0 	strh	r0, [r1]	; enable DU
    2098:	e51f1058 	ldr	r1, [pc, #-88]	; 0x2048 =0xffffff08
    209c:	e15f25b0 	ldrh	r2, [pc, #-80]	; 0x2054 =0x0000
    20a0:	e1c120b0 	strh	r2, [r1]
    20a4:	e51f107c 	ldr	r1, [pc, #-124]	; 0x2030 =0xfffffb00
    20a8:	e15f29b0 	ldrh	r2, [pc, #-144]	; 0x2020 =0x02a4
    20ac:	e1c120b0 	strh	r2, [r1]
    20b0:	e15f29b6 	ldrh	r2, [pc, #-150]	; 0x2022 =0x02a1
    20b4:	e1c120b2 	strh	r2, [r1, #2]
    20b8:	e15f29bc 	ldrh	r2, [pc, #-156]	; 0x2024 =0x02a1
    20bc:	e1c120b4 	strh	r2, [r1, #4]
    20c0:	e15f2ab2 	ldrh	r2, [pc, #-162]	; 0x2026 =0x02a4
    20c4:	e1c120b6 	strh	r2, [r1, #6]
    20c8:	e15f2ab8 	ldrh	r2, [pc, #-168]	; 0x2028 =0x009c
    20cc:	e1c120ba 	strh	r2, [r1, #10]
    20d0:	e15f2abe 	ldrh	r2, [pc, #-174]	; 0x202a =0x02c0
    20d4:	e1c120bc 	strh	r2, [r1, #12]
    20d8:	e15f2bb4 	ldrh	r2, [pc, #-180]	; 0x202c =0x0040
    20dc:	e1c120b8 	strh	r2, [r1, #8]
    20e0:	e15f2bba 	ldrh	r2, [pc, #-186]	; 0x202e =0x002a
    20e4:	e1c120be 	strh	r2, [r1, #14]
    20e8:	e51f10bc 	ldr	r1, [pc, #-188]	; 0x2034 =0xfffef006
    20ec:	e1d120b0 	ldrh	r2, [r1]
    20f0:	e51f00c0 	ldr	r0, [pc, #-192]	; 0x2038 =0x00000008
    20f4:	e1800002 	orr	r0, r0, r2
    20f8:	e1c100b0 	strh	r0, [r1]	; enable A22
    20fc:	e10f0000 	mrs	r0, CPSR
    2100:	e3c0001f 	bic	r0, r0, #31	; 0x1f
    2104:	e3800013 	orr	r0, r0, #19	; 0x13
    2108:	e38000c0 	orr	r0, r0, #192	; 0xc0
    210c:	e129f000 	msr	CPSR_fc, r0	; SVC, all ints disabled
    2110:	e59f02e0 	ldr	r0, [pc, #736]	; 0x23f8 =0x800004
    2114:	e3a02000 	mov	r2, #0	; 0x0
    2118:	e59f12dc 	ldr	r1, [pc, #732]	; 0x23fc =0x81047c
    211c:	e1500001 	cmp	r0, r1
    2120:	0a000000 	beq	0x2128
    2124:	e4802004 	str	r2, [r0], #4
    2128:	e1500001 	cmp	r0, r1
    212c:	1afffffc 	bne	0x2124
    2130:	e59f02c8 	ldr	r0, [pc, #712]	; 0x2400 =0x800000
    2134:	e3a02000 	mov	r2, #0	; 0x0
    2138:	e59f12c4 	ldr	r1, [pc, #708]	; 0x2404 =0x81047c
    213c:	e1500001 	cmp	r0, r1
    2140:	0a000000 	beq	0x2148
    2144:	e4802004 	str	r2, [r0], #4
    2148:	e1500001 	cmp	r0, r1
    214c:	1afffffc 	bne	0x2144
    2150:	e3a00001 	mov	r0, #1	; 0x1
    2154:	e59f12b0 	ldr	r1, [pc, #688]	; 0x240c =0x800004
    2158:	e5810000 	str	r0, [r1]
    215c:	e59f02a4 	ldr	r0, [pc, #676]	; 0x2408 =0x81aff8
    2160:	e3a01e46 	mov	r1, #1120	; 0x460
    2164:	e2411004 	sub	r1, r1, #4	; 0x4
    2168:	e0802001 	add	r2, r0, r1
    216c:	e1a0a000 	mov	sl, r0
    2170:	e59f3298 	ldr	r3, [pc, #664]	; 0x2410 =0x800008
    2174:	e583a000 	str	sl, [r3]
    2178:	e1a0d002 	mov	sp, r2
    217c:	e59f3290 	ldr	r3, [pc, #656]	; 0x2414 =0x80000c
    2180:	e583d000 	str	sp, [r3]
    2184:	e3a01080 	mov	r1, #128	; 0x80
    2188:	e0822001 	add	r2, r2, r1
    218c:	e10f0000 	mrs	r0, CPSR
    2190:	e3c0001f 	bic	r0, r0, #31	; 0x1f
    2194:	e3800012 	orr	r0, r0, #18	; 0x12
    2198:	e129f000 	msr	CPSR_fc, r0	; IRQ
    219c:	e1a0d002 	mov	sp, r2
    21a0:	e3a01c02 	mov	r1, #512	; 0x200
    21a4:	e0822001 	add	r2, r2, r1
    21a8:	e10f0000 	mrs	r0, CPSR
    21ac:	e3c0001f 	bic	r0, r0, #31	; 0x1f
    21b0:	e3800011 	orr	r0, r0, #17	; 0x11
    21b4:	e129f000 	msr	CPSR_fc, r0	; FIQ
    21b8:	e1a0d002 	mov	sp, r2
    21bc:	e10f0000 	mrs	r0, CPSR
    21c0:	e3c0001f 	bic	r0, r0, #31	; 0x1f
    21c4:	e3800017 	orr	r0, r0, #23	; 0x17
    21c8:	e129f000 	msr	CPSR_fc, r0	; Abort
    21cc:	e59fd244 	ldr	sp, [pc, #580]	; 0x2418 =0x81AF60
    21d0:	e10f0000 	mrs	r0, CPSR
    21d4:	e3c0001f 	bic	r0, r0, #31	; 0x1f
    21d8:	e380001b 	orr	r0, r0, #27	; 0x1b
    21dc:	e129f000 	msr	CPSR_fc, r0	; Undef
    21e0:	e59fd230 	ldr	sp, [pc, #560]	; 0x2418 =0x81AF60
    21e4:	e10f0000 	mrs	r0, CPSR
    21e8:	e3c0001f 	bic	r0, r0, #31	; 0x1f
    21ec:	e3800013 	orr	r0, r0, #19	; 0x13
    21f0:	e129f000 	msr	CPSR_fc, r0	; SVC
    21f4:	e1a04002 	mov	r4, r2
    21f8:	ebfff834 	bl	0x2d0		; 0x244 via veneer
    21fc:	e1a02004 	mov	r2, r4
    2200:	e59f1208 	ldr	r1, [pc, #520]	; 0x2410 =0x800008
    2204:	e5910000 	ldr	r0, [r1]
    2208:	e3a030fe 	mov	r3, #254	; 0xfe
    220c:	e5c03000 	strb	r3, [r0]
    2210:	e5c03001 	strb	r3, [r0, #1]
    2214:	e5c03002 	strb	r3, [r0, #2]
    2218:	e5c03003 	strb	r3, [r0, #3]
    221c:	e4903004 	ldr	r3, [r0], #4
    2220:	e4803004 	str	r3, [r0], #4
    2224:	e1500002 	cmp	r0, r2
    2228:	bafffffc 	blt	0x2220
    222c:	e51f01dc 	ldr	r0, [pc, #-476]	; 0x2058 =0x1FA00
    2230:	e3700001 	cmn	r0, #1	; 0x1
    2234:	1b000079 	blne	0x2420
    2238:	e1a00002 	mov	r0, r2
    223c:	ebfff81d 	bl	0x2b8

<2240-23F7: not yet analyzed>

    23f8:	00800004
    23fc:	0081047c
    2400:	00800000
    2404:	0081047c
    2408:	0081aff8
    240c:	00800004
    2410:	00800008
    2414:	0080000c
    2418:	0081af60
    241c:	0081af60

; TI's initialized data function
    2420:	ea00000c 	b	0x2458
    2424:	e4901004 	ldr	r1, [r0], #4
    2428:	e3530003 	cmp	r3, #3	; 0x3
    242c:	84904004 	ldrhi	r4, [r0], #4
    2430:	84814004 	strhi	r4, [r1], #4
    2434:	82433004 	subhi	r3, r3, #4	; 0x4
    2438:	94d04001 	ldrlsb	r4, [r0], #1
    243c:	94c14001 	strlsb	r4, [r1], #1
    2440:	92433001 	subls	r3, r3, #1	; 0x1
    2444:	e3530000 	cmp	r3, #0	; 0x0
    2448:	1afffff6 	bne	0x2428
    244c:	e2103003 	ands	r3, r0, #3	; 0x3
    2450:	12633004 	rsbne	r3, r3, #4	; 0x4
    2454:	10800003 	addne	r0, r0, r3
    2458:	e4903004 	ldr	r3, [r0], #4
    245c:	e3530000 	cmp	r3, #0	; 0x0
    2460:	1affffef 	bne	0x2424
    2464:	e1a0f00e 	mov	pc, lr

<2468-24FF: all FFs>

    2500:	00000000
    2504:	ffffffff

2508: 0xAA88 bytes copied to IRAM
CF8F: last copied byte

<CF90-1F9FF: all FFs>

; initialized data table
   1fa00:	00000001
   1fa04:	00810020
   1fa08:	c046c000

   1fa0c:	00000001
   1fa10:	00810021
   1fa14:	c046c000

   1fa18:	00000004
   1fa1c:	00810024
   1fa20:	00000000

   1fa24:	0000000c
   1fa28:	0081006c
   1fa2c:	0081a4d0
   1fa30:	0081a768
   1fa34:	0081aa00

   1fa38:	00000002
   1fa3c:	00810014
   1fa40:	46c00000

   1fa44:	00000002
   1fa48:	00810016
   1fa4c:	46c00000

   1fa50:	00000001
   1fa54:	00810018
   1fa58:	c046c000

   1fa5c:	00000001
   1fa60:	00810019
   1fa64:	000000bc

   1fa68:	00000001
   1fa6c:	00800000
   1fa70:	a0000000

   1fa74:	00000001
   1fa78:	0081047c
   1fa7c:	00000000

   1fa80:	00000004
   1fa84:	00810078
   1fa88:	00000000

   1fa8c:	00000004
   1fa90:	0081001c
   1fa94:	00000000
   1fa98:	00000000

<1FA9C-2FFBF: all FFs>

0002FFC0:  42 43 5F 44 39 31 30 2E  30 2E 31 36 00 00 00 00  BC_D910.0.16....
0002FFD0:  FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF  ................
*