FreeCalypso > hg > tcs211-l1-reconst
annotate STATUS @ 293:c98b6ae0f7f1
l1p_asyn.c: l1pa_transfer_process() reconstructed
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Mon, 02 Oct 2017 05:29:02 +0000 | 
| parents | f2f7f4dff6d7 | 
| children | 7ad882cbce4c | 
| rev | line source | 
|---|---|
| 283 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 Objects in l1_ext.lib: | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 | 
| 284 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 3 l1_afunc.obj: not exact, see explanation below | 
| 283 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 l1_async.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 l1_cmplx.obj: perfect match to 20070608 version except line number points | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 l1_init.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 l1_pwmgr.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 l1_small.obj: perfect match | 
| 289 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 9 l1_sync.obj: not exact, see explanation below | 
| 283 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 l1_trace.obj: bits match perfectly, diff only in symbolic metadata | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 l1_dyn_dwl_afunc.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 l1_dyn_dwl_apihisr.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 l1_dyn_dwl_async.obj: perfect match | 
| 284 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 15 l1_dyn_dwl_func.obj: not exact, see explanation below | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 16 l1_dyn_dwl_init.obj: sole diff is in the num_of_primitives oddity, | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 17 see explanation below | 
| 283 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 l1_dyn_dwl_sync.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 l1audio_abb.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 l1audio_afunc.obj: bits match perfectly, diff only in symbolic metadata | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 l1audio_async.obj: diffs only in register alloc and symbolic metadata | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 l1audio_back.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 l1audio_drive.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 l1audio_init.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 l1tm_async.obj: bits match perfectly, diff only in the line number points | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 l1tm_func.obj: bits match perfectly, diffs only in symbolic and line numbers | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 l1tm_stats.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 Objects in l1_int.lib: | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 | 
| 288 
595cdc5ff4e5
tpudrv12 differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
285diff
changeset | 33 dl1_com.obj: not exact, see analysis below | 
| 283 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 l1_api_hisr.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 l1_cmplx_intram.obj: perfect match to 20070608 version | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 l1_ctl.obj: perfect match to 20070608 version | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 l1_drive.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 l1_func.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 l1_mfmgr.obj: perfect match | 
| 289 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 40 l1_sync_intram.obj: not exact, see explanation below | 
| 283 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 l1audio_func.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 l1audio_sync.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 Objects in l1_custom_ext.lib: | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 l1audio_cust.obj: dead functions not reconstructed, perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 otherwise | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 l1tm_cust.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 l1tm_tpu12.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 Objects in l1_custom_int.lib: | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 ind_os.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 l1_cust.obj: perfect match | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 Objects in tpudrv.lib: | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 | 
| 
974835ad720c
STATUS top level file added
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 tpudrv.obj: perfect match | 
| 288 
595cdc5ff4e5
tpudrv12 differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
285diff
changeset | 60 tpudrv12.obj: not exact, see analysis below | 
| 284 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 61 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 62 Detailed analysis of differences, i.e., cases where the reconstructed C code | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 63 compiles into an object that is not bit-identical to the original blob: | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 64 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 65 l1_afunc.obj: | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 66 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 67 The l1_afunc.c module from LoCosto is used without any changes: | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 68 it compiled right away after adding one constant to l1_const.h, | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 69 and the result of recompilation is identical to the original up until | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 70 the l1a_clip_txpwr() function, which is the last function in the module. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 71 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 72 Disassembly of the original blob version of this function has been | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 73 analyzed and found to be identical in logic to the available C code, | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 74 but there must have been some change to the code expression that | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 75 results in different output from the compiler. In particular, the | 
| 285 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 76 symbolic info indicates the presence of a local variable named power | 
| 284 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 77 in the original, but no such local var exists in the LoCosto version. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 78 The TSM30 version was of no help as it is entirely different there. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 79 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 80 See g23m/objdiff/l1_ext/l1_afunc.notes for further info. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 81 | 
| 289 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 82 l1_sync.obj: | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 83 | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 84 The last function in this module is l1s_dedicated_mode_manager(); | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 85 the two preceding functions match perfectly, but for this last function | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 86 when the reconstructed code is recompiled, the compiler's register | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 87 allocator makes different picks for reasons that could not be | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 88 successfully reversed. Because the code is compiled in Thumb mode | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 89 and the compiler made a different choice between low and high registers | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 90 in some places, the instructions do not line perfectly. The logic match | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 91 has instead been verified by manual comparison. | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 92 | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 93 l1_sync_intram.obj: | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 94 | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 95 Similar situation in the l1s_schedule_tasks() function: the function | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 96 is huge, there is an unknown set of factors determining what the | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 97 compiler's register allocator will do, and in this case there is even | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 98 a difference in the choice of register vs. stack for some temporaries. | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 99 As a result, the code does not line up and the logic had to be verified | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 100 manually. All other functions (preceding and following) match | 
| 
f2f7f4dff6d7
STATUS: analysis complete
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 101 perfectly. | 
| 284 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 102 | 
| 285 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 103 dl1_com.obj: | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 104 | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 105 The reconstruction of this module is not exact, but the logic has | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 106 been verified to be an exact match except for the removal of some | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 107 non-functional bogons. Specifically: | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 108 | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 109 l1_create_ISR(): diff in one local variable name (result vs. status), | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 110 affects the generated assert string, but the length stays the same. | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 111 This assert string also contains the line number which differs | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 112 (3 digits in both cases), and the location of the string changes | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 113 because of the diffs in later functions listed below. | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 114 Verified exact match otherwise. | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 115 | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 116 TP_FrameIntHandler(): verified exact match. | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 117 | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 118 layer_1_sync_HISR_entry(): the version in the blob contains a | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 119 non-functional bogon which has not been reconstructed, see the | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 120 comments in the reconstructed source. Verified to be an exact match | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 121 except for the removal of this bogon. | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 122 | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 123 rx_tch_data(): empty function in both versions, trivial exact match. | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 124 | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 125 tx_tch_data(): this stub function is supposed to return a pointer, | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 126 but the original blob does a bare bx lr, returning whatever happens to | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 127 be in r0 on entry, which is unpredictable as the function takes no | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 128 arguments. The reconstructed version returns NULL. | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 129 | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 130 Strings and literals after the functions: manually verified to be an | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 131 exact match. | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 132 | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 133 .bss section: the original blob contains these defunct uninitialized | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 134 data objects: BACK_queue, DLL1_queue, L1C1_queue, RRM1_queue, pool_52, | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 135 pool_100, pool_400, pool_1600, and a static variable i in | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 136 layer_1_sync_HISR_entry() related to the bogon mentioned above. These | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 137 global data objects are not referenced from anywhere else in the | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 138 firmware and the link succeeds without them being present, hence they | 
| 
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
284diff
changeset | 139 have been omitted from the reconstruction. The rest is an exact match. | 
| 284 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 140 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 141 l1_dyn_dwl_func.obj: | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 142 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 143 The LoCosto version uses a function (implemented in l1_func.c in | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 144 the LoCosto code) named l1_memcpy_16bit() to download patch bits | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 145 into the DSP's API RAM; the function does what the name says, and | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 146 the logic of using 16-bit accesses when hitting this API RAM makes | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 147 perfect sense to me (Mychaela). The original TCS211 code apparently | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 148 used plain memcpy(), which the compiler turned into its C$MEMCPY call. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 149 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 150 If one does a #define l1_memcpy_16bit memcpy in l1_dyn_dwl_func.c, | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 151 the resulting l1_dyn_dwl_func.obj is almost bit-identical to the | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 152 original blob: the only diff is in register allocation - the compiler's | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 153 register allocator picks a different choice of registers, but all | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 154 instructions still perfectly line up. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 155 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 156 For production use of our reconstructed TCS211 L1 code, we have adopted | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 157 the version with l1_memcpy_16bit() - the function body itself has been | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 158 moved into l1_dyn_dwl_func.c so that l1_func.c remains a perfect match. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 159 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 160 l1_dyn_dwl_init.obj: | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 161 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 162 In the TCS211 configuration without L1_GTT, there are a total of 5 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 163 signals (aka primitives aka L1 messages) which trigger a dynamic | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 164 DSP patch download. These 5 signals are enumerated in | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 165 signal_patch_array[] in l1_dyn_dwl_afunc.c (which has been reconstructed | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 166 to a perfect match), and their total count (which should be 5) goes into | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 167 l1a.dyn_dwnld.num_of_primitives, set in l1_dyn_dwnld_initialize_var() in | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 168 l1_dyn_dwl_init.c. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 169 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 170 In the original blob version this num_of_primitives variable ends up | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 171 being set to 6: first set to 2, then incremented by 4. In the LoCosto | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 172 source this var is first set to 0 as they apparently have no patches | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 173 that are independent of compilation config options, and then incremented | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 174 for every enabled option. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 175 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 176 In our reconstruction we have made the GPRS and AMR_SCH patches and the | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 177 primitives that trigger them mandatory, and conditionalized the E2 and | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 178 AMR_MMS patches on MELODY_E2. The GPRS and AMR_MMS critters are | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 179 preinstalled by the static patch, and get pushed out by AMR_SCH and E2, | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 180 respectively. Of the 5 primitives listed in signal_patch_array[] in | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 181 the original blob, the first 2 are always-present core ones, whereas | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 182 the last 3 are specific to E2. The AMR_MMS patch is reinstated upon | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 183 L1_BACK_MELODY_E2_UNLOAD_INSTRUMENT_CON. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 184 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 185 Based on the above reasoning, our reconstructed version sets | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 186 l1a.dyn_dwnld.num_of_primitives to 5 in the full configuration: first | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 187 sets to 2, then increments by 3. If one makes a sans-MELODY_E2 build, | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 188 only the GPRS and AMR_SCH patches will be retained, and only the two | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 189 non-E2 primitives for entry into and exit from dedicated mode. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 190 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 191 l1audio_async.obj: | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 192 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 193 The only bit diff is in register allocation - the compiler's register | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 194 allocator picks a different choice of registers, but all instructions | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 195 still perfectly line up. There is also a slight diff in the symbolic | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 196 metadata emitted for functions, which might be related to the diff in | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 197 the register allocation. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 198 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 199 The root cause of these diffs could not be found, but there is no | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 200 functional difference as only some in-function temporary registers | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 201 have been interchanged. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 202 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 203 l1audio_cust.obj: | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 204 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 205 The original blob version has these demo/test functions at the end of | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 206 the module: | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 207 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 208 audio_melo_e1_demo1_start() | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 209 audio_melo_e1_demo1_stop() | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 210 audio_melo_e1_demo2_start() | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 211 audio_melo_e1_demo2_stop() | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 212 audio_melo_e2_load_lsi() | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 213 audio_melo_e2_demo1_start() | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 214 audio_melo_e2_demo1_stop() | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 215 audio_melo_e2_demo2_start() | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 216 audio_melo_e2_demo2_stop() | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 217 | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 218 These functions are dead code, i.e., they are not called or referenced | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 219 from anywhere else in the firmware, and the link succeeds without them | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 220 being present. These dead functions have been omitted from the | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 221 reconstructed version. The reconstruction is a perfect match otherwise. | 
| 
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
 Mychaela Falconia <falcon@freecalypso.org> parents: 
283diff
changeset | 222 | 
| 288 
595cdc5ff4e5
tpudrv12 differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
285diff
changeset | 223 tpudrv12.obj: | 
| 
595cdc5ff4e5
tpudrv12 differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
285diff
changeset | 224 | 
| 
595cdc5ff4e5
tpudrv12 differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
285diff
changeset | 225 The reconstruction of this module was more of a translation of logic | 
| 
595cdc5ff4e5
tpudrv12 differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
285diff
changeset | 226 from disassembly to C than adaptation of source from other versions, | 
| 
595cdc5ff4e5
tpudrv12 differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
285diff
changeset | 227 hence it is not a bit-for-bit match or even close. However, the logic | 
| 
595cdc5ff4e5
tpudrv12 differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
285diff
changeset | 228 has been carefully verified and confirmed to match the original; see | 
| 
595cdc5ff4e5
tpudrv12 differences analyzed and documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
285diff
changeset | 229 chipsetsw/layer1/tpu_drivers/source0/tpudrv12.notes for the details. | 
