comparison STATUS @ 285:4d9af8de3973

STATUS: dl1_com differences analyzed and documented
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 14 Mar 2017 20:52:00 +0000
parents 33b35965b4a0
children 595cdc5ff4e5
comparison
equal deleted inserted replaced
284:33b35965b4a0 285:4d9af8de3973
71 71
72 Disassembly of the original blob version of this function has been 72 Disassembly of the original blob version of this function has been
73 analyzed and found to be identical in logic to the available C code, 73 analyzed and found to be identical in logic to the available C code,
74 but there must have been some change to the code expression that 74 but there must have been some change to the code expression that
75 results in different output from the compiler. In particular, the 75 results in different output from the compiler. In particular, the
76 symbolic info indicates the present of a local variable named power 76 symbolic info indicates the presence of a local variable named power
77 in the original, but no such local var exists in the LoCosto version. 77 in the original, but no such local var exists in the LoCosto version.
78 The TSM30 version was of no help as it is entirely different there. 78 The TSM30 version was of no help as it is entirely different there.
79 79
80 See g23m/objdiff/l1_ext/l1_afunc.notes for further info. 80 See g23m/objdiff/l1_ext/l1_afunc.notes for further info.
81 81
82 l1_sync.obj: needs further review 82 l1_sync.obj: needs further review
83 l1_sync_intram.obj: ditto 83 l1_sync_intram.obj: ditto
84 84
85 dl1_com.obj: not exact, needs review 85 dl1_com.obj:
86
87 The reconstruction of this module is not exact, but the logic has
88 been verified to be an exact match except for the removal of some
89 non-functional bogons. Specifically:
90
91 l1_create_ISR(): diff in one local variable name (result vs. status),
92 affects the generated assert string, but the length stays the same.
93 This assert string also contains the line number which differs
94 (3 digits in both cases), and the location of the string changes
95 because of the diffs in later functions listed below.
96 Verified exact match otherwise.
97
98 TP_FrameIntHandler(): verified exact match.
99
100 layer_1_sync_HISR_entry(): the version in the blob contains a
101 non-functional bogon which has not been reconstructed, see the
102 comments in the reconstructed source. Verified to be an exact match
103 except for the removal of this bogon.
104
105 rx_tch_data(): empty function in both versions, trivial exact match.
106
107 tx_tch_data(): this stub function is supposed to return a pointer,
108 but the original blob does a bare bx lr, returning whatever happens to
109 be in r0 on entry, which is unpredictable as the function takes no
110 arguments. The reconstructed version returns NULL.
111
112 Strings and literals after the functions: manually verified to be an
113 exact match.
114
115 .bss section: the original blob contains these defunct uninitialized
116 data objects: BACK_queue, DLL1_queue, L1C1_queue, RRM1_queue, pool_52,
117 pool_100, pool_400, pool_1600, and a static variable i in
118 layer_1_sync_HISR_entry() related to the bogon mentioned above. These
119 global data objects are not referenced from anywhere else in the
120 firmware and the link succeeds without them being present, hence they
121 have been omitted from the reconstruction. The rest is an exact match.
86 122
87 l1_dyn_dwl_func.obj: 123 l1_dyn_dwl_func.obj:
88 124
89 The LoCosto version uses a function (implemented in l1_func.c in 125 The LoCosto version uses a function (implemented in l1_func.c in
90 the LoCosto code) named l1_memcpy_16bit() to download patch bits 126 the LoCosto code) named l1_memcpy_16bit() to download patch bits