FreeCalypso > hg > tcs211-l1-reconst
annotate STATUS @ 323:fcbeafbb0106
l1p_func.c: passes compilation
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 04 Oct 2017 06:37:33 +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:
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 |
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:
285
diff
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:
288
diff
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:
285
diff
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:
283
diff
changeset
|
61 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
changeset
|
64 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
65 l1_afunc.obj: |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
66 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
changeset
|
71 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
284
diff
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:
283
diff
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:
283
diff
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:
283
diff
changeset
|
79 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
changeset
|
81 |
289
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
82 l1_sync.obj: |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
83 |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
84 The last function in this module is l1s_dedicated_mode_manager(); |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
85 the two preceding functions match perfectly, but for this last function |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
86 when the reconstructed code is recompiled, the compiler's register |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
87 allocator makes different picks for reasons that could not be |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
88 successfully reversed. Because the code is compiled in Thumb mode |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
89 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
|
90 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
|
91 has instead been verified by manual comparison. |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
92 |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
93 l1_sync_intram.obj: |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
94 |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
95 Similar situation in the l1s_schedule_tasks() function: the function |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
96 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
|
97 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
|
98 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
|
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:
288
diff
changeset
|
100 manually. All other functions (preceding and following) match |
f2f7f4dff6d7
STATUS: analysis complete
Mychaela Falconia <falcon@freecalypso.org>
parents:
288
diff
changeset
|
101 perfectly. |
284
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
102 |
285
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
103 dl1_com.obj: |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
104 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
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:
284
diff
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:
284
diff
changeset
|
107 non-functional bogons. Specifically: |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
108 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
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:
284
diff
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:
284
diff
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:
284
diff
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:
284
diff
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:
284
diff
changeset
|
114 Verified exact match otherwise. |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
115 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
116 TP_FrameIntHandler(): verified exact match. |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
117 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
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:
284
diff
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:
284
diff
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:
284
diff
changeset
|
121 except for the removal of this bogon. |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
122 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
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:
284
diff
changeset
|
124 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
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:
284
diff
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:
284
diff
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:
284
diff
changeset
|
128 arguments. The reconstructed version returns NULL. |
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 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
|
131 exact match. |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
changeset
|
132 |
4d9af8de3973
STATUS: dl1_com differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
284
diff
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:
284
diff
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:
284
diff
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:
284
diff
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:
284
diff
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:
284
diff
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:
284
diff
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:
283
diff
changeset
|
140 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
changeset
|
142 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
changeset
|
149 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
changeset
|
155 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
changeset
|
159 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
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 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
|
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
changeset
|
169 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
changeset
|
174 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
|
175 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
changeset
|
184 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
changeset
|
190 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
191 l1audio_async.obj: |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
192 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
changeset
|
197 the register allocation. |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
198 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
changeset
|
201 have been interchanged. |
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_cust.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 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
|
206 the module: |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
changeset
|
207 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
changeset
|
217 |
33b35965b4a0
STATUS: began analysis of the differences in the non-exact objects
Mychaela Falconia <falcon@freecalypso.org>
parents:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
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:
283
diff
changeset
|
222 |
288
595cdc5ff4e5
tpudrv12 differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
285
diff
changeset
|
223 tpudrv12.obj: |
595cdc5ff4e5
tpudrv12 differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
285
diff
changeset
|
224 |
595cdc5ff4e5
tpudrv12 differences analyzed and documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
285
diff
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:
285
diff
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:
285
diff
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:
285
diff
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:
285
diff
changeset
|
229 chipsetsw/layer1/tpu_drivers/source0/tpudrv12.notes for the details. |