FreeCalypso > hg > freecalypso-reveng
comparison compal/c139-fw-disasm @ 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 | |
| children |
comparison
equal
deleted
inserted
replaced
| 283:f724d574cff3 | 284:1ddfbfe3cec5 |
|---|---|
| 1 ; This disassembly is an analysis of the Mot C139 fw version published in | |
| 2 ; c139-unlocked-fw.zip, seeking to get to the Init_Target() and | |
| 3 ; AI_InitIOConfig() functions. | |
| 4 | |
| 5 0: ea000225 b 0x89c | |
| 6 4: ea000825 b 0x20a0 | |
| 7 8: ea000825 b 0x20a4 | |
| 8 c: ea000825 b 0x20a8 | |
| 9 10: ea000825 b 0x20ac | |
| 10 14: ea000825 b 0x20b0 | |
| 11 18: ea000825 b 0x20b4 | |
| 12 1c: ea000825 b 0x20b8 | |
| 13 | |
| 14 _INT_Bootloader_Start: | |
| 15 ; same as in the Mot C11x version with symbols | |
| 16 89c: e51f1020 ldr r1, =0xfffffd00 ; via 0x884 | |
| 17 8a0: e1d120b2 ldrh r2, [r1, #2] | |
| 18 8a4: e51f002c ldr r0, =0x40 ; via 0x880 | |
| 19 8a8: e1800002 orr r0, r0, r2 | |
| 20 8ac: e1c100b2 strh r0, [r1, #2] | |
| 21 8b0: e51f1030 ldr r1, =0xffff9800 ; via 0x888 | |
| 22 8b4: e15f22b6 ldrh r2, =0x2006 ; via 0x896 | |
| 23 8b8: e1c120b0 strh r2, [r1] | |
| 24 8bc: e5912000 ldr r2, [r1] | |
| 25 8c0: e2022001 and r2, r2, #1 | |
| 26 8c4: e3520001 cmp r2, #1 | |
| 27 8c8: 0afffffb beq 0x8bc | |
| 28 8cc: e51f1050 ldr r1, =0xfffffd00 ; via 0x884 | |
| 29 8d0: e15f24b4 ldrh r2, =0x1081 ; via 0x894 | |
| 30 8d4: e1c120b0 strh r2, [r1] | |
| 31 8d8: e51f1054 ldr r1, =0xfffffb10 ; via 0x88c | |
| 32 8dc: e15f24bc ldrh r2, =0x800 ; via 0x898 | |
| 33 8e0: e1d100b0 ldrh r0, [r1] | |
| 34 8e4: e1800002 orr r0, r0, r2 | |
| 35 8e8: e1c100b0 strh r0, [r1] | |
| 36 8ec: e51f1064 ldr r1, =0xffffff08 ; via 0x890 | |
| 37 8f0: e15f25be ldrh r2, =0x0 ; via 0x89a | |
| 38 8f4: e1c120b0 strh r2, [r1] | |
| 39 8f8: e51f1094 ldr r1, =0xfffffb00 ; via 0x86c | |
| 40 8fc: e15f29b4 ldrh r2, =0x2a1 ; via 0x870 | |
| 41 900: e1c120b0 strh r2, [r1] | |
| 42 904: e15f29ba ldrh r2, =0x2a1 ; via 0x872 | |
| 43 908: e1c120b2 strh r2, [r1, #2] | |
| 44 90c: e15f2ab0 ldrh r2, =0x2a1 ; via 0x874 | |
| 45 910: e1c120b4 strh r2, [r1, #4] | |
| 46 914: e15f2ab6 ldrh r2, =0x283 ; via 0x876 | |
| 47 918: e1c120b6 strh r2, [r1, #6] | |
| 48 91c: e15f2abc ldrh r2, =0x281 ; via 0x878 | |
| 49 920: e1c120ba strh r2, [r1, #10] ; 0xa | |
| 50 924: e15f2bb2 ldrh r2, =0xc0 ; via 0x87a | |
| 51 928: e1c120bc strh r2, [r1, #12] ; 0xc | |
| 52 92c: e15f2bb8 ldrh r2, =0x40 ; via 0x87c | |
| 53 930: e1c120b8 strh r2, [r1, #8] | |
| 54 934: e15f2bbe ldrh r2, =0x2a ; via 0x87e | |
| 55 938: e1c120be strh r2, [r1, #14] ; 0xe | |
| 56 93c: e59f0020 ldr r0, =0x83e600 ; via 0x964 | |
| 57 940: e3a01b01 mov r1, #1024 ; 0x400 | |
| 58 944: e2411004 sub r1, r1, #4 | |
| 59 948: e0802001 add r2, r0, r1 | |
| 60 94c: e3c22003 bic r2, r2, #3 | |
| 61 950: e1a0d002 mov sp, r2 | |
| 62 954: e92d100f stmdb sp!, {r0, r1, r2, r3, r12} | |
| 63 958: eb000534 bl 0x1e30 ; _sta_select_application | |
| 64 95c: e8bd100f ldmia sp!, {r0, r1, r2, r3, r12} | |
| 65 960: ea0005e4 b 0x20f8 ; _INT_Initialize | |
| 66 | |
| 67 _INT_Initialize: | |
| 68 ; same as the C11x version except for bigger XRAM clearing | |
| 69 20f8: e51f1024 ldr r1, =0xffff9800 ; via 0x20dc | |
| 70 20fc: e15f21ba ldrh r2, =0x2002 ; via 0x20ea | |
| 71 2100: e1c120b0 strh r2, [r1] | |
| 72 2104: e5912000 ldr r2, [r1] | |
| 73 2108: e2022001 and r2, r2, #1 | |
| 74 210c: e3520001 cmp r2, #1 | |
| 75 2110: 0afffffb beq 0x2104 | |
| 76 2114: e51f1044 ldr r1, =0xfffffd00 ; via 0x20d8 | |
| 77 2118: e15f23b8 ldrh r2, =0x1081 ; via 0x20e8 | |
| 78 211c: e1c120b0 strh r2, [r1] | |
| 79 2120: e51f1048 ldr r1, =0xfffffb10 ; via 0x20e0 | |
| 80 2124: e15f23be ldrh r2, =0xf7ff ; via 0x20ee | |
| 81 2128: e1d100b0 ldrh r0, [r1] | |
| 82 212c: e0000002 and r0, r0, r2 | |
| 83 2130: e1c100b0 strh r0, [r1] | |
| 84 2134: e51f1058 ldr r1, =0xffffff08 ; via 0x20e4 | |
| 85 2138: e15f25b0 ldrh r2, =0x0 ; via 0x20f0 | |
| 86 213c: e1c120b0 strh r2, [r1] | |
| 87 2140: e51f107c ldr r1, =0xfffffb00 ; via 0x20cc | |
| 88 2144: e15f29b0 ldrh r2, =0x2a1 ; via 0x20bc | |
| 89 2148: e1c120b0 strh r2, [r1] | |
| 90 214c: e15f29b6 ldrh r2, =0x2a1 ; via 0x20be | |
| 91 2150: e1c120b2 strh r2, [r1, #2] | |
| 92 2154: e15f29bc ldrh r2, =0x2a1 ; via 0x20c0 | |
| 93 2158: e1c120b4 strh r2, [r1, #4] | |
| 94 215c: e15f2ab2 ldrh r2, =0x283 ; via 0x20c2 | |
| 95 2160: e1c120b6 strh r2, [r1, #6] | |
| 96 2164: e15f2ab8 ldrh r2, =0xe85 ; via 0x20c4 | |
| 97 2168: e1c120ba strh r2, [r1, #10] ; 0xa | |
| 98 216c: e15f2abe ldrh r2, =0x2c0 ; via 0x20c6 | |
| 99 2170: e1c120bc strh r2, [r1, #12] ; 0xc | |
| 100 2174: e15f2bb4 ldrh r2, =0x40 ; via 0x20c8 | |
| 101 2178: e1c120b8 strh r2, [r1, #8] | |
| 102 217c: e15f2bba ldrh r2, =0x2a ; via 0x20ca | |
| 103 2180: e1c120be strh r2, [r1, #14] ; 0xe | |
| 104 2184: e51f10bc ldr r1, =0xfffef006 ; via 0x20d0 | |
| 105 2188: e1d120b0 ldrh r2, [r1] | |
| 106 218c: e51f00c0 ldr r0, =0x8 ; via 0x20d4 | |
| 107 2190: e1800002 orr r0, r0, r2 | |
| 108 2194: e1c100b0 strh r0, [r1] | |
| 109 2198: e10f0000 mrs r0, CPSR | |
| 110 219c: e3c0001f bic r0, r0, #31 ; 0x1f | |
| 111 21a0: e3800013 orr r0, r0, #19 ; 0x13 | |
| 112 21a4: e38000c0 orr r0, r0, #192 ; 0xc0 | |
| 113 21a8: e129f000 msr CPSR_fc, r0 | |
| 114 21ac: e3a00502 mov r0, #8388608 ; 0x800000 | |
| 115 21b0: e3a02000 mov r2, #0 | |
| 116 21b4: e3a01721 mov r1, #8650752 ; 0x840000 | |
| 117 21b8: e2411080 sub r1, r1, #128 ; 0x80 | |
| 118 21bc: e4802004 str r2, [r0], #4 | |
| 119 21c0: e1500001 cmp r0, r1 | |
| 120 21c4: 1afffffc bne 0x21bc | |
| 121 21c8: e3a00401 mov r0, #16777216 ; 0x1000000 | |
| 122 21cc: e3a02000 mov r2, #0 | |
| 123 21d0: e3a01742 mov r1, #17301504 ; 0x1080000 | |
| 124 21d4: e2411080 sub r1, r1, #128 ; 0x80 | |
| 125 21d8: e4802004 str r2, [r0], #4 | |
| 126 21dc: e1500001 cmp r0, r1 | |
| 127 21e0: 1afffffc bne 0x21d8 | |
| 128 21e4: e3a00001 mov r0, #1 | |
| 129 21e8: e59f12c8 ldr r1, =0x83e574 ; via 0x24b8 | |
| 130 21ec: e5810000 str r0, [r1] | |
| 131 21f0: e59f02bc ldr r0, =0x83e6e8 ; via 0x24b4 | |
| 132 21f4: e3a01b01 mov r1, #1024 ; 0x400 | |
| 133 21f8: e2411004 sub r1, r1, #4 | |
| 134 21fc: e0802001 add r2, r0, r1 | |
| 135 2200: e1a0a000 mov r10, r0 | |
| 136 2204: e59f32b0 ldr r3, =0x813570 ; via 0x24bc | |
| 137 2208: e583a000 str r10, [r3] | |
| 138 220c: e1a0d002 mov sp, r2 | |
| 139 2210: e59f32a8 ldr r3, =0x8130d8 ; via 0x24c0 | |
| 140 2214: e583d000 str sp, [r3] | |
| 141 2218: e3a01080 mov r1, #128 ; 0x80 | |
| 142 221c: e0822001 add r2, r2, r1 | |
| 143 2220: e10f0000 mrs r0, CPSR | |
| 144 2224: e3c0001f bic r0, r0, #31 ; 0x1f | |
| 145 2228: e3800012 orr r0, r0, #18 ; 0x12 | |
| 146 222c: e129f000 msr CPSR_fc, r0 | |
| 147 2230: e1a0d002 mov sp, r2 | |
| 148 2234: e3a01c02 mov r1, #512 ; 0x200 | |
| 149 2238: e0822001 add r2, r2, r1 | |
| 150 223c: e10f0000 mrs r0, CPSR | |
| 151 2240: e3c0001f bic r0, r0, #31 ; 0x1f | |
| 152 2244: e3800011 orr r0, r0, #17 ; 0x11 | |
| 153 2248: e129f000 msr CPSR_fc, r0 | |
| 154 224c: e1a0d002 mov sp, r2 | |
| 155 2250: e10f0000 mrs r0, CPSR | |
| 156 2254: e3c0001f bic r0, r0, #31 ; 0x1f | |
| 157 2258: e3800017 orr r0, r0, #23 ; 0x17 | |
| 158 225c: e129f000 msr CPSR_fc, r0 | |
| 159 2260: e59fd268 ldr sp, =0x83e650 ; via 0x24d0 | |
| 160 2264: e10f0000 mrs r0, CPSR | |
| 161 2268: e3c0001f bic r0, r0, #31 ; 0x1f | |
| 162 226c: e380001b orr r0, r0, #27 ; 0x1b | |
| 163 2270: e129f000 msr CPSR_fc, r0 | |
| 164 2274: e59fd254 ldr sp, =0x83e650 ; via 0x24d0 | |
| 165 2278: e10f0000 mrs r0, CPSR | |
| 166 227c: e3c0001f bic r0, r0, #31 ; 0x1f | |
| 167 2280: e3800013 orr r0, r0, #19 ; 0x13 | |
| 168 2284: e129f000 msr CPSR_fc, r0 | |
| 169 2288: e59f3234 ldr r3, =0x813584 ; via 0x24c4 | |
| 170 228c: e2822004 add r2, r2, #4 | |
| 171 2290: e5832000 str r2, [r3] | |
| 172 2294: e3a01b01 mov r1, #1024 ; 0x400 | |
| 173 2298: e3c11003 bic r1, r1, #3 | |
| 174 229c: e0822001 add r2, r2, r1 | |
| 175 22a0: e59f3220 ldr r3, =0x813608 ; via 0x24c8 | |
| 176 22a4: e5831000 str r1, [r3] | |
| 177 22a8: e3a01002 mov r1, #2 | |
| 178 22ac: e59f3218 ldr r3, =0x813618 ; via 0x24cc | |
| 179 22b0: e5831000 str r1, [r3] | |
| 180 22b4: e1a04002 mov r4, r2 | |
| 181 22b8: eb07a131 bl 0x1ea784 ; _f_load_int_mem | |
| 182 22bc: e1a02004 mov r2, r4 | |
| 183 22c0: e59f11f4 ldr r1, =0x813570 ; via 0x24bc | |
| 184 22c4: e5910000 ldr r0, [r1] | |
| 185 22c8: e3a030fe mov r3, #254 ; 0xfe | |
| 186 22cc: e5c03000 strb r3, [r0] | |
| 187 22d0: e5c03001 strb r3, [r0, #1] | |
| 188 22d4: e5c03002 strb r3, [r0, #2] | |
| 189 22d8: e5c03003 strb r3, [r0, #3] | |
| 190 22dc: e4903004 ldr r3, [r0], #4 | |
| 191 22e0: e4803004 str r3, [r0], #4 | |
| 192 22e4: e1500002 cmp r0, r2 | |
| 193 22e8: bafffffc blt 0x22e0 | |
| 194 22ec: e51f0200 ldr r0, =0x2810 ; via 0x20f4 | |
| 195 22f0: e3700001 cmn r0, #1 | |
| 196 22f4: 1b000077 blne 0x24d8 ; _auto_init | |
| 197 22f8: e1a00002 mov r0, r2 | |
| 198 22fc: ea07a162 b 0x1ea88c ; _INC_Initialize | |
| 199 | |
| 200 $Init_Target: | |
| 201 1d8108: b530 push {r4, r5, lr} | |
| 202 1d810a: b081 sub sp, #4 | |
| 203 1d810c: 497e ldr r1, =0xfffef008 ; via 0x1d8308 | |
| 204 1d810e: 2003 mov r0, #3 | |
| 205 1d8110: 0340 lsl r0, r0, #13 | |
| 206 1d8112: 8008 strh r0, [r1, #0] | |
| 207 ; TM_DisableWatchdog() called twice? | |
| 208 1d8114: f00a fb2e bl 0x1e2774 | |
| 209 1d8118: f00a fb2c bl 0x1e2774 | |
| 210 ; code matches C11x version from here | |
| 211 1d811c: 487b ldr r0, =0xfffffd02 ; via 0x1d830c | |
| 212 1d811e: 2105 mov r1, #5 | |
| 213 1d8120: 8001 strh r1, [r0, #0] | |
| 214 1d8122: 2180 mov r1, #128 ; 0x80 | |
| 215 1d8124: 8802 ldrh r2, [r0, #0] | |
| 216 1d8126: 4311 orr r1, r2 | |
| 217 1d8128: 8001 strh r1, [r0, #0] | |
| 218 1d812a: 4979 ldr r1, =0xffdf ; via 0x1d8310 | |
| 219 1d812c: 8802 ldrh r2, [r0, #0] | |
| 220 1d812e: 4011 and r1, r2 | |
| 221 1d8130: 8001 strh r1, [r0, #0] | |
| 222 1d8132: 4d78 ldr r5, =0xfffff900 ; via 0x1d8314 | |
| 223 1d8134: 20ff mov r0, #255 ; 0xff | |
| 224 1d8136: 0200 lsl r0, r0, #8 | |
| 225 1d8138: 8028 strh r0, [r5, #0] | |
| 226 1d813a: 4c77 ldr r4, =0xffff9800 ; via 0x1d8318 | |
| 227 1d813c: 4877 ldr r0, =0xfff3 ; via 0x1d831c | |
| 228 1d813e: 8821 ldrh r1, [r4, #0] | |
| 229 1d8140: 4008 and r0, r1 | |
| 230 1d8142: 8020 strh r0, [r4, #0] | |
| 231 1d8144: 8820 ldrh r0, [r4, #0] | |
| 232 1d8146: 8020 strh r0, [r4, #0] | |
| 233 1d8148: 4875 ldr r0, =0xf01f ; via 0x1d8320 | |
| 234 1d814a: 8821 ldrh r1, [r4, #0] | |
| 235 1d814c: 4008 and r0, r1 | |
| 236 1d814e: 8020 strh r0, [r4, #0] | |
| 237 1d8150: 2001 mov r0, #1 | |
| 238 1d8152: 0280 lsl r0, r0, #10 | |
| 239 1d8154: 8821 ldrh r1, [r4, #0] | |
| 240 1d8156: 4308 orr r0, r1 | |
| 241 1d8158: 8020 strh r0, [r4, #0] | |
| 242 1d815a: 2000 mov r0, #0 | |
| 243 1d815c: 2102 mov r1, #2 | |
| 244 1d815e: 2200 mov r2, #0 | |
| 245 1d8160: f00a fff2 bl 0x1e3148 ; $CLKM_InitARMClock | |
| 246 1d8164: 486f ldr r0, =0xfffffb00 ; via 0x1d8324 | |
| 247 1d8166: 21a3 mov r1, #163 ; 0xa3 | |
| 248 1d8168: 8001 strh r1, [r0, #0] | |
| 249 1d816a: 8041 strh r1, [r0, #2] | |
| 250 1d816c: 22a5 mov r2, #165 ; 0xa5 | |
| 251 1d816e: 8082 strh r2, [r0, #4] | |
| 252 1d8170: 80c1 strh r1, [r0, #6] | |
| 253 1d8172: 2180 mov r1, #128 ; 0x80 | |
| 254 1d8174: 8141 strh r1, [r0, #10] ; 0xa | |
| 255 1d8176: 21c0 mov r1, #192 ; 0xc0 | |
| 256 1d8178: 8181 strh r1, [r0, #12] ; 0xc | |
| 257 1d817a: 2140 mov r1, #64 ; 0x40 | |
| 258 1d817c: 8101 strh r1, [r0, #8] | |
| 259 1d817e: 2020 mov r0, #32 ; 0x20 | |
| 260 1d8180: 8068 strh r0, [r5, #2] | |
| 261 1d8182: 2000 mov r0, #0 | |
| 262 1d8184: 80a8 strh r0, [r5, #4] | |
| 263 1d8186: 2010 mov r0, #16 ; 0x10 | |
| 264 1d8188: 8821 ldrh r1, [r4, #0] | |
| 265 1d818a: 4308 orr r0, r1 | |
| 266 1d818c: 8020 strh r0, [r4, #0] | |
| 267 1d818e: 4866 ldr r0, =0xfffffa08 ; via 0x1d8328 | |
| 268 1d8190: 4966 ldr r1, =0xffff ; via 0x1d832c | |
| 269 1d8192: 8001 strh r1, [r0, #0] | |
| 270 1d8194: 8041 strh r1, [r0, #2] | |
| 271 1d8196: 2103 mov r1, #3 | |
| 272 1d8198: 8181 strh r1, [r0, #12] ; 0xc | |
| 273 1d819a: f009 f92b bl 0x1e13f4 ; $IQ_SetupInterrupts | |
| 274 1d819e: 4864 ldr r0, =0xfffffc00 ; via 0x1d8330 | |
| 275 1d81a0: 2124 mov r1, #36 ; 0x24 | |
| 276 1d81a2: 8001 strh r1, [r0, #0] | |
| 277 1d81a4: 210d mov r1, #13 ; 0xd | |
| 278 1d81a6: 8041 strh r1, [r0, #2] | |
| 279 1d81a8: 2500 mov r5, #0 | |
| 280 1d81aa: 4862 ldr r0, =0xfffe2016 ; via 0x1d8334 | |
| 281 1d81ac: 8005 strh r5, [r0, #0] | |
| 282 1d81ae: 4962 ldr r1, =0xfffe2014 ; via 0x1d8338 | |
| 283 1d81b0: 2002 mov r0, #2 | |
| 284 1d81b2: 8008 strh r0, [r1, #0] | |
| 285 1d81b4: 4961 ldr r1, =0xfffe2002 ; via 0x1d833c | |
| 286 1d81b6: 2084 mov r0, #132 ; 0x84 | |
| 287 1d81b8: 8008 strh r0, [r1, #0] | |
| 288 1d81ba: 4861 ldr r0, =0xfffe2000 ; via 0x1d8340 | |
| 289 1d81bc: 4961 ldr r1, =0x3de0 ; via 0x1d8344 | |
| 290 1d81be: 8001 strh r1, [r0, #0] | |
| 291 1d81c0: 4961 ldr r1, =0xfffe2022 ; via 0x1d8348 | |
| 292 1d81c2: 220a mov r2, #10 ; 0xa | |
| 293 1d81c4: 800a strh r2, [r1, #0] | |
| 294 1d81c6: 4961 ldr r1, =0xfffe2020 ; via 0x1d834c | |
| 295 1d81c8: 4a61 ldr r2, =0x45a ; via 0x1d8350 | |
| 296 1d81ca: 800a strh r2, [r1, #0] | |
| 297 1d81cc: 4a61 ldr r2, =0xfffe201e ; via 0x1d8354 | |
| 298 1d81ce: 21ff mov r1, #255 ; 0xff | |
| 299 1d81d0: 314b add r1, #75 ; 0x4b | |
| 300 1d81d2: 8011 strh r1, [r2, #0] | |
| 301 1d81d4: 4960 ldr r1, =0xfffe201c ; via 0x1d8358 | |
| 302 1d81d6: 221f mov r2, #31 ; 0x1f | |
| 303 1d81d8: 800a strh r2, [r1, #0] | |
| 304 1d81da: 4960 ldr r1, =0xfffe2024 ; via 0x1d835c | |
| 305 1d81dc: 800d strh r5, [r1, #0] | |
| 306 1d81de: 4960 ldr r1, =0xfffe2010 ; via 0x1d8360 | |
| 307 1d81e0: 2202 mov r2, #2 | |
| 308 1d81e2: 880b ldrh r3, [r1, #0] | |
| 309 1d81e4: 431a orr r2, r3 | |
| 310 1d81e6: 800a strh r2, [r1, #0] | |
| 311 1d81e8: 4b5d ldr r3, =0xfffe2010 ; via 0x1d8360 | |
| 312 1d81ea: 2104 mov r1, #4 | |
| 313 1d81ec: 881a ldrh r2, [r3, #0] | |
| 314 1d81ee: 4311 orr r1, r2 | |
| 315 1d81f0: 8019 strh r1, [r3, #0] | |
| 316 1d81f2: 4c5c ldr r4, =0xfffef006 ; via 0x1d8364 | |
| 317 1d81f4: 2127 mov r1, #39 ; 0x27 | |
| 318 1d81f6: 80e1 strh r1, [r4, #6] | |
| 319 1d81f8: 8a01 ldrh r1, [r0, #16] ; 0x10 | |
| 320 1d81fa: 0849 lsr r1, r1, #1 | |
| 321 1d81fc: d30f bcc 0x1d821e | |
| 322 1d81fe: 8a01 ldrh r1, [r0, #16] ; 0x10 | |
| 323 1d8200: 0409 lsl r1, r1, #16 | |
| 324 1d8202: 0c49 lsr r1, r1, #17 | |
| 325 1d8204: 0049 lsl r1, r1, #1 | |
| 326 1d8206: 8201 strh r1, [r0, #16] ; 0x10 | |
| 327 1d8208: 2101 mov r1, #1 | |
| 328 1d820a: e001 b 0x1d8210 | |
| 329 1d820c: 9900 ldr r1, [sp, #0] | |
| 330 1d820e: 3101 add r1, #1 | |
| 331 1d8210: 9100 str r1, [sp, #0] | |
| 332 1d8212: 9900 ldr r1, [sp, #0] | |
| 333 1d8214: 2932 cmp r1, #50 ; 0x32 | |
| 334 1d8216: d3f9 bcc 0x1d820c | |
| 335 1d8218: 8a41 ldrh r1, [r0, #18] ; 0x12 | |
| 336 1d821a: 2900 cmp r1, #0 | |
| 337 1d821c: d0fc beq 0x1d8218 | |
| 338 1d821e: f00a fbd0 bl 0x1e29c2 ; $AI_ClockEnable | |
| 339 1d8222: f00a fbd4 bl 0x1e29ce ; $AI_InitIOConfig | |
| 340 1d8226: 2027 mov r0, #39 ; 0x27 | |
| 341 1d8228: 0500 lsl r0, r0, #20 | |
| 342 1d822a: 8005 strh r5, [r0, #0] | |
| 343 1d822c: 484e ldr r0, =0xffbf ; via 0x1d8368 | |
| 344 1d822e: 8821 ldrh r1, [r4, #0] | |
| 345 1d8230: 4008 and r0, r1 | |
| 346 1d8232: 8020 strh r0, [r4, #0] | |
| 347 1d8234: 2002 mov r0, #2 | |
| 348 1d8236: f00a fb93 bl 0x1e2960 ; $AI_SetBit | |
| 349 1d823a: 2001 mov r0, #1 | |
| 350 1d823c: 0240 lsl r0, r0, #9 | |
| 351 1d823e: 88a1 ldrh r1, [r4, #4] | |
| 352 1d8240: 4308 orr r0, r1 | |
| 353 1d8242: 80a0 strh r0, [r4, #4] | |
| 354 1d8244: 2020 mov r0, #32 ; 0x20 | |
| 355 1d8246: 88a1 ldrh r1, [r4, #4] | |
| 356 1d8248: 4308 orr r0, r1 | |
| 357 1d824a: 80a0 strh r0, [r4, #4] | |
| 358 ; new code not in C11x version | |
| 359 ; TSPDI changed to GPIO 4 | |
| 360 1d824c: 2001 mov r0, #1 | |
| 361 1d824e: 88a1 ldrh r1, [r4, #4] | |
| 362 1d8250: 4308 orr r0, r1 | |
| 363 1d8252: 80a0 strh r0, [r4, #4] | |
| 364 1d8254: 2004 mov r0, #4 | |
| 365 1d8256: f00a fb91 bl 0x1e297c ; $AI_ConfigBitAsOutput | |
| 366 1d825a: 2006 mov r0, #6 | |
| 367 1d825c: f00a fb8e bl 0x1e297c ; $AI_ConfigBitAsOutput | |
| 368 1d8260: 2008 mov r0, #8 | |
| 369 1d8262: f00a fb8b bl 0x1e297c ; $AI_ConfigBitAsOutput | |
| 370 1d8266: 200a mov r0, #10 ; 0xa | |
| 371 1d8268: f00a fb88 bl 0x1e297c ; $AI_ConfigBitAsOutput | |
| 372 1d826c: 200b mov r0, #11 ; 0xb | |
| 373 1d826e: f00a fb8c bl 0x1e298a ; $AI_ConfigBitAsInput | |
| 374 1d8272: 200c mov r0, #12 ; 0xc | |
| 375 1d8274: f00a fb82 bl 0x1e297c ; $AI_ConfigBitAsOutput | |
| 376 1d8278: 2004 mov r0, #4 | |
| 377 1d827a: f00a fb78 bl 0x1e296e ; $AI_ResetBit | |
| 378 1d827e: 2006 mov r0, #6 | |
| 379 1d8280: f00a fb75 bl 0x1e296e ; $AI_ResetBit | |
| 380 1d8284: 2008 mov r0, #8 | |
| 381 1d8286: f00a fb72 bl 0x1e296e ; $AI_ResetBit | |
| 382 1d828a: 200a mov r0, #10 ; 0xa | |
| 383 1d828c: f00a fb6f bl 0x1e296e ; $AI_ResetBit | |
| 384 1d8290: 200c mov r0, #12 ; 0xc | |
| 385 1d8292: f00a fb6c bl 0x1e296e ; $AI_ResetBit | |
| 386 ; tail end of TI's original code | |
| 387 1d8296: 2001 mov r0, #1 | |
| 388 1d8298: f00a fa74 bl 0x1e2784 ; $TM_EnableTimer | |
| 389 1d829c: 2002 mov r0, #2 | |
| 390 1d829e: f00a fa71 bl 0x1e2784 ; $TM_EnableTimer | |
| 391 1d82a2: b001 add sp, #4 | |
| 392 1d82a4: bd30 pop {r4, r5, pc} | |
| 393 | |
| 394 $Init_Drivers: | |
| 395 1d82a6: b500 push {lr} | |
| 396 1d82a8: f7c6 ff68 bl 0x19f17c | |
| 397 1d82ac: f7c7 fef2 bl 0x1a0094 | |
| 398 1d82b0: f77e fcb9 bl 0x156c26 | |
| 399 1d82b4: f794 f8e4 bl 0x16c480 | |
| 400 1d82b8: f7ec fbfe bl 0x1c4ab8 | |
| 401 1d82bc: f00c f952 bl 0x1e4564 | |
| 402 1d82c0: f7c4 fad6 bl 0x19c870 | |
| 403 1d82c4: f753 f896 bl 0x12b3f4 | |
| 404 1d82c8: bd00 pop {pc} | |
| 405 | |
| 406 $Init_Serial_Flows: | |
| 407 1d82ca: b500 push {lr} | |
| 408 1d82cc: 4827 ldr r0, =0x83e0dc ; via 0x1d836c | |
| 409 1d82ce: f7c6 fbd3 bl 0x19ea78 | |
| 410 1d82d2: 2000 mov r0, #0 | |
| 411 1d82d4: 2102 mov r1, #2 | |
| 412 1d82d6: 2200 mov r2, #0 | |
| 413 1d82d8: f7c6 fc47 bl 0x19eb6a | |
| 414 1d82dc: f7c6 fca1 bl 0x19ec22 | |
| 415 1d82e0: bd00 pop {pc} | |
| 416 | |
| 417 $Init_Unmask_IT: | |
| 418 1d82e2: b500 push {lr} | |
| 419 1d82e4: 2004 mov r0, #4 | |
| 420 1d82e6: f009 f8e6 bl 0x1e14b6 | |
| 421 1d82ea: 2012 mov r0, #18 ; 0x12 | |
| 422 1d82ec: f009 f8e3 bl 0x1e14b6 | |
| 423 1d82f0: 2007 mov r0, #7 | |
| 424 1d82f2: f009 f8e0 bl 0x1e14b6 | |
| 425 1d82f6: 2008 mov r0, #8 | |
| 426 1d82f8: f009 f8dd bl 0x1e14b6 | |
| 427 1d82fc: bd00 pop {pc} | |
| 428 | |
| 429 $GpUnmaskRTCAlarmInterrupts: | |
| 430 1d82fe: b500 push {lr} | |
| 431 1d8300: 200a mov r0, #10 ; 0xa | |
| 432 1d8302: f009 f8d8 bl 0x1e14b6 | |
| 433 1d8306: bd00 pop {pc} | |
| 434 | |
| 435 $AI_EnableBit: | |
| 436 1e2944: 4a4c ldr r2, =0xfffef00a ; via 0x1e2a78 | |
| 437 1e2946: 2101 mov r1, #1 | |
| 438 1e2948: 4081 lsl r1, r0 | |
| 439 1e294a: 8810 ldrh r0, [r2, #0] | |
| 440 1e294c: 4301 orr r1, r0 | |
| 441 1e294e: 8011 strh r1, [r2, #0] | |
| 442 1e2950: 4770 bx lr | |
| 443 | |
| 444 $AI_DisableBit: | |
| 445 1e2952: 4a49 ldr r2, =0xfffef00a ; via 0x1e2a78 | |
| 446 1e2954: 2101 mov r1, #1 | |
| 447 1e2956: 4081 lsl r1, r0 | |
| 448 1e2958: 8810 ldrh r0, [r2, #0] | |
| 449 1e295a: 4388 bic r0, r1 | |
| 450 1e295c: 8010 strh r0, [r2, #0] | |
| 451 1e295e: 4770 bx lr | |
| 452 | |
| 453 $AI_SetBit: | |
| 454 1e2960: 4a46 ldr r2, =0xfffe4802 ; via 0x1e2a7c | |
| 455 1e2962: 2101 mov r1, #1 | |
| 456 1e2964: 4081 lsl r1, r0 | |
| 457 1e2966: 8810 ldrh r0, [r2, #0] | |
| 458 1e2968: 4301 orr r1, r0 | |
| 459 1e296a: 8011 strh r1, [r2, #0] | |
| 460 1e296c: 4770 bx lr | |
| 461 | |
| 462 $AI_ResetBit: | |
| 463 1e296e: 4a43 ldr r2, =0xfffe4802 ; via 0x1e2a7c | |
| 464 1e2970: 2101 mov r1, #1 | |
| 465 1e2972: 4081 lsl r1, r0 | |
| 466 1e2974: 8810 ldrh r0, [r2, #0] | |
| 467 1e2976: 4388 bic r0, r1 | |
| 468 1e2978: 8010 strh r0, [r2, #0] | |
| 469 1e297a: 4770 bx lr | |
| 470 | |
| 471 $AI_ConfigBitAsOutput: | |
| 472 1e297c: 4a40 ldr r2, =0xfffe4804 ; via 0x1e2a80 | |
| 473 1e297e: 2101 mov r1, #1 | |
| 474 1e2980: 4081 lsl r1, r0 | |
| 475 1e2982: 8810 ldrh r0, [r2, #0] | |
| 476 1e2984: 4388 bic r0, r1 | |
| 477 1e2986: 8010 strh r0, [r2, #0] | |
| 478 1e2988: 4770 bx lr | |
| 479 | |
| 480 $AI_ConfigBitAsInput: | |
| 481 1e298a: 4a3d ldr r2, =0xfffe4804 ; via 0x1e2a80 | |
| 482 1e298c: 2101 mov r1, #1 | |
| 483 1e298e: 4081 lsl r1, r0 | |
| 484 1e2990: 8810 ldrh r0, [r2, #0] | |
| 485 1e2992: 4301 orr r1, r0 | |
| 486 1e2994: 8011 strh r1, [r2, #0] | |
| 487 1e2996: 4770 bx lr | |
| 488 | |
| 489 $AI_ReadBit: | |
| 490 1e2998: 493a ldr r1, =0xfffe4800 ; via 0x1e2a84 | |
| 491 1e299a: 8809 ldrh r1, [r1, #0] | |
| 492 1e299c: 4101 asr r1, r0 | |
| 493 1e299e: 07c8 lsl r0, r1, #31 | |
| 494 1e29a0: 0fc0 lsr r0, r0, #31 | |
| 495 1e29a2: 0600 lsl r0, r0, #24 | |
| 496 1e29a4: 0e00 lsr r0, r0, #24 | |
| 497 1e29a6: 4770 bx lr | |
| 498 | |
| 499 $AI_Power: | |
| 500 1e29a8: b500 push {lr} | |
| 501 1e29aa: 2800 cmp r0, #0 | |
| 502 1e29ac: d101 bne 0x1e29b2 | |
| 503 1e29ae: f7bc ff23 bl 0x19f7f8 | |
| 504 1e29b2: bd00 pop {pc} | |
| 505 | |
| 506 $AI_ResetIoConfig: | |
| 507 1e29b4: 4932 ldr r1, =0xfffe4804 ; via 0x1e2a80 | |
| 508 1e29b6: 4834 ldr r0, =0xffff ; via 0x1e2a88 | |
| 509 1e29b8: 8008 strh r0, [r1, #0] | |
| 510 1e29ba: 482f ldr r0, =0xfffef00a ; via 0x1e2a78 | |
| 511 1e29bc: 2100 mov r1, #0 | |
| 512 1e29be: 8001 strh r1, [r0, #0] | |
| 513 1e29c0: 4770 bx lr | |
| 514 | |
| 515 $AI_ClockEnable: | |
| 516 1e29c2: 4932 ldr r1, =0xfffe4806 ; via 0x1e2a8c | |
| 517 1e29c4: 2020 mov r0, #32 ; 0x20 | |
| 518 1e29c6: 880a ldrh r2, [r1, #0] | |
| 519 1e29c8: 4310 orr r0, r2 | |
| 520 1e29ca: 8008 strh r0, [r1, #0] | |
| 521 1e29cc: 4770 bx lr | |
| 522 | |
| 523 $AI_InitIOConfig: | |
| 524 1e29ce: b500 push {lr} | |
| 525 1e29d0: f7ff fff0 bl 0x1e29b4 ; $AI_ResetIoConfig | |
| 526 1e29d4: 2002 mov r0, #2 | |
| 527 1e29d6: f7ff ffb5 bl 0x1e2944 ; $AI_EnableBit | |
| 528 1e29da: 2003 mov r0, #3 | |
| 529 1e29dc: f7ff ffb2 bl 0x1e2944 ; $AI_EnableBit | |
| 530 1e29e0: 2004 mov r0, #4 | |
| 531 1e29e2: f7ff ffaf bl 0x1e2944 ; $AI_EnableBit | |
| 532 1e29e6: 2005 mov r0, #5 | |
| 533 1e29e8: f7ff ffac bl 0x1e2944 ; $AI_EnableBit | |
| 534 1e29ec: 2006 mov r0, #6 | |
| 535 1e29ee: f7ff ffa9 bl 0x1e2944 ; $AI_EnableBit | |
| 536 1e29f2: 2007 mov r0, #7 | |
| 537 1e29f4: f7ff ffa6 bl 0x1e2944 ; $AI_EnableBit | |
| 538 1e29f8: 2008 mov r0, #8 | |
| 539 1e29fa: f7ff ffa3 bl 0x1e2944 ; $AI_EnableBit | |
| 540 1e29fe: 2009 mov r0, #9 | |
| 541 1e2a00: f7ff ffa0 bl 0x1e2944 ; $AI_EnableBit | |
| 542 1e2a04: 491d ldr r1, =0xfffe4802 ; via 0x1e2a7c | |
| 543 1e2a06: 203f mov r0, #63 ; 0x3f | |
| 544 1e2a08: 0200 lsl r0, r0, #8 | |
| 545 1e2a0a: 8008 strh r0, [r1, #0] | |
| 546 1e2a0c: 2001 mov r0, #1 | |
| 547 1e2a0e: f7ff ffb5 bl 0x1e297c ; $AI_ConfigBitAsOutput | |
| 548 1e2a12: 2002 mov r0, #2 | |
| 549 1e2a14: f7ff ffb2 bl 0x1e297c ; $AI_ConfigBitAsOutput | |
| 550 1e2a18: 2005 mov r0, #5 | |
| 551 1e2a1a: f7ff ffaf bl 0x1e297c ; $AI_ConfigBitAsOutput | |
| 552 1e2a1e: 2007 mov r0, #7 | |
| 553 1e2a20: f7ff ffac bl 0x1e297c ; $AI_ConfigBitAsOutput | |
| 554 1e2a24: 2009 mov r0, #9 | |
| 555 1e2a26: f7ff ffb0 bl 0x1e298a ; $AI_ConfigBitAsInput | |
| 556 1e2a2a: 200b mov r0, #11 ; 0xb | |
| 557 1e2a2c: f7ff ffad bl 0x1e298a ; $AI_ConfigBitAsInput | |
| 558 1e2a30: 200d mov r0, #13 ; 0xd | |
| 559 1e2a32: f7ff ffaa bl 0x1e298a ; $AI_ConfigBitAsInput | |
| 560 1e2a36: 200e mov r0, #14 ; 0xe | |
| 561 1e2a38: f7ff ffa0 bl 0x1e297c ; $AI_ConfigBitAsOutput | |
| 562 1e2a3c: 200f mov r0, #15 ; 0xf | |
| 563 1e2a3e: f7ff ff9d bl 0x1e297c ; $AI_ConfigBitAsOutput | |
| 564 1e2a42: bd00 pop {pc} | |
| 565 | |
| 566 $AI_SelectIOForIT: | |
| 567 1e2a44: 0109 lsl r1, r1, #4 | |
| 568 1e2a46: 1840 add r0, r0, r1 | |
| 569 1e2a48: 0040 lsl r0, r0, #1 | |
| 570 1e2a4a: 3001 add r0, #1 | |
| 571 1e2a4c: 4910 ldr r1, =0xfffe4814 ; via 0x1e2a90 | |
| 572 1e2a4e: 8008 strh r0, [r1, #0] | |
| 573 1e2a50: 4770 bx lr | |
| 574 | |
| 575 $AI_CheckITSource: | |
| 576 1e2a52: 2100 mov r1, #0 | |
| 577 1e2a54: 4a0f ldr r2, =0xfffe4816 ; via 0x1e2a94 | |
| 578 1e2a56: 8812 ldrh r2, [r2, #0] | |
| 579 1e2a58: 4210 tst r0, r2 | |
| 580 1e2a5a: d000 beq 0x1e2a5e | |
| 581 1e2a5c: 2101 mov r1, #1 | |
| 582 1e2a5e: 1c08 add r0, r1, #0 | |
| 583 1e2a60: 4770 bx lr | |
| 584 | |
| 585 $AI_UnmaskIT: | |
| 586 1e2a62: 4a0d ldr r2, =0xfffe4818 ; via 0x1e2a98 | |
| 587 1e2a64: 8811 ldrh r1, [r2, #0] | |
| 588 1e2a66: 4381 bic r1, r0 | |
| 589 1e2a68: 8011 strh r1, [r2, #0] | |
| 590 1e2a6a: 4770 bx lr | |
| 591 | |
| 592 $AI_MaskIT: | |
| 593 1e2a6c: 4a0a ldr r2, =0xfffe4818 ; via 0x1e2a98 | |
| 594 1e2a6e: 8811 ldrh r1, [r2, #0] | |
| 595 1e2a70: 4301 orr r1, r0 | |
| 596 1e2a72: 8011 strh r1, [r2, #0] | |
| 597 1e2a74: 4770 bx lr | |
| 598 1e2a76: 46c0 nop (mov r8, r8) | |
| 599 | |
| 600 $INC_Initialize: | |
| 601 1e981c: b510 push {r4, lr} | |
| 602 1e981e: 1c04 add r4, r0, #0 | |
| 603 1e9820: 4813 ldr r0, =0x83e5fc ; via 0x1e9870 | |
| 604 1e9822: 2101 mov r1, #1 | |
| 605 1e9824: 6001 str r1, [r0, #0] | |
| 606 1e9826: f001 f953 bl 0x1eaad0 | |
| 607 1e982a: f001 f955 bl 0x1eaad8 | |
| 608 1e982e: f001 f92b bl 0x1eaa88 | |
| 609 1e9832: f000 fc95 bl 0x1ea160 | |
| 610 1e9836: f7fa ff43 bl 0x1e46c0 | |
| 611 1e983a: f000 fe81 bl 0x1ea540 | |
| 612 1e983e: f000 fe4f bl 0x1ea4e0 | |
| 613 1e9842: f000 fe9d bl 0x1ea580 | |
| 614 1e9846: f000 feeb bl 0x1ea620 | |
| 615 1e984a: f000 fe69 bl 0x1ea520 | |
| 616 1e984e: f000 fe37 bl 0x1ea4c0 | |
| 617 1e9852: f000 fe55 bl 0x1ea500 | |
| 618 1e9856: f7fd ffed bl 0x1e7834 | |
| 619 1e985a: f000 fea1 bl 0x1ea5a0 | |
| 620 1e985e: 1c20 add r0, r4, #0 | |
| 621 1e9860: f000 fd9e bl 0x1ea3a0 ; $Application_Initialize | |
| 622 1e9864: 4902 ldr r1, =0x83e5fc ; via 0x1e9870 | |
| 623 1e9866: 2002 mov r0, #2 | |
| 624 1e9868: 6008 str r0, [r1, #0] | |
| 625 1e986a: f79b fd41 bl 0x1852f0 | |
| 626 1e986e: bd10 pop {r4, pc} | |
| 627 | |
| 628 $Application_Initialize: | |
| 629 1ea3a0: b500 push {lr} | |
| 630 1ea3a2: f7ed feb1 bl 0x1d8108 ; $Init_Target | |
| 631 1ea3a6: f7ed ff7e bl 0x1d82a6 ; $Init_Drivers | |
| 632 1ea3aa: f7c1 f833 bl 0x1ab414 | |
| 633 1ea3ae: f72d fe3d bl 0x11802c | |
| 634 1ea3b2: f7c1 f82f bl 0x1ab414 | |
| 635 1ea3b6: f7ed ff88 bl 0x1d82ca ; $Init_Serial_Flows | |
| 636 1ea3ba: f7a2 ffae bl 0x18d31a | |
| 637 1ea3be: f7ed ff90 bl 0x1d82e2 ; $Init_Unmask_IT | |
| 638 1ea3c2: bd00 pop {pc} | |
| 639 | |
| 640 _INC_Initialize: ; call veneer | |
| 641 1ea88c: e92d4000 stmdb sp!, {lr} | |
| 642 1ea890: e28fe001 add lr, pc, #1 | |
| 643 1ea894: e12fff1e bx lr | |
| 644 1ea898: f7fe ffc0 bl 0x1e981c ; $INC_Initialize | |
| 645 1ea89c: 4778 bx pc | |
| 646 1ea89e: 46c0 nop (mov r8, r8) | |
| 647 1ea8a0: e8bd8000 ldmia sp!, {pc} |
