Description
Originally posted by @marc-hb in #9021 (comment)
Same, previously seen disassembly difference in https://github.com/thesofproject/sof/actions/runs/8630426621?pr=9021 already observed in #8863
--- win/build-sof-staging/sof-info/imx8x/zephyr.lst 2024-04-10 19:30:27
+++ lin/build-sof-staging/sof-info/imx8x/zephyr.lst 2024-04-04 09:12:34
@@ -81134,6 +81134,12 @@
92433b10: 833441 l32r a4, 924147e0 <_stext+0x1598> (92413034 <s_lpuartClock>)
92433b13: a03340 addx4 a3, a3, a4
92433b16: 03a8 l32i.n a10, a3, 0
+ * @param name Which clock to enable, see \ref clock_ip_name_t.
+ * @return true for success, false for failure.
+ */
+static inline bool CLOCK_EnableClock(clock_ip_name_t name)
+{
+ return CLOCK_EnableClockExt(name, 0);
92433b18: 31e9 s32i.n a14, a1, 12
92433b1a: 00a0b2 movi a11, 0
92433b1d: ffcfa5 call8 92433818 <CLOCK_EnableClockExt>
from your experience, do you happen to know what would cause differences between windows and linux builds?
I downloaded the files, did some inspection, jogged my memory and searched archives and I think I may have found something... Do you have any ..
in some #include
paths by any chance? We could have a situation similar to these:
- audio: crossover: crossover code refactor #8587 (comment)
- zephyr/CMakeLists.txt: remove '..' in include paths #7428
So the inline C code seems correct in both cases, but for some reason the same zephyr-sdk/xtensa-...-objdump -S
is "not as good" when running on Windows and can't find the source of the inline function CLOCK_EnableClock() when disassembling LPUART_Init()... even though both Linux and Windows find that same source earlier in the binary when disassembling mcux_ccm_on()!
There's one notable difference here: mcux_ccm_on() is located in Zephyr whereas LPUART_Init() is located in modules/hal/nxp! Which is why I'm suspecting #include
paths?
I think the simple reason it is appearing now is because you're now enabling some lpuart
in this commit.