changeset 284:1ddfbfe3cec5

compal/c139-fw-disasm: GPIO init analysis complete
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 14 Mar 2019 08:33:39 +0000
parents f724d574cff3
children e5b0164f6060
files compal/c139-fw-disasm
diffstat 1 files changed, 647 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compal/c139-fw-disasm	Thu Mar 14 08:33:39 2019 +0000
@@ -0,0 +1,647 @@
+; This disassembly is an analysis of the Mot C139 fw version published in
+; c139-unlocked-fw.zip, seeking to get to the Init_Target() and
+; AI_InitIOConfig() functions.
+
+       0:	ea000225	b	0x89c
+       4:	ea000825	b	0x20a0
+       8:	ea000825	b	0x20a4
+       c:	ea000825	b	0x20a8
+      10:	ea000825	b	0x20ac
+      14:	ea000825	b	0x20b0
+      18:	ea000825	b	0x20b4
+      1c:	ea000825	b	0x20b8
+
+_INT_Bootloader_Start:
+; same as in the Mot C11x version with symbols
+     89c:	e51f1020	ldr	r1, =0xfffffd00	; via 0x884
+     8a0:	e1d120b2	ldrh	r2, [r1, #2]
+     8a4:	e51f002c	ldr	r0, =0x40	; via 0x880
+     8a8:	e1800002	orr	r0, r0, r2
+     8ac:	e1c100b2	strh	r0, [r1, #2]
+     8b0:	e51f1030	ldr	r1, =0xffff9800	; via 0x888
+     8b4:	e15f22b6	ldrh	r2, =0x2006	; via 0x896
+     8b8:	e1c120b0	strh	r2, [r1]
+     8bc:	e5912000	ldr	r2, [r1]
+     8c0:	e2022001	and	r2, r2, #1
+     8c4:	e3520001	cmp	r2, #1
+     8c8:	0afffffb	beq	0x8bc
+     8cc:	e51f1050	ldr	r1, =0xfffffd00	; via 0x884
+     8d0:	e15f24b4	ldrh	r2, =0x1081	; via 0x894
+     8d4:	e1c120b0	strh	r2, [r1]
+     8d8:	e51f1054	ldr	r1, =0xfffffb10	; via 0x88c
+     8dc:	e15f24bc	ldrh	r2, =0x800	; via 0x898
+     8e0:	e1d100b0	ldrh	r0, [r1]
+     8e4:	e1800002	orr	r0, r0, r2
+     8e8:	e1c100b0	strh	r0, [r1]
+     8ec:	e51f1064	ldr	r1, =0xffffff08	; via 0x890
+     8f0:	e15f25be	ldrh	r2, =0x0	; via 0x89a
+     8f4:	e1c120b0	strh	r2, [r1]
+     8f8:	e51f1094	ldr	r1, =0xfffffb00	; via 0x86c
+     8fc:	e15f29b4	ldrh	r2, =0x2a1	; via 0x870
+     900:	e1c120b0	strh	r2, [r1]
+     904:	e15f29ba	ldrh	r2, =0x2a1	; via 0x872
+     908:	e1c120b2	strh	r2, [r1, #2]
+     90c:	e15f2ab0	ldrh	r2, =0x2a1	; via 0x874
+     910:	e1c120b4	strh	r2, [r1, #4]
+     914:	e15f2ab6	ldrh	r2, =0x283	; via 0x876
+     918:	e1c120b6	strh	r2, [r1, #6]
+     91c:	e15f2abc	ldrh	r2, =0x281	; via 0x878
+     920:	e1c120ba	strh	r2, [r1, #10]	; 0xa
+     924:	e15f2bb2	ldrh	r2, =0xc0	; via 0x87a
+     928:	e1c120bc	strh	r2, [r1, #12]	; 0xc
+     92c:	e15f2bb8	ldrh	r2, =0x40	; via 0x87c
+     930:	e1c120b8	strh	r2, [r1, #8]
+     934:	e15f2bbe	ldrh	r2, =0x2a	; via 0x87e
+     938:	e1c120be	strh	r2, [r1, #14]	; 0xe
+     93c:	e59f0020	ldr	r0, =0x83e600	; via 0x964
+     940:	e3a01b01	mov	r1, #1024	; 0x400
+     944:	e2411004	sub	r1, r1, #4
+     948:	e0802001	add	r2, r0, r1
+     94c:	e3c22003	bic	r2, r2, #3
+     950:	e1a0d002	mov	sp, r2
+     954:	e92d100f	stmdb	sp!, {r0, r1, r2, r3, r12}
+     958:	eb000534	bl	0x1e30	; _sta_select_application
+     95c:	e8bd100f	ldmia	sp!, {r0, r1, r2, r3, r12}
+     960:	ea0005e4	b	0x20f8	; _INT_Initialize
+
+_INT_Initialize:
+; same as the C11x version except for bigger XRAM clearing
+    20f8:	e51f1024	ldr	r1, =0xffff9800	; via 0x20dc
+    20fc:	e15f21ba	ldrh	r2, =0x2002	; via 0x20ea
+    2100:	e1c120b0	strh	r2, [r1]
+    2104:	e5912000	ldr	r2, [r1]
+    2108:	e2022001	and	r2, r2, #1
+    210c:	e3520001	cmp	r2, #1
+    2110:	0afffffb	beq	0x2104
+    2114:	e51f1044	ldr	r1, =0xfffffd00	; via 0x20d8
+    2118:	e15f23b8	ldrh	r2, =0x1081	; via 0x20e8
+    211c:	e1c120b0	strh	r2, [r1]
+    2120:	e51f1048	ldr	r1, =0xfffffb10	; via 0x20e0
+    2124:	e15f23be	ldrh	r2, =0xf7ff	; via 0x20ee
+    2128:	e1d100b0	ldrh	r0, [r1]
+    212c:	e0000002	and	r0, r0, r2
+    2130:	e1c100b0	strh	r0, [r1]
+    2134:	e51f1058	ldr	r1, =0xffffff08	; via 0x20e4
+    2138:	e15f25b0	ldrh	r2, =0x0	; via 0x20f0
+    213c:	e1c120b0	strh	r2, [r1]
+    2140:	e51f107c	ldr	r1, =0xfffffb00	; via 0x20cc
+    2144:	e15f29b0	ldrh	r2, =0x2a1	; via 0x20bc
+    2148:	e1c120b0	strh	r2, [r1]
+    214c:	e15f29b6	ldrh	r2, =0x2a1	; via 0x20be
+    2150:	e1c120b2	strh	r2, [r1, #2]
+    2154:	e15f29bc	ldrh	r2, =0x2a1	; via 0x20c0
+    2158:	e1c120b4	strh	r2, [r1, #4]
+    215c:	e15f2ab2	ldrh	r2, =0x283	; via 0x20c2
+    2160:	e1c120b6	strh	r2, [r1, #6]
+    2164:	e15f2ab8	ldrh	r2, =0xe85	; via 0x20c4
+    2168:	e1c120ba	strh	r2, [r1, #10]	; 0xa
+    216c:	e15f2abe	ldrh	r2, =0x2c0	; via 0x20c6
+    2170:	e1c120bc	strh	r2, [r1, #12]	; 0xc
+    2174:	e15f2bb4	ldrh	r2, =0x40	; via 0x20c8
+    2178:	e1c120b8	strh	r2, [r1, #8]
+    217c:	e15f2bba	ldrh	r2, =0x2a	; via 0x20ca
+    2180:	e1c120be	strh	r2, [r1, #14]	; 0xe
+    2184:	e51f10bc	ldr	r1, =0xfffef006	; via 0x20d0
+    2188:	e1d120b0	ldrh	r2, [r1]
+    218c:	e51f00c0	ldr	r0, =0x8	; via 0x20d4
+    2190:	e1800002	orr	r0, r0, r2
+    2194:	e1c100b0	strh	r0, [r1]
+    2198:	e10f0000	mrs	r0, CPSR
+    219c:	e3c0001f	bic	r0, r0, #31	; 0x1f
+    21a0:	e3800013	orr	r0, r0, #19	; 0x13
+    21a4:	e38000c0	orr	r0, r0, #192	; 0xc0
+    21a8:	e129f000	msr	CPSR_fc, r0
+    21ac:	e3a00502	mov	r0, #8388608	; 0x800000
+    21b0:	e3a02000	mov	r2, #0
+    21b4:	e3a01721	mov	r1, #8650752	; 0x840000
+    21b8:	e2411080	sub	r1, r1, #128	; 0x80
+    21bc:	e4802004	str	r2, [r0], #4
+    21c0:	e1500001	cmp	r0, r1
+    21c4:	1afffffc	bne	0x21bc
+    21c8:	e3a00401	mov	r0, #16777216	; 0x1000000
+    21cc:	e3a02000	mov	r2, #0
+    21d0:	e3a01742	mov	r1, #17301504	; 0x1080000
+    21d4:	e2411080	sub	r1, r1, #128	; 0x80
+    21d8:	e4802004	str	r2, [r0], #4
+    21dc:	e1500001	cmp	r0, r1
+    21e0:	1afffffc	bne	0x21d8
+    21e4:	e3a00001	mov	r0, #1
+    21e8:	e59f12c8	ldr	r1, =0x83e574	; via 0x24b8
+    21ec:	e5810000	str	r0, [r1]
+    21f0:	e59f02bc	ldr	r0, =0x83e6e8	; via 0x24b4
+    21f4:	e3a01b01	mov	r1, #1024	; 0x400
+    21f8:	e2411004	sub	r1, r1, #4
+    21fc:	e0802001	add	r2, r0, r1
+    2200:	e1a0a000	mov	r10, r0
+    2204:	e59f32b0	ldr	r3, =0x813570	; via 0x24bc
+    2208:	e583a000	str	r10, [r3]
+    220c:	e1a0d002	mov	sp, r2
+    2210:	e59f32a8	ldr	r3, =0x8130d8	; via 0x24c0
+    2214:	e583d000	str	sp, [r3]
+    2218:	e3a01080	mov	r1, #128	; 0x80
+    221c:	e0822001	add	r2, r2, r1
+    2220:	e10f0000	mrs	r0, CPSR
+    2224:	e3c0001f	bic	r0, r0, #31	; 0x1f
+    2228:	e3800012	orr	r0, r0, #18	; 0x12
+    222c:	e129f000	msr	CPSR_fc, r0
+    2230:	e1a0d002	mov	sp, r2
+    2234:	e3a01c02	mov	r1, #512	; 0x200
+    2238:	e0822001	add	r2, r2, r1
+    223c:	e10f0000	mrs	r0, CPSR
+    2240:	e3c0001f	bic	r0, r0, #31	; 0x1f
+    2244:	e3800011	orr	r0, r0, #17	; 0x11
+    2248:	e129f000	msr	CPSR_fc, r0
+    224c:	e1a0d002	mov	sp, r2
+    2250:	e10f0000	mrs	r0, CPSR
+    2254:	e3c0001f	bic	r0, r0, #31	; 0x1f
+    2258:	e3800017	orr	r0, r0, #23	; 0x17
+    225c:	e129f000	msr	CPSR_fc, r0
+    2260:	e59fd268	ldr	sp, =0x83e650	; via 0x24d0
+    2264:	e10f0000	mrs	r0, CPSR
+    2268:	e3c0001f	bic	r0, r0, #31	; 0x1f
+    226c:	e380001b	orr	r0, r0, #27	; 0x1b
+    2270:	e129f000	msr	CPSR_fc, r0
+    2274:	e59fd254	ldr	sp, =0x83e650	; via 0x24d0
+    2278:	e10f0000	mrs	r0, CPSR
+    227c:	e3c0001f	bic	r0, r0, #31	; 0x1f
+    2280:	e3800013	orr	r0, r0, #19	; 0x13
+    2284:	e129f000	msr	CPSR_fc, r0
+    2288:	e59f3234	ldr	r3, =0x813584	; via 0x24c4
+    228c:	e2822004	add	r2, r2, #4
+    2290:	e5832000	str	r2, [r3]
+    2294:	e3a01b01	mov	r1, #1024	; 0x400
+    2298:	e3c11003	bic	r1, r1, #3
+    229c:	e0822001	add	r2, r2, r1
+    22a0:	e59f3220	ldr	r3, =0x813608	; via 0x24c8
+    22a4:	e5831000	str	r1, [r3]
+    22a8:	e3a01002	mov	r1, #2
+    22ac:	e59f3218	ldr	r3, =0x813618	; via 0x24cc
+    22b0:	e5831000	str	r1, [r3]
+    22b4:	e1a04002	mov	r4, r2
+    22b8:	eb07a131	bl	0x1ea784	; _f_load_int_mem
+    22bc:	e1a02004	mov	r2, r4
+    22c0:	e59f11f4	ldr	r1, =0x813570	; via 0x24bc
+    22c4:	e5910000	ldr	r0, [r1]
+    22c8:	e3a030fe	mov	r3, #254	; 0xfe
+    22cc:	e5c03000	strb	r3, [r0]
+    22d0:	e5c03001	strb	r3, [r0, #1]
+    22d4:	e5c03002	strb	r3, [r0, #2]
+    22d8:	e5c03003	strb	r3, [r0, #3]
+    22dc:	e4903004	ldr	r3, [r0], #4
+    22e0:	e4803004	str	r3, [r0], #4
+    22e4:	e1500002	cmp	r0, r2
+    22e8:	bafffffc	blt	0x22e0
+    22ec:	e51f0200	ldr	r0, =0x2810	; via 0x20f4
+    22f0:	e3700001	cmn	r0, #1
+    22f4:	1b000077	blne	0x24d8		; _auto_init
+    22f8:	e1a00002	mov	r0, r2
+    22fc:	ea07a162	b	0x1ea88c	; _INC_Initialize
+
+$Init_Target:
+  1d8108:	b530		push	{r4, r5, lr}
+  1d810a:	b081		sub	sp, #4
+  1d810c:	497e		ldr	r1, =0xfffef008	; via 0x1d8308
+  1d810e:	2003		mov	r0, #3
+  1d8110:	0340		lsl	r0, r0, #13
+  1d8112:	8008		strh	r0, [r1, #0]
+; TM_DisableWatchdog() called twice?
+  1d8114:	f00a fb2e	bl	0x1e2774
+  1d8118:	f00a fb2c	bl	0x1e2774
+; code matches C11x version from here
+  1d811c:	487b		ldr	r0, =0xfffffd02	; via 0x1d830c
+  1d811e:	2105		mov	r1, #5
+  1d8120:	8001		strh	r1, [r0, #0]
+  1d8122:	2180		mov	r1, #128	; 0x80
+  1d8124:	8802		ldrh	r2, [r0, #0]
+  1d8126:	4311		orr	r1, r2
+  1d8128:	8001		strh	r1, [r0, #0]
+  1d812a:	4979		ldr	r1, =0xffdf	; via 0x1d8310
+  1d812c:	8802		ldrh	r2, [r0, #0]
+  1d812e:	4011		and	r1, r2
+  1d8130:	8001		strh	r1, [r0, #0]
+  1d8132:	4d78		ldr	r5, =0xfffff900	; via 0x1d8314
+  1d8134:	20ff		mov	r0, #255	; 0xff
+  1d8136:	0200		lsl	r0, r0, #8
+  1d8138:	8028		strh	r0, [r5, #0]
+  1d813a:	4c77		ldr	r4, =0xffff9800	; via 0x1d8318
+  1d813c:	4877		ldr	r0, =0xfff3	; via 0x1d831c
+  1d813e:	8821		ldrh	r1, [r4, #0]
+  1d8140:	4008		and	r0, r1
+  1d8142:	8020		strh	r0, [r4, #0]
+  1d8144:	8820		ldrh	r0, [r4, #0]
+  1d8146:	8020		strh	r0, [r4, #0]
+  1d8148:	4875		ldr	r0, =0xf01f	; via 0x1d8320
+  1d814a:	8821		ldrh	r1, [r4, #0]
+  1d814c:	4008		and	r0, r1
+  1d814e:	8020		strh	r0, [r4, #0]
+  1d8150:	2001		mov	r0, #1
+  1d8152:	0280		lsl	r0, r0, #10
+  1d8154:	8821		ldrh	r1, [r4, #0]
+  1d8156:	4308		orr	r0, r1
+  1d8158:	8020		strh	r0, [r4, #0]
+  1d815a:	2000		mov	r0, #0
+  1d815c:	2102		mov	r1, #2
+  1d815e:	2200		mov	r2, #0
+  1d8160:	f00a fff2	bl	0x1e3148	; $CLKM_InitARMClock
+  1d8164:	486f		ldr	r0, =0xfffffb00	; via 0x1d8324
+  1d8166:	21a3		mov	r1, #163	; 0xa3
+  1d8168:	8001		strh	r1, [r0, #0]
+  1d816a:	8041		strh	r1, [r0, #2]
+  1d816c:	22a5		mov	r2, #165	; 0xa5
+  1d816e:	8082		strh	r2, [r0, #4]
+  1d8170:	80c1		strh	r1, [r0, #6]
+  1d8172:	2180		mov	r1, #128	; 0x80
+  1d8174:	8141		strh	r1, [r0, #10]	; 0xa
+  1d8176:	21c0		mov	r1, #192	; 0xc0
+  1d8178:	8181		strh	r1, [r0, #12]	; 0xc
+  1d817a:	2140		mov	r1, #64	; 0x40
+  1d817c:	8101		strh	r1, [r0, #8]
+  1d817e:	2020		mov	r0, #32	; 0x20
+  1d8180:	8068		strh	r0, [r5, #2]
+  1d8182:	2000		mov	r0, #0
+  1d8184:	80a8		strh	r0, [r5, #4]
+  1d8186:	2010		mov	r0, #16	; 0x10
+  1d8188:	8821		ldrh	r1, [r4, #0]
+  1d818a:	4308		orr	r0, r1
+  1d818c:	8020		strh	r0, [r4, #0]
+  1d818e:	4866		ldr	r0, =0xfffffa08	; via 0x1d8328
+  1d8190:	4966		ldr	r1, =0xffff	; via 0x1d832c
+  1d8192:	8001		strh	r1, [r0, #0]
+  1d8194:	8041		strh	r1, [r0, #2]
+  1d8196:	2103		mov	r1, #3
+  1d8198:	8181		strh	r1, [r0, #12]	; 0xc
+  1d819a:	f009 f92b	bl	0x1e13f4	; $IQ_SetupInterrupts
+  1d819e:	4864		ldr	r0, =0xfffffc00	; via 0x1d8330
+  1d81a0:	2124		mov	r1, #36	; 0x24
+  1d81a2:	8001		strh	r1, [r0, #0]
+  1d81a4:	210d		mov	r1, #13	; 0xd
+  1d81a6:	8041		strh	r1, [r0, #2]
+  1d81a8:	2500		mov	r5, #0
+  1d81aa:	4862		ldr	r0, =0xfffe2016	; via 0x1d8334
+  1d81ac:	8005		strh	r5, [r0, #0]
+  1d81ae:	4962		ldr	r1, =0xfffe2014	; via 0x1d8338
+  1d81b0:	2002		mov	r0, #2
+  1d81b2:	8008		strh	r0, [r1, #0]
+  1d81b4:	4961		ldr	r1, =0xfffe2002	; via 0x1d833c
+  1d81b6:	2084		mov	r0, #132	; 0x84
+  1d81b8:	8008		strh	r0, [r1, #0]
+  1d81ba:	4861		ldr	r0, =0xfffe2000	; via 0x1d8340
+  1d81bc:	4961		ldr	r1, =0x3de0	; via 0x1d8344
+  1d81be:	8001		strh	r1, [r0, #0]
+  1d81c0:	4961		ldr	r1, =0xfffe2022	; via 0x1d8348
+  1d81c2:	220a		mov	r2, #10	; 0xa
+  1d81c4:	800a		strh	r2, [r1, #0]
+  1d81c6:	4961		ldr	r1, =0xfffe2020	; via 0x1d834c
+  1d81c8:	4a61		ldr	r2, =0x45a	; via 0x1d8350
+  1d81ca:	800a		strh	r2, [r1, #0]
+  1d81cc:	4a61		ldr	r2, =0xfffe201e	; via 0x1d8354
+  1d81ce:	21ff		mov	r1, #255	; 0xff
+  1d81d0:	314b		add	r1, #75	; 0x4b
+  1d81d2:	8011		strh	r1, [r2, #0]
+  1d81d4:	4960		ldr	r1, =0xfffe201c	; via 0x1d8358
+  1d81d6:	221f		mov	r2, #31	; 0x1f
+  1d81d8:	800a		strh	r2, [r1, #0]
+  1d81da:	4960		ldr	r1, =0xfffe2024	; via 0x1d835c
+  1d81dc:	800d		strh	r5, [r1, #0]
+  1d81de:	4960		ldr	r1, =0xfffe2010	; via 0x1d8360
+  1d81e0:	2202		mov	r2, #2
+  1d81e2:	880b		ldrh	r3, [r1, #0]
+  1d81e4:	431a		orr	r2, r3
+  1d81e6:	800a		strh	r2, [r1, #0]
+  1d81e8:	4b5d		ldr	r3, =0xfffe2010	; via 0x1d8360
+  1d81ea:	2104		mov	r1, #4
+  1d81ec:	881a		ldrh	r2, [r3, #0]
+  1d81ee:	4311		orr	r1, r2
+  1d81f0:	8019		strh	r1, [r3, #0]
+  1d81f2:	4c5c		ldr	r4, =0xfffef006	; via 0x1d8364
+  1d81f4:	2127		mov	r1, #39	; 0x27
+  1d81f6:	80e1		strh	r1, [r4, #6]
+  1d81f8:	8a01		ldrh	r1, [r0, #16]	; 0x10
+  1d81fa:	0849		lsr	r1, r1, #1
+  1d81fc:	d30f		bcc	0x1d821e
+  1d81fe:	8a01		ldrh	r1, [r0, #16]	; 0x10
+  1d8200:	0409		lsl	r1, r1, #16
+  1d8202:	0c49		lsr	r1, r1, #17
+  1d8204:	0049		lsl	r1, r1, #1
+  1d8206:	8201		strh	r1, [r0, #16]	; 0x10
+  1d8208:	2101		mov	r1, #1
+  1d820a:	e001		b	0x1d8210
+  1d820c:	9900		ldr	r1, [sp, #0]
+  1d820e:	3101		add	r1, #1
+  1d8210:	9100		str	r1, [sp, #0]
+  1d8212:	9900		ldr	r1, [sp, #0]
+  1d8214:	2932		cmp	r1, #50	; 0x32
+  1d8216:	d3f9		bcc	0x1d820c
+  1d8218:	8a41		ldrh	r1, [r0, #18]	; 0x12
+  1d821a:	2900		cmp	r1, #0
+  1d821c:	d0fc		beq	0x1d8218
+  1d821e:	f00a fbd0	bl	0x1e29c2	; $AI_ClockEnable
+  1d8222:	f00a fbd4	bl	0x1e29ce	; $AI_InitIOConfig
+  1d8226:	2027		mov	r0, #39	; 0x27
+  1d8228:	0500		lsl	r0, r0, #20
+  1d822a:	8005		strh	r5, [r0, #0]
+  1d822c:	484e		ldr	r0, =0xffbf	; via 0x1d8368
+  1d822e:	8821		ldrh	r1, [r4, #0]
+  1d8230:	4008		and	r0, r1
+  1d8232:	8020		strh	r0, [r4, #0]
+  1d8234:	2002		mov	r0, #2
+  1d8236:	f00a fb93	bl	0x1e2960	; $AI_SetBit
+  1d823a:	2001		mov	r0, #1
+  1d823c:	0240		lsl	r0, r0, #9
+  1d823e:	88a1		ldrh	r1, [r4, #4]
+  1d8240:	4308		orr	r0, r1
+  1d8242:	80a0		strh	r0, [r4, #4]
+  1d8244:	2020		mov	r0, #32	; 0x20
+  1d8246:	88a1		ldrh	r1, [r4, #4]
+  1d8248:	4308		orr	r0, r1
+  1d824a:	80a0		strh	r0, [r4, #4]
+; new code not in C11x version
+; TSPDI changed to GPIO 4
+  1d824c:	2001		mov	r0, #1
+  1d824e:	88a1		ldrh	r1, [r4, #4]
+  1d8250:	4308		orr	r0, r1
+  1d8252:	80a0		strh	r0, [r4, #4]
+  1d8254:	2004		mov	r0, #4
+  1d8256:	f00a fb91	bl	0x1e297c	; $AI_ConfigBitAsOutput
+  1d825a:	2006		mov	r0, #6
+  1d825c:	f00a fb8e	bl	0x1e297c	; $AI_ConfigBitAsOutput
+  1d8260:	2008		mov	r0, #8
+  1d8262:	f00a fb8b	bl	0x1e297c	; $AI_ConfigBitAsOutput
+  1d8266:	200a		mov	r0, #10	; 0xa
+  1d8268:	f00a fb88	bl	0x1e297c	; $AI_ConfigBitAsOutput
+  1d826c:	200b		mov	r0, #11	; 0xb
+  1d826e:	f00a fb8c	bl	0x1e298a	; $AI_ConfigBitAsInput
+  1d8272:	200c		mov	r0, #12	; 0xc
+  1d8274:	f00a fb82	bl	0x1e297c	; $AI_ConfigBitAsOutput
+  1d8278:	2004		mov	r0, #4
+  1d827a:	f00a fb78	bl	0x1e296e	; $AI_ResetBit
+  1d827e:	2006		mov	r0, #6
+  1d8280:	f00a fb75	bl	0x1e296e	; $AI_ResetBit
+  1d8284:	2008		mov	r0, #8
+  1d8286:	f00a fb72	bl	0x1e296e	; $AI_ResetBit
+  1d828a:	200a		mov	r0, #10	; 0xa
+  1d828c:	f00a fb6f	bl	0x1e296e	; $AI_ResetBit
+  1d8290:	200c		mov	r0, #12	; 0xc
+  1d8292:	f00a fb6c	bl	0x1e296e	; $AI_ResetBit
+; tail end of TI's original code
+  1d8296:	2001		mov	r0, #1
+  1d8298:	f00a fa74	bl	0x1e2784	; $TM_EnableTimer
+  1d829c:	2002		mov	r0, #2
+  1d829e:	f00a fa71	bl	0x1e2784	; $TM_EnableTimer
+  1d82a2:	b001		add	sp, #4
+  1d82a4:	bd30		pop	{r4, r5, pc}
+
+$Init_Drivers:
+  1d82a6:	b500		push	{lr}
+  1d82a8:	f7c6 ff68	bl	0x19f17c
+  1d82ac:	f7c7 fef2	bl	0x1a0094
+  1d82b0:	f77e fcb9	bl	0x156c26
+  1d82b4:	f794 f8e4	bl	0x16c480
+  1d82b8:	f7ec fbfe	bl	0x1c4ab8
+  1d82bc:	f00c f952	bl	0x1e4564
+  1d82c0:	f7c4 fad6	bl	0x19c870
+  1d82c4:	f753 f896	bl	0x12b3f4
+  1d82c8:	bd00		pop	{pc}
+
+$Init_Serial_Flows:
+  1d82ca:	b500		push	{lr}
+  1d82cc:	4827		ldr	r0, =0x83e0dc	; via 0x1d836c
+  1d82ce:	f7c6 fbd3	bl	0x19ea78
+  1d82d2:	2000		mov	r0, #0
+  1d82d4:	2102		mov	r1, #2
+  1d82d6:	2200		mov	r2, #0
+  1d82d8:	f7c6 fc47	bl	0x19eb6a
+  1d82dc:	f7c6 fca1	bl	0x19ec22
+  1d82e0:	bd00		pop	{pc}
+
+$Init_Unmask_IT:
+  1d82e2:	b500		push	{lr}
+  1d82e4:	2004		mov	r0, #4
+  1d82e6:	f009 f8e6	bl	0x1e14b6
+  1d82ea:	2012		mov	r0, #18	; 0x12
+  1d82ec:	f009 f8e3	bl	0x1e14b6
+  1d82f0:	2007		mov	r0, #7
+  1d82f2:	f009 f8e0	bl	0x1e14b6
+  1d82f6:	2008		mov	r0, #8
+  1d82f8:	f009 f8dd	bl	0x1e14b6
+  1d82fc:	bd00		pop	{pc}
+
+$GpUnmaskRTCAlarmInterrupts:
+  1d82fe:	b500		push	{lr}
+  1d8300:	200a		mov	r0, #10	; 0xa
+  1d8302:	f009 f8d8	bl	0x1e14b6
+  1d8306:	bd00		pop	{pc}
+
+$AI_EnableBit:
+  1e2944:	4a4c		ldr	r2, =0xfffef00a	; via 0x1e2a78
+  1e2946:	2101		mov	r1, #1
+  1e2948:	4081		lsl	r1, r0
+  1e294a:	8810		ldrh	r0, [r2, #0]
+  1e294c:	4301		orr	r1, r0
+  1e294e:	8011		strh	r1, [r2, #0]
+  1e2950:	4770		bx	lr
+
+$AI_DisableBit:
+  1e2952:	4a49		ldr	r2, =0xfffef00a	; via 0x1e2a78
+  1e2954:	2101		mov	r1, #1
+  1e2956:	4081		lsl	r1, r0
+  1e2958:	8810		ldrh	r0, [r2, #0]
+  1e295a:	4388		bic	r0, r1
+  1e295c:	8010		strh	r0, [r2, #0]
+  1e295e:	4770		bx	lr
+
+$AI_SetBit:
+  1e2960:	4a46		ldr	r2, =0xfffe4802	; via 0x1e2a7c
+  1e2962:	2101		mov	r1, #1
+  1e2964:	4081		lsl	r1, r0
+  1e2966:	8810		ldrh	r0, [r2, #0]
+  1e2968:	4301		orr	r1, r0
+  1e296a:	8011		strh	r1, [r2, #0]
+  1e296c:	4770		bx	lr
+
+$AI_ResetBit:
+  1e296e:	4a43		ldr	r2, =0xfffe4802	; via 0x1e2a7c
+  1e2970:	2101		mov	r1, #1
+  1e2972:	4081		lsl	r1, r0
+  1e2974:	8810		ldrh	r0, [r2, #0]
+  1e2976:	4388		bic	r0, r1
+  1e2978:	8010		strh	r0, [r2, #0]
+  1e297a:	4770		bx	lr
+
+$AI_ConfigBitAsOutput:
+  1e297c:	4a40		ldr	r2, =0xfffe4804	; via 0x1e2a80
+  1e297e:	2101		mov	r1, #1
+  1e2980:	4081		lsl	r1, r0
+  1e2982:	8810		ldrh	r0, [r2, #0]
+  1e2984:	4388		bic	r0, r1
+  1e2986:	8010		strh	r0, [r2, #0]
+  1e2988:	4770		bx	lr
+
+$AI_ConfigBitAsInput:
+  1e298a:	4a3d		ldr	r2, =0xfffe4804	; via 0x1e2a80
+  1e298c:	2101		mov	r1, #1
+  1e298e:	4081		lsl	r1, r0
+  1e2990:	8810		ldrh	r0, [r2, #0]
+  1e2992:	4301		orr	r1, r0
+  1e2994:	8011		strh	r1, [r2, #0]
+  1e2996:	4770		bx	lr
+
+$AI_ReadBit:
+  1e2998:	493a		ldr	r1, =0xfffe4800	; via 0x1e2a84
+  1e299a:	8809		ldrh	r1, [r1, #0]
+  1e299c:	4101		asr	r1, r0
+  1e299e:	07c8		lsl	r0, r1, #31
+  1e29a0:	0fc0		lsr	r0, r0, #31
+  1e29a2:	0600		lsl	r0, r0, #24
+  1e29a4:	0e00		lsr	r0, r0, #24
+  1e29a6:	4770		bx	lr
+
+$AI_Power:
+  1e29a8:	b500		push	{lr}
+  1e29aa:	2800		cmp	r0, #0
+  1e29ac:	d101		bne	0x1e29b2
+  1e29ae:	f7bc ff23	bl	0x19f7f8
+  1e29b2:	bd00		pop	{pc}
+
+$AI_ResetIoConfig:
+  1e29b4:	4932		ldr	r1, =0xfffe4804	; via 0x1e2a80
+  1e29b6:	4834		ldr	r0, =0xffff	; via 0x1e2a88
+  1e29b8:	8008		strh	r0, [r1, #0]
+  1e29ba:	482f		ldr	r0, =0xfffef00a	; via 0x1e2a78
+  1e29bc:	2100		mov	r1, #0
+  1e29be:	8001		strh	r1, [r0, #0]
+  1e29c0:	4770		bx	lr
+
+$AI_ClockEnable:
+  1e29c2:	4932		ldr	r1, =0xfffe4806	; via 0x1e2a8c
+  1e29c4:	2020		mov	r0, #32	; 0x20
+  1e29c6:	880a		ldrh	r2, [r1, #0]
+  1e29c8:	4310		orr	r0, r2
+  1e29ca:	8008		strh	r0, [r1, #0]
+  1e29cc:	4770		bx	lr
+
+$AI_InitIOConfig:
+  1e29ce:	b500		push	{lr}
+  1e29d0:	f7ff fff0	bl	0x1e29b4	; $AI_ResetIoConfig
+  1e29d4:	2002		mov	r0, #2
+  1e29d6:	f7ff ffb5	bl	0x1e2944	; $AI_EnableBit
+  1e29da:	2003		mov	r0, #3
+  1e29dc:	f7ff ffb2	bl	0x1e2944	; $AI_EnableBit
+  1e29e0:	2004		mov	r0, #4
+  1e29e2:	f7ff ffaf	bl	0x1e2944	; $AI_EnableBit
+  1e29e6:	2005		mov	r0, #5
+  1e29e8:	f7ff ffac	bl	0x1e2944	; $AI_EnableBit
+  1e29ec:	2006		mov	r0, #6
+  1e29ee:	f7ff ffa9	bl	0x1e2944	; $AI_EnableBit
+  1e29f2:	2007		mov	r0, #7
+  1e29f4:	f7ff ffa6	bl	0x1e2944	; $AI_EnableBit
+  1e29f8:	2008		mov	r0, #8
+  1e29fa:	f7ff ffa3	bl	0x1e2944	; $AI_EnableBit
+  1e29fe:	2009		mov	r0, #9
+  1e2a00:	f7ff ffa0	bl	0x1e2944	; $AI_EnableBit
+  1e2a04:	491d		ldr	r1, =0xfffe4802	; via 0x1e2a7c
+  1e2a06:	203f		mov	r0, #63	; 0x3f
+  1e2a08:	0200		lsl	r0, r0, #8
+  1e2a0a:	8008		strh	r0, [r1, #0]
+  1e2a0c:	2001		mov	r0, #1
+  1e2a0e:	f7ff ffb5	bl	0x1e297c	; $AI_ConfigBitAsOutput
+  1e2a12:	2002		mov	r0, #2
+  1e2a14:	f7ff ffb2	bl	0x1e297c	; $AI_ConfigBitAsOutput
+  1e2a18:	2005		mov	r0, #5
+  1e2a1a:	f7ff ffaf	bl	0x1e297c	; $AI_ConfigBitAsOutput
+  1e2a1e:	2007		mov	r0, #7
+  1e2a20:	f7ff ffac	bl	0x1e297c	; $AI_ConfigBitAsOutput
+  1e2a24:	2009		mov	r0, #9
+  1e2a26:	f7ff ffb0	bl	0x1e298a	; $AI_ConfigBitAsInput
+  1e2a2a:	200b		mov	r0, #11	; 0xb
+  1e2a2c:	f7ff ffad	bl	0x1e298a	; $AI_ConfigBitAsInput
+  1e2a30:	200d		mov	r0, #13	; 0xd
+  1e2a32:	f7ff ffaa	bl	0x1e298a	; $AI_ConfigBitAsInput
+  1e2a36:	200e		mov	r0, #14	; 0xe
+  1e2a38:	f7ff ffa0	bl	0x1e297c	; $AI_ConfigBitAsOutput
+  1e2a3c:	200f		mov	r0, #15	; 0xf
+  1e2a3e:	f7ff ff9d	bl	0x1e297c	; $AI_ConfigBitAsOutput
+  1e2a42:	bd00		pop	{pc}
+
+$AI_SelectIOForIT:
+  1e2a44:	0109		lsl	r1, r1, #4
+  1e2a46:	1840		add	r0, r0, r1
+  1e2a48:	0040		lsl	r0, r0, #1
+  1e2a4a:	3001		add	r0, #1
+  1e2a4c:	4910		ldr	r1, =0xfffe4814	; via 0x1e2a90
+  1e2a4e:	8008		strh	r0, [r1, #0]
+  1e2a50:	4770		bx	lr
+
+$AI_CheckITSource:
+  1e2a52:	2100		mov	r1, #0
+  1e2a54:	4a0f		ldr	r2, =0xfffe4816	; via 0x1e2a94
+  1e2a56:	8812		ldrh	r2, [r2, #0]
+  1e2a58:	4210		tst	r0, r2
+  1e2a5a:	d000		beq	0x1e2a5e
+  1e2a5c:	2101		mov	r1, #1
+  1e2a5e:	1c08		add	r0, r1, #0
+  1e2a60:	4770		bx	lr
+
+$AI_UnmaskIT:
+  1e2a62:	4a0d		ldr	r2, =0xfffe4818	; via 0x1e2a98
+  1e2a64:	8811		ldrh	r1, [r2, #0]
+  1e2a66:	4381		bic	r1, r0
+  1e2a68:	8011		strh	r1, [r2, #0]
+  1e2a6a:	4770		bx	lr
+
+$AI_MaskIT:
+  1e2a6c:	4a0a		ldr	r2, =0xfffe4818	; via 0x1e2a98
+  1e2a6e:	8811		ldrh	r1, [r2, #0]
+  1e2a70:	4301		orr	r1, r0
+  1e2a72:	8011		strh	r1, [r2, #0]
+  1e2a74:	4770		bx	lr
+  1e2a76:	46c0		nop			(mov r8, r8)
+
+$INC_Initialize:
+  1e981c:	b510		push	{r4, lr}
+  1e981e:	1c04		add	r4, r0, #0
+  1e9820:	4813		ldr	r0, =0x83e5fc	; via 0x1e9870
+  1e9822:	2101		mov	r1, #1
+  1e9824:	6001		str	r1, [r0, #0]
+  1e9826:	f001 f953	bl	0x1eaad0
+  1e982a:	f001 f955	bl	0x1eaad8
+  1e982e:	f001 f92b	bl	0x1eaa88
+  1e9832:	f000 fc95	bl	0x1ea160
+  1e9836:	f7fa ff43	bl	0x1e46c0
+  1e983a:	f000 fe81	bl	0x1ea540
+  1e983e:	f000 fe4f	bl	0x1ea4e0
+  1e9842:	f000 fe9d	bl	0x1ea580
+  1e9846:	f000 feeb	bl	0x1ea620
+  1e984a:	f000 fe69	bl	0x1ea520
+  1e984e:	f000 fe37	bl	0x1ea4c0
+  1e9852:	f000 fe55	bl	0x1ea500
+  1e9856:	f7fd ffed	bl	0x1e7834
+  1e985a:	f000 fea1	bl	0x1ea5a0
+  1e985e:	1c20		add	r0, r4, #0
+  1e9860:	f000 fd9e	bl	0x1ea3a0	; $Application_Initialize
+  1e9864:	4902		ldr	r1, =0x83e5fc	; via 0x1e9870
+  1e9866:	2002		mov	r0, #2
+  1e9868:	6008		str	r0, [r1, #0]
+  1e986a:	f79b fd41	bl	0x1852f0
+  1e986e:	bd10		pop	{r4, pc}
+
+$Application_Initialize:
+  1ea3a0:	b500		push	{lr}
+  1ea3a2:	f7ed feb1	bl	0x1d8108	; $Init_Target
+  1ea3a6:	f7ed ff7e	bl	0x1d82a6	; $Init_Drivers
+  1ea3aa:	f7c1 f833	bl	0x1ab414
+  1ea3ae:	f72d fe3d	bl	0x11802c
+  1ea3b2:	f7c1 f82f	bl	0x1ab414
+  1ea3b6:	f7ed ff88	bl	0x1d82ca	; $Init_Serial_Flows
+  1ea3ba:	f7a2 ffae	bl	0x18d31a
+  1ea3be:	f7ed ff90	bl	0x1d82e2	; $Init_Unmask_IT
+  1ea3c2:	bd00		pop	{pc}
+
+_INC_Initialize:	; call veneer
+  1ea88c:	e92d4000	stmdb	sp!, {lr}
+  1ea890:	e28fe001	add	lr, pc, #1
+  1ea894:	e12fff1e	bx	lr
+  1ea898:	f7fe ffc0	bl	0x1e981c	; $INC_Initialize
+  1ea89c:	4778		bx	pc
+  1ea89e:	46c0		nop			(mov r8, r8)
+  1ea8a0:	e8bd8000	ldmia	sp!, {pc}