Mercurial > repos > blastem
comparison dis.c @ 2105:1bda10d60b29
Add some enhancements for disassembling Main CPU Sega CD code
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 12 Feb 2022 14:50:40 -0800 |
parents | f3fb7e2c727a |
children | f1238ffb30a3 |
comparison
equal
deleted
inserted
replaced
2104:ff32a90260c9 | 2105:1bda10d60b29 |
---|---|
157 | 157 |
158 uint8_t labels = 0, addr = 0, only = 0, vos = 0, reset = 0; | 158 uint8_t labels = 0, addr = 0, only = 0, vos = 0, reset = 0; |
159 tern_node * named_labels = NULL; | 159 tern_node * named_labels = NULL; |
160 | 160 |
161 uint32_t address_off = 0, address_end; | 161 uint32_t address_off = 0, address_end; |
162 uint8_t do_cd_labels = 0; | 162 uint8_t do_cd_labels = 0, main_cpu = 0; |
163 for(uint8_t opt = 2; opt < argc; ++opt) { | 163 for(uint8_t opt = 2; opt < argc; ++opt) { |
164 if (argv[opt][0] == '-') { | 164 if (argv[opt][0] == '-') { |
165 FILE * address_log; | 165 FILE * address_log; |
166 switch (argv[opt][1]) | 166 switch (argv[opt][1]) |
167 { | 167 { |
180 case 'r': | 180 case 'r': |
181 reset = 1; | 181 reset = 1; |
182 break; | 182 break; |
183 case 'c': | 183 case 'c': |
184 do_cd_labels = 1; | 184 do_cd_labels = 1; |
185 break; | |
186 case 'm': | |
187 main_cpu = 1; | |
185 break; | 188 break; |
186 case 's': | 189 case 's': |
187 opt++; | 190 opt++; |
188 if (opt >= argc) { | 191 if (opt >= argc) { |
189 fputs("-s must be followed by an offset\n", stderr); | 192 fputs("-s must be followed by an offset\n", stderr); |
232 filesize = ftell(f); | 235 filesize = ftell(f); |
233 fseek(f, 0, SEEK_SET); | 236 fseek(f, 0, SEEK_SET); |
234 | 237 |
235 char int_key[MAX_INT_KEY_SIZE]; | 238 char int_key[MAX_INT_KEY_SIZE]; |
236 uint8_t is_scd_iso = 0; | 239 uint8_t is_scd_iso = 0; |
240 uint8_t has_manual_defs = !!def; | |
237 if (vos) | 241 if (vos) |
238 { | 242 { |
239 vos_program_module header; | 243 vos_program_module header; |
240 vos_read_header(f, &header); | 244 vos_read_header(f, &header); |
241 vos_read_alloc_module_map(f, &header); | 245 vos_read_alloc_module_map(f, &header); |
286 memmove(filebuf + dst_offset/2, filebuf + offset/2, 2048); | 290 memmove(filebuf + dst_offset/2, filebuf + offset/2, 2048); |
287 } | 291 } |
288 boot_size = (end / 2352) * 2048; | 292 boot_size = (end / 2352) * 2048; |
289 } | 293 } |
290 if (is_scd_iso) { | 294 if (is_scd_iso) { |
295 fclose(f); | |
291 for(cur = filebuf; cur - filebuf < (boot_size/2); ++cur) | 296 for(cur = filebuf; cur - filebuf < (boot_size/2); ++cur) |
292 { | 297 { |
293 *cur = (*cur >> 8) | (*cur << 8); | 298 *cur = (*cur >> 8) | (*cur << 8); |
294 } | 299 } |
295 uint32_t sub_start =filebuf[0x40/2] << 16 | filebuf[0x42/2]; | 300 if (main_cpu) { |
296 uint32_t sub_end =filebuf[0x44/2] << 16 | filebuf[0x46/2]; | 301 uint32_t main_start = 0x200; |
297 if (sub_start > (boot_size - 0x20)) { | 302 uint32_t extra_start = filebuf[0x30/2] << 16 | filebuf[0x32/2]; |
298 fprintf(stderr, "System Program start offset is %X, but image is only %X bytes\n", sub_start, (uint32_t)boot_size); | 303 uint32_t main_end = (filebuf[0x34/2] << 16 | filebuf[0x36/2]) + extra_start; |
299 return 1; | 304 if (main_end > boot_size) { |
300 } | 305 main_end = boot_size; |
301 if (sub_end > boot_size) { | 306 } |
302 sub_end = boot_size; | 307 address_off = 0xFF0000; |
303 } | 308 address_end = address_off + main_end-main_start; |
304 uint32_t offset_start = (filebuf[(sub_start + 0x18)/2] << 16 | filebuf[(sub_start + 0x1A)/2]) + sub_start; | 309 filebuf += main_start / 2; |
305 uint8_t has_manual_defs = !!def; | 310 named_labels = add_label(named_labels, "start", 0xFF0000); |
306 for(uint32_t cur = offset_start, index = 0; cur < sub_end && filebuf[cur/2]; cur+=2, ++index) | |
307 { | |
308 uint32_t offset = offset_start + filebuf[cur/2]; | |
309 if (offset >= boot_size) { | |
310 break; | |
311 } | |
312 static const char* fixed_names[3] = { | |
313 "init", | |
314 "main", | |
315 "int_2" | |
316 }; | |
317 char namebuf[32]; | |
318 const char *name; | |
319 if (index < 3) { | |
320 name = fixed_names[index]; | |
321 } else { | |
322 name = namebuf; | |
323 sprintf(namebuf, "usercall%u", index); | |
324 } | |
325 uint32_t address = 0x6000 + offset - sub_start; | |
326 named_labels = add_label(named_labels, name, address); | |
327 if (!has_manual_defs || !only) { | 311 if (!has_manual_defs || !only) { |
328 def = defer(address, def); | 312 def = defer(0xFF0000, def); |
329 } | 313 } |
330 } | 314 //TODO: other regions |
331 fclose(f); | 315 named_labels = add_label(named_labels, "user_start", 0xFF0584); |
332 do_cd_labels = 1; | 316 do_cd_labels = 1; |
333 filebuf += sub_start / 2; | 317 } else { |
334 address_off = 0x6000; | 318 uint32_t sub_start =filebuf[0x40/2] << 16 | filebuf[0x42/2]; |
335 address_end = sub_end-sub_start + address_off; | 319 uint32_t sub_end =filebuf[0x44/2] << 16 | filebuf[0x46/2]; |
320 if (sub_start > (boot_size - 0x20)) { | |
321 fprintf(stderr, "System Program start offset is %X, but image is only %X bytes\n", sub_start, (uint32_t)boot_size); | |
322 return 1; | |
323 } | |
324 if (sub_end > boot_size) { | |
325 sub_end = boot_size; | |
326 } | |
327 uint32_t offset_start = (filebuf[(sub_start + 0x18)/2] << 16 | filebuf[(sub_start + 0x1A)/2]) + sub_start; | |
328 for(uint32_t cur = offset_start, index = 0; cur < sub_end && filebuf[cur/2]; cur+=2, ++index) | |
329 { | |
330 uint32_t offset = offset_start + filebuf[cur/2]; | |
331 if (offset >= boot_size) { | |
332 break; | |
333 } | |
334 static const char* fixed_names[3] = { | |
335 "init", | |
336 "main", | |
337 "int_2" | |
338 }; | |
339 char namebuf[32]; | |
340 const char *name; | |
341 if (index < 3) { | |
342 name = fixed_names[index]; | |
343 } else { | |
344 name = namebuf; | |
345 sprintf(namebuf, "usercall%u", index); | |
346 } | |
347 uint32_t address = 0x6000 + offset - sub_start; | |
348 named_labels = add_label(named_labels, name, address); | |
349 if (!has_manual_defs || !only) { | |
350 def = defer(address, def); | |
351 } | |
352 } | |
353 | |
354 do_cd_labels = 1; | |
355 filebuf += sub_start / 2; | |
356 address_off = 0x6000; | |
357 address_end = sub_end-sub_start + address_off; | |
358 } | |
336 } | 359 } |
337 } | 360 } |
338 if (!vos && !is_scd_iso) { | 361 if (!vos && !is_scd_iso) { |
339 if (filebuf) { | 362 if (filebuf) { |
340 if (filesize > (32*1024)) { | 363 if (filesize > (32*1024)) { |
375 def = defer(int_6, def); | 398 def = defer(int_6, def); |
376 } | 399 } |
377 } | 400 } |
378 } | 401 } |
379 if (do_cd_labels) { | 402 if (do_cd_labels) { |
380 named_labels = weak_label(named_labels, "bios_common_work", 0x5E80); | 403 if (main_cpu) { |
381 named_labels = weak_label(named_labels, "_setjmptbl", 0x5F0A); | 404 named_labels = weak_label(named_labels, "_bios_reset", 0x280); |
382 named_labels = weak_label(named_labels, "_waitvsync", 0x5F10); | 405 named_labels = weak_label(named_labels, "_bios_entry", 0x284); |
383 named_labels = weak_label(named_labels, "_buram", 0x5F16); | 406 named_labels = weak_label(named_labels, "_bios_init", 0x288); |
384 named_labels = weak_label(named_labels, "_cdboot", 0x5F1C); | 407 named_labels = weak_label(named_labels, "_bios_init_sp", 0x28C); |
385 named_labels = weak_label(named_labels, "_cdbios", 0x5F22); | 408 named_labels = weak_label(named_labels, "_bios_vint", 0x290); |
386 named_labels = weak_label(named_labels, "_usercall0", 0x5F28); | 409 named_labels = weak_label(named_labels, "_bios_set_hint", 0x294); |
387 named_labels = weak_label(named_labels, "_usercall1", 0x5F2E); | 410 named_labels = weak_label(named_labels, "_bios_poll_io", 0x298); |
388 named_labels = weak_label(named_labels, "_usercall2", 0x5F34); | 411 named_labels = weak_label(named_labels, "_bios_detect_io", 0x29C); |
389 named_labels = weak_label(named_labels, "_usercall2Address", 0x5F36); | 412 named_labels = weak_label(named_labels, "_bios_clear_vram", 0x2A0); |
390 named_labels = weak_label(named_labels, "_usercall3", 0x5F3A); | 413 named_labels = weak_label(named_labels, "_bios_clear_nmtbl", 0x2A4); |
391 named_labels = weak_label(named_labels, "_adrerr", 0x5F40); | 414 named_labels = weak_label(named_labels, "_bios_clear_vsram", 0x2A8); |
392 named_labels = weak_label(named_labels, "_adrerrAddress", 0x5F42); | 415 named_labels = weak_label(named_labels, "_bios_init_vdp", 0x2AC); |
393 named_labels = weak_label(named_labels, "_coderr", 0x5F46); | 416 named_labels = weak_label(named_labels, "_bios_vdp_loadregs", 0x2B0); |
394 named_labels = weak_label(named_labels, "_coderrAddress", 0x5F48); | 417 named_labels = weak_label(named_labels, "_bios_vdp_fill", 0x2B4); |
395 named_labels = weak_label(named_labels, "_diverr", 0x5F4C); | 418 named_labels = weak_label(named_labels, "_bios_clear_vram_range", 0x2B8); |
396 named_labels = weak_label(named_labels, "_diverrAddress", 0x5F4E); | 419 named_labels = weak_label(named_labels, "_bios_clear_vram_range_dma", 0x2BC); |
397 named_labels = weak_label(named_labels, "_chkerr", 0x5F52); | 420 named_labels = weak_label(named_labels, "_bios_vram_dma_fill", 0x2C0); |
398 named_labels = weak_label(named_labels, "_chkerrAddress", 0x5F54); | 421 named_labels = weak_label(named_labels, "_bios_update_nmtbl", 0x2C4); |
399 named_labels = weak_label(named_labels, "_trperr", 0x5F58); | 422 named_labels = weak_label(named_labels, "_bios_update_nmtbl_template", 0x2C8); |
400 named_labels = weak_label(named_labels, "_trperrAddress", 0x5F5A); | 423 named_labels = weak_label(named_labels, "_bios_fill_nmtbl", 0x2CC); |
401 named_labels = weak_label(named_labels, "_spverr", 0x5F5E); | 424 named_labels = weak_label(named_labels, "_bios_vdp_dma", 0x2D0); |
402 named_labels = weak_label(named_labels, "_spverrAddress", 0x5F60); | 425 named_labels = weak_label(named_labels, "_bios_vdp_dma_wordram", 0x2D4); |
403 named_labels = weak_label(named_labels, "_trace", 0x5F64); | 426 named_labels = weak_label(named_labels, "_bios_vdp_display_enable", 0x2D8); |
404 named_labels = weak_label(named_labels, "_traceAddress", 0x5F66); | 427 named_labels = weak_label(named_labels, "_bios_vdp_display_disable", 0x2DC); |
405 named_labels = weak_label(named_labels, "_nocod0", 0x5F6A); | 428 named_labels = weak_label(named_labels, "_bios_pal_buffer", 0x2E0); |
406 named_labels = weak_label(named_labels, "_nocod0Address", 0x5F6C); | 429 named_labels = weak_label(named_labels, "_bios_pal_buffer_update", 0x2E4); |
407 named_labels = weak_label(named_labels, "_nocod0", 0x5F70); | 430 named_labels = weak_label(named_labels, "_bios_pal_dma", 0x2E8); |
408 named_labels = weak_label(named_labels, "_nocod0Address", 0x5F72); | 431 named_labels = weak_label(named_labels, "_bios_gfx_decomp", 0x2EC); |
409 named_labels = weak_label(named_labels, "_slevel1", 0x5F76); | 432 named_labels = weak_label(named_labels, "_bios_gfx_decomp_ram", 0x2F0); |
410 named_labels = weak_label(named_labels, "_slevel1Address", 0x5F78); | 433 named_labels = weak_label(named_labels, "_bios_update_sprites", 0x2F4); |
411 named_labels = weak_label(named_labels, "_slevel2", 0x5F7C); | 434 named_labels = weak_label(named_labels, "_bios_clear_ram", 0x2F8); |
412 named_labels = weak_label(named_labels, "_slevel2Address", 0x5F7E); | 435 named_labels = weak_label(named_labels, "_bios_display_sprite", 0x300); |
413 named_labels = weak_label(named_labels, "_slevel3", 0x5F82); | 436 named_labels = weak_label(named_labels, "_bios_wait_vint", 0x304); |
414 named_labels = weak_label(named_labels, "_slevel3Address", 0x5F84); | 437 named_labels = weak_label(named_labels, "_bios_wait_vint_flags", 0x308); |
415 named_labels = weak_label(named_labels, "WORD_RAM_2M", 0x80000); | 438 named_labels = weak_label(named_labels, "_bios_dma_sat", 0x30C); |
416 named_labels = weak_label(named_labels, "WORD_RAM_1M", 0xC0000); | 439 named_labels = weak_label(named_labels, "_bios_set_hint_direct", 0x314); |
417 named_labels = weak_label(named_labels, "LED_CONTROL", 0xFFFF8000); | 440 named_labels = weak_label(named_labels, "_bios_disable_hint", 0x318); |
418 named_labels = weak_label(named_labels, "VERSION_RESET", 0xFFFF8001); | 441 named_labels = weak_label(named_labels, "_bios_print", 0x31C); |
419 named_labels = weak_label(named_labels, "MEM_MODE_WORD", 0xFFFF8002); | 442 named_labels = weak_label(named_labels, "_bios_load_user_font", 0x320); |
420 named_labels = weak_label(named_labels, "MEM_MODE_BYTE", 0xFFFF8003); | 443 named_labels = weak_label(named_labels, "_bios_load_bios_font", 0x324); |
421 named_labels = weak_label(named_labels, "CDC_CTRL", 0xFFFF8004); | 444 named_labels = weak_label(named_labels, "_bios_load_bios_font_default", 0x328); |
422 named_labels = weak_label(named_labels, "CDC_AR", 0xFFFF8005); | 445 //TODO: more functions in the middle here |
423 named_labels = weak_label(named_labels, "CDC_REG_DATA_WORD", 0xFFFF8006); | 446 named_labels = weak_label(named_labels, "_bios_prng_mod", 0x338); |
424 named_labels = weak_label(named_labels, "CDC_REG_DATA", 0xFFFF8007); | 447 named_labels = weak_label(named_labels, "_bios_prng", 0x33C); |
425 named_labels = weak_label(named_labels, "CDC_HOST_DATA", 0xFFFF8008); | 448 named_labels = weak_label(named_labels, "_bios_clear_comm", 0x340); |
426 named_labels = weak_label(named_labels, "CDC_DMA_ADDR", 0xFFFF800A); | 449 named_labels = weak_label(named_labels, "_bios_comm_update", 0x344); |
427 named_labels = weak_label(named_labels, "STOP_WATCH", 0xFFFF800C); | 450 //TODO: more functions in the middle here |
428 named_labels = weak_label(named_labels, "COMM_MAIN_FLAG", 0xFFFF800E); | 451 named_labels = weak_label(named_labels, "_bios_sega_logo", 0x364); |
429 named_labels = weak_label(named_labels, "COMM_SUB_FLAG", 0xFFFF800F); | 452 named_labels = weak_label(named_labels, "_bios_set_vint", 0x368); |
430 named_labels = weak_label(named_labels, "COMM_CMD0", 0xFFFF8010); | 453 //TODO: more functions at the end here |
431 named_labels = weak_label(named_labels, "COMM_CMD1", 0xFFFF8012); | 454 |
432 named_labels = weak_label(named_labels, "COMM_CMD2", 0xFFFF8014); | 455 named_labels = weak_label(named_labels, "CD_RESET_IFL2", 0xA12000); |
433 named_labels = weak_label(named_labels, "COMM_CMD3", 0xFFFF8016); | 456 named_labels = weak_label(named_labels, "CD_RESET_IFL2_BYTE", 0xA12001); |
434 named_labels = weak_label(named_labels, "COMM_CMD4", 0xFFFF8018); | 457 named_labels = weak_label(named_labels, "CD_WRITE_PROTECT", 0xA12002); |
435 named_labels = weak_label(named_labels, "COMM_CMD5", 0xFFFF801A); | 458 named_labels = weak_label(named_labels, "CD_MEM_MODE", 0xA12003); |
436 named_labels = weak_label(named_labels, "COMM_CMD6", 0xFFFF801C); | 459 named_labels = weak_label(named_labels, "CDC_CTRL", 0xA12004); |
437 named_labels = weak_label(named_labels, "COMM_CMD7", 0xFFFF801E); | 460 named_labels = weak_label(named_labels, "HINT_VECTOR", 0xA12006); |
438 named_labels = weak_label(named_labels, "COMM_STATUS0", 0xFFFF8020); | 461 named_labels = weak_label(named_labels, "CDC_HOST_DATA", 0xA12008); |
439 named_labels = weak_label(named_labels, "COMM_STATUS1", 0xFFFF8022); | 462 named_labels = weak_label(named_labels, "STOP_WATCH", 0xA1200C); |
440 named_labels = weak_label(named_labels, "COMM_STATUS2", 0xFFFF8024); | 463 named_labels = weak_label(named_labels, "COMM_MAIN_FLAG", 0xA1200E); |
441 named_labels = weak_label(named_labels, "COMM_STATUS3", 0xFFFF8026); | 464 named_labels = weak_label(named_labels, "COMM_SUB_FLAG", 0xA1200F); |
442 named_labels = weak_label(named_labels, "COMM_STATUS4", 0xFFFF8028); | 465 named_labels = weak_label(named_labels, "COMM_CMD0", 0xA12010); |
443 named_labels = weak_label(named_labels, "COMM_STATUS5", 0xFFFF802A); | 466 named_labels = weak_label(named_labels, "COMM_CMD1", 0xA12012); |
444 named_labels = weak_label(named_labels, "COMM_STATUS6", 0xFFFF802C); | 467 named_labels = weak_label(named_labels, "COMM_CMD2", 0xA12014); |
445 named_labels = weak_label(named_labels, "COMM_STATUS7", 0xFFFF802E); | 468 named_labels = weak_label(named_labels, "COMM_CMD3", 0xA12016); |
446 named_labels = weak_label(named_labels, "TIMER_WORD", 0xFFFF8030); | 469 named_labels = weak_label(named_labels, "COMM_CMD4", 0xA12018); |
447 named_labels = weak_label(named_labels, "TIMER", 0xFFFF8031); | 470 named_labels = weak_label(named_labels, "COMM_CMD5", 0xA1201A); |
448 named_labels = weak_label(named_labels, "INT_MASK_WORD", 0xFFFF8032); | 471 named_labels = weak_label(named_labels, "COMM_CMD6", 0xA1201C); |
449 named_labels = weak_label(named_labels, "INT_MASK", 0xFFFF8033); | 472 named_labels = weak_label(named_labels, "COMM_CMD7", 0xA1201E); |
450 named_labels = weak_label(named_labels, "CDD_FADER", 0xFFFF8034); | 473 named_labels = weak_label(named_labels, "COMM_STATUS0", 0xA12020); |
451 named_labels = weak_label(named_labels, "CDD_CTRL_WORD", 0xFFFF8036); | 474 named_labels = weak_label(named_labels, "COMM_STATUS1", 0xA12022); |
452 named_labels = weak_label(named_labels, "CDD_CTRL_BYTE", 0xFFFF8037); | 475 named_labels = weak_label(named_labels, "COMM_STATUS2", 0xA12024); |
476 named_labels = weak_label(named_labels, "COMM_STATUS3", 0xA12026); | |
477 named_labels = weak_label(named_labels, "COMM_STATUS4", 0xA12028); | |
478 named_labels = weak_label(named_labels, "COMM_STATUS5", 0xA1202A); | |
479 named_labels = weak_label(named_labels, "COMM_STATUS6", 0xA1202C); | |
480 named_labels = weak_label(named_labels, "COMM_STATUS7", 0xA1202E); | |
481 } else { | |
482 named_labels = weak_label(named_labels, "bios_common_work", 0x5E80); | |
483 named_labels = weak_label(named_labels, "_setjmptbl", 0x5F0A); | |
484 named_labels = weak_label(named_labels, "_waitvsync", 0x5F10); | |
485 named_labels = weak_label(named_labels, "_buram", 0x5F16); | |
486 named_labels = weak_label(named_labels, "_cdboot", 0x5F1C); | |
487 named_labels = weak_label(named_labels, "_cdbios", 0x5F22); | |
488 named_labels = weak_label(named_labels, "_usercall0", 0x5F28); | |
489 named_labels = weak_label(named_labels, "_usercall1", 0x5F2E); | |
490 named_labels = weak_label(named_labels, "_usercall2", 0x5F34); | |
491 named_labels = weak_label(named_labels, "_usercall2Address", 0x5F36); | |
492 named_labels = weak_label(named_labels, "_usercall3", 0x5F3A); | |
493 named_labels = weak_label(named_labels, "_adrerr", 0x5F40); | |
494 named_labels = weak_label(named_labels, "_adrerrAddress", 0x5F42); | |
495 named_labels = weak_label(named_labels, "_coderr", 0x5F46); | |
496 named_labels = weak_label(named_labels, "_coderrAddress", 0x5F48); | |
497 named_labels = weak_label(named_labels, "_diverr", 0x5F4C); | |
498 named_labels = weak_label(named_labels, "_diverrAddress", 0x5F4E); | |
499 named_labels = weak_label(named_labels, "_chkerr", 0x5F52); | |
500 named_labels = weak_label(named_labels, "_chkerrAddress", 0x5F54); | |
501 named_labels = weak_label(named_labels, "_trperr", 0x5F58); | |
502 named_labels = weak_label(named_labels, "_trperrAddress", 0x5F5A); | |
503 named_labels = weak_label(named_labels, "_spverr", 0x5F5E); | |
504 named_labels = weak_label(named_labels, "_spverrAddress", 0x5F60); | |
505 named_labels = weak_label(named_labels, "_trace", 0x5F64); | |
506 named_labels = weak_label(named_labels, "_traceAddress", 0x5F66); | |
507 named_labels = weak_label(named_labels, "_nocod0", 0x5F6A); | |
508 named_labels = weak_label(named_labels, "_nocod0Address", 0x5F6C); | |
509 named_labels = weak_label(named_labels, "_nocod0", 0x5F70); | |
510 named_labels = weak_label(named_labels, "_nocod0Address", 0x5F72); | |
511 named_labels = weak_label(named_labels, "_slevel1", 0x5F76); | |
512 named_labels = weak_label(named_labels, "_slevel1Address", 0x5F78); | |
513 named_labels = weak_label(named_labels, "_slevel2", 0x5F7C); | |
514 named_labels = weak_label(named_labels, "_slevel2Address", 0x5F7E); | |
515 named_labels = weak_label(named_labels, "_slevel3", 0x5F82); | |
516 named_labels = weak_label(named_labels, "_slevel3Address", 0x5F84); | |
517 named_labels = weak_label(named_labels, "WORD_RAM_2M", 0x80000); | |
518 named_labels = weak_label(named_labels, "WORD_RAM_1M", 0xC0000); | |
519 named_labels = weak_label(named_labels, "LED_CONTROL", 0xFFFF8000); | |
520 named_labels = weak_label(named_labels, "VERSION_RESET", 0xFFFF8001); | |
521 named_labels = weak_label(named_labels, "MEM_MODE_WORD", 0xFFFF8002); | |
522 named_labels = weak_label(named_labels, "MEM_MODE_BYTE", 0xFFFF8003); | |
523 named_labels = weak_label(named_labels, "CDC_CTRL", 0xFFFF8004); | |
524 named_labels = weak_label(named_labels, "CDC_AR", 0xFFFF8005); | |
525 named_labels = weak_label(named_labels, "CDC_REG_DATA_WORD", 0xFFFF8006); | |
526 named_labels = weak_label(named_labels, "CDC_REG_DATA", 0xFFFF8007); | |
527 named_labels = weak_label(named_labels, "CDC_HOST_DATA", 0xFFFF8008); | |
528 named_labels = weak_label(named_labels, "CDC_DMA_ADDR", 0xFFFF800A); | |
529 named_labels = weak_label(named_labels, "STOP_WATCH", 0xFFFF800C); | |
530 named_labels = weak_label(named_labels, "COMM_MAIN_FLAG", 0xFFFF800E); | |
531 named_labels = weak_label(named_labels, "COMM_SUB_FLAG", 0xFFFF800F); | |
532 named_labels = weak_label(named_labels, "COMM_CMD0", 0xFFFF8010); | |
533 named_labels = weak_label(named_labels, "COMM_CMD1", 0xFFFF8012); | |
534 named_labels = weak_label(named_labels, "COMM_CMD2", 0xFFFF8014); | |
535 named_labels = weak_label(named_labels, "COMM_CMD3", 0xFFFF8016); | |
536 named_labels = weak_label(named_labels, "COMM_CMD4", 0xFFFF8018); | |
537 named_labels = weak_label(named_labels, "COMM_CMD5", 0xFFFF801A); | |
538 named_labels = weak_label(named_labels, "COMM_CMD6", 0xFFFF801C); | |
539 named_labels = weak_label(named_labels, "COMM_CMD7", 0xFFFF801E); | |
540 named_labels = weak_label(named_labels, "COMM_STATUS0", 0xFFFF8020); | |
541 named_labels = weak_label(named_labels, "COMM_STATUS1", 0xFFFF8022); | |
542 named_labels = weak_label(named_labels, "COMM_STATUS2", 0xFFFF8024); | |
543 named_labels = weak_label(named_labels, "COMM_STATUS3", 0xFFFF8026); | |
544 named_labels = weak_label(named_labels, "COMM_STATUS4", 0xFFFF8028); | |
545 named_labels = weak_label(named_labels, "COMM_STATUS5", 0xFFFF802A); | |
546 named_labels = weak_label(named_labels, "COMM_STATUS6", 0xFFFF802C); | |
547 named_labels = weak_label(named_labels, "COMM_STATUS7", 0xFFFF802E); | |
548 named_labels = weak_label(named_labels, "TIMER_WORD", 0xFFFF8030); | |
549 named_labels = weak_label(named_labels, "TIMER", 0xFFFF8031); | |
550 named_labels = weak_label(named_labels, "INT_MASK_WORD", 0xFFFF8032); | |
551 named_labels = weak_label(named_labels, "INT_MASK", 0xFFFF8033); | |
552 named_labels = weak_label(named_labels, "CDD_FADER", 0xFFFF8034); | |
553 named_labels = weak_label(named_labels, "CDD_CTRL_WORD", 0xFFFF8036); | |
554 named_labels = weak_label(named_labels, "CDD_CTRL_BYTE", 0xFFFF8037); | |
555 } | |
453 } | 556 } |
454 uint16_t *encoded, *next; | 557 uint16_t *encoded, *next; |
455 uint32_t size, tmp_addr; | 558 uint32_t size, tmp_addr; |
456 uint32_t address; | 559 uint32_t address; |
457 while(def) { | 560 while(def) { |