FreeCalypso > hg > tcs211-l1-reconst
annotate STATUS @ 344:ad79bc0b3312
p_tpudr12.c reconstructed, perfect match to original TCS211 object
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 30 Oct 2017 05:27:59 +0000 |
parents | 01b78eaf67e2 |
children | ba47d35a72f3 |
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:
283
diff
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:
288
diff
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:
283
diff
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:
283
diff
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:
283
diff
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 |
336
7ad882cbce4c
STATUS: updated for l1p_* deblobbing
Mychaela Falconia <falcon@freecalypso.org>
parents:
289
diff
changeset
|
27 l1p_afun.obj: perfect match |
7ad882cbce4c
STATUS: updated for l1p_* deblobbing
Mychaela Falconia <falcon@freecalypso.org>
parents:
289
diff
changeset
|
28 l1p_asyn.obj: perfect match |
7ad882cbce4c
STATUS: updated for l1p_* deblobbing
Mychaela Falconia <falcon@freecalypso.org>
parents:
289
diff
changeset
|
29 l1p_cmpl.obj: perfect match to 20070608 version |
7ad882cbce4c
STATUS: updated for l1p_* deblobbing
Mychaela Falconia <falcon@freecalypso.org>
parents:
289
diff
changeset
|
30 l1p_sync.obj: perfect match |
7ad882cbce4c
STATUS: updated for l1p_* deblobbing
Mychaela Falconia <falcon@freecalypso.org>
parents:
289
diff
changeset
|
31 |
283
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 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
|
33 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
|
34 l1tm_stats.obj: perfect match |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 Objects in l1_int.lib: |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 |
288
595cdc5ff4e5
tpudrv12 differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
285
diff
changeset
|
38 dl1_com.obj: not exact, see analysis below |
283
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 l1_api_hisr.obj: perfect match |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 l1_cmplx_intram.obj: perfect match to 20070608 version |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 l1_ctl.obj: perfect match to 20070608 version |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 l1_drive.obj: perfect match |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 l1_func.obj: perfect match |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 l1_mfmgr.obj: perfect match |
289
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
45 l1_sync_intram.obj: not exact, see explanation below |
283
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_func.obj: perfect match |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 l1audio_sync.obj: perfect match |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 |
336
7ad882cbce4c
STATUS: updated for l1p_* deblobbing
Mychaela Falconia <falcon@freecalypso.org>
parents:
289
diff
changeset
|
50 l1p_cmpl_intram.obj: perfect match |
7ad882cbce4c
STATUS: updated for l1p_* deblobbing
Mychaela Falconia <falcon@freecalypso.org>
parents:
289
diff
changeset
|
51 l1p_ctl.obj: perfect match |
7ad882cbce4c
STATUS: updated for l1p_* deblobbing
Mychaela Falconia <falcon@freecalypso.org>
parents:
289
diff
changeset
|
52 l1p_driv.obj: not exact, needs additional review |
7ad882cbce4c
STATUS: updated for l1p_* deblobbing
Mychaela Falconia <falcon@freecalypso.org>
parents:
289
diff
changeset
|
53 l1p_func.obj: perfect match |
7ad882cbce4c
STATUS: updated for l1p_* deblobbing
Mychaela Falconia <falcon@freecalypso.org>
parents:
289
diff
changeset
|
54 l1p_sync_intram.obj: perfect match |
341
01b78eaf67e2
STATUS: macs.obj is a perfect match
Mychaela Falconia <falcon@freecalypso.org>
parents:
336
diff
changeset
|
55 macs.obj: perfect match |
336
7ad882cbce4c
STATUS: updated for l1p_* deblobbing
Mychaela Falconia <falcon@freecalypso.org>
parents:
289
diff
changeset
|
56 |
283
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 Objects in l1_custom_ext.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 l1audio_cust.obj: dead functions not reconstructed, perfect match |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 otherwise |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 l1tm_cust.obj: perfect match |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 l1tm_tpu12.obj: perfect match |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 Objects in l1_custom_int.lib: |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 ind_os.obj: perfect match |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 l1_cust.obj: perfect match |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 Objects in tpudrv.lib: |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 |
974835ad720c
STATUS top level file added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 tpudrv.obj: perfect match |
288
595cdc5ff4e5
tpudrv12 differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
285
diff
changeset
|
72 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:
283
diff
changeset
|
73 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
74 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:
283
diff
changeset
|
75 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:
283
diff
changeset
|
76 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
77 l1_afunc.obj: |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
78 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
79 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:
283
diff
changeset
|
80 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:
283
diff
changeset
|
81 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:
283
diff
changeset
|
82 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:
283
diff
changeset
|
83 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
84 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:
283
diff
changeset
|
85 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:
283
diff
changeset
|
86 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:
283
diff
changeset
|
87 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:
284
diff
changeset
|
88 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:
283
diff
changeset
|
89 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:
283
diff
changeset
|
90 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:
283
diff
changeset
|
91 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
92 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:
283
diff
changeset
|
93 |
289
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
94 l1_sync.obj: |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
95 |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
96 The last function in this module is l1s_dedicated_mode_manager(); |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
97 the two preceding functions match perfectly, but for this last function |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
98 when the reconstructed code is recompiled, the compiler's register |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
99 allocator makes different picks for reasons that could not be |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
100 successfully reversed. Because the code is compiled in Thumb mode |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
101 and the compiler made a different choice between low and high registers |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
102 in some places, the instructions do not line perfectly. The logic match |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
103 has instead been verified by manual comparison. |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
104 |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
105 l1_sync_intram.obj: |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
106 |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
107 Similar situation in the l1s_schedule_tasks() function: the function |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
108 is huge, there is an unknown set of factors determining what the |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
109 compiler's register allocator will do, and in this case there is even |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
110 a difference in the choice of register vs. stack for some temporaries. |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
111 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:
288
diff
changeset
|
112 manually. All other functions (preceding and following) match |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
113 perfectly. |
284
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
114 |
285
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
115 dl1_com.obj: |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
116 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
117 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:
284
diff
changeset
|
118 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:
284
diff
changeset
|
119 non-functional bogons. Specifically: |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
120 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
121 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:
284
diff
changeset
|
122 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:
284
diff
changeset
|
123 This assert string also contains the line number which differs |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
124 (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:
284
diff
changeset
|
125 because of the diffs in later functions listed below. |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
126 Verified exact match otherwise. |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
127 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
128 TP_FrameIntHandler(): verified exact match. |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
129 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
130 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:
284
diff
changeset
|
131 non-functional bogon which has not been reconstructed, see the |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
132 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:
284
diff
changeset
|
133 except for the removal of this bogon. |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
134 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
135 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:
284
diff
changeset
|
136 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
137 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:
284
diff
changeset
|
138 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:
284
diff
changeset
|
139 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:
284
diff
changeset
|
140 arguments. The reconstructed version returns NULL. |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
141 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
142 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:
284
diff
changeset
|
143 exact match. |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
144 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
145 .bss section: the original blob contains these defunct uninitialized |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
146 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:
284
diff
changeset
|
147 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:
284
diff
changeset
|
148 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:
284
diff
changeset
|
149 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:
284
diff
changeset
|
150 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:
284
diff
changeset
|
151 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:
283
diff
changeset
|
152 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
153 l1_dyn_dwl_func.obj: |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
154 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
155 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:
283
diff
changeset
|
156 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:
283
diff
changeset
|
157 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:
283
diff
changeset
|
158 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:
283
diff
changeset
|
159 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:
283
diff
changeset
|
160 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:
283
diff
changeset
|
161 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
162 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:
283
diff
changeset
|
163 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:
283
diff
changeset
|
164 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:
283
diff
changeset
|
165 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:
283
diff
changeset
|
166 instructions still perfectly line up. |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
167 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
168 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:
283
diff
changeset
|
169 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:
283
diff
changeset
|
170 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:
283
diff
changeset
|
171 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
172 l1_dyn_dwl_init.obj: |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
173 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
174 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:
283
diff
changeset
|
175 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:
283
diff
changeset
|
176 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:
283
diff
changeset
|
177 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:
283
diff
changeset
|
178 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:
283
diff
changeset
|
179 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:
283
diff
changeset
|
180 l1_dyn_dwl_init.c. |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
181 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
182 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:
283
diff
changeset
|
183 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:
283
diff
changeset
|
184 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:
283
diff
changeset
|
185 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:
283
diff
changeset
|
186 for every enabled option. |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
187 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
188 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:
283
diff
changeset
|
189 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:
283
diff
changeset
|
190 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:
283
diff
changeset
|
191 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:
283
diff
changeset
|
192 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:
283
diff
changeset
|
193 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:
283
diff
changeset
|
194 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:
283
diff
changeset
|
195 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:
283
diff
changeset
|
196 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
197 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:
283
diff
changeset
|
198 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:
283
diff
changeset
|
199 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:
283
diff
changeset
|
200 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:
283
diff
changeset
|
201 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:
283
diff
changeset
|
202 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
203 l1audio_async.obj: |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
204 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
205 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:
283
diff
changeset
|
206 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:
283
diff
changeset
|
207 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:
283
diff
changeset
|
208 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:
283
diff
changeset
|
209 the register allocation. |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
210 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
211 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:
283
diff
changeset
|
212 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:
283
diff
changeset
|
213 have been interchanged. |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
214 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
215 l1audio_cust.obj: |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
216 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
217 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:
283
diff
changeset
|
218 the module: |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
219 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
220 audio_melo_e1_demo1_start() |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
221 audio_melo_e1_demo1_stop() |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
222 audio_melo_e1_demo2_start() |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
223 audio_melo_e1_demo2_stop() |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
224 audio_melo_e2_load_lsi() |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
225 audio_melo_e2_demo1_start() |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
226 audio_melo_e2_demo1_stop() |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
227 audio_melo_e2_demo2_start() |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
228 audio_melo_e2_demo2_stop() |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
229 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
230 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:
283
diff
changeset
|
231 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:
283
diff
changeset
|
232 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:
283
diff
changeset
|
233 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:
283
diff
changeset
|
234 |
288
595cdc5ff4e5
tpudrv12 differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
285
diff
changeset
|
235 tpudrv12.obj: |
595cdc5ff4e5
tpudrv12 differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
285
diff
changeset
|
236 |
595cdc5ff4e5
tpudrv12 differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
285
diff
changeset
|
237 The reconstruction of this module was more of a translation of logic |
595cdc5ff4e5
tpudrv12 differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
285
diff
changeset
|
238 from disassembly to C than adaptation of source from other versions, |
595cdc5ff4e5
tpudrv12 differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
285
diff
changeset
|
239 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:
285
diff
changeset
|
240 has been carefully verified and confirmed to match the original; see |
595cdc5ff4e5
tpudrv12 differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
285
diff
changeset
|
241 chipsetsw/layer1/tpu_drivers/source0/tpudrv12.notes for the details. |