如何在uboot中找到lowlevel_init()调用的s_init()的实现

how to find the implementation of s_init() which called by lowlevel_init() in uboot

在u-boot-2017.05-rc3\arch\arm\cpu\armv8\lowlevel_init.S

lowlevel_init() 调用函数 s_init()

但是我在项目中找不到 s_init() 函数的实现

我在所有项目中都有"grep -nirs s_init .",但是没有s_init关于armv8的实现。

这里有一些代码:/* * 调用最早期的 init 函数。这应该只做 * 绝对最低限度的开始。它不应该: * * - 设置 DRAM * - 使用 global_data * - 清除 BSS * - 尝试启动控制台 * * 对于带有 SPL 的板,这应该是空的,因为 SPL 可以在SPL board_init_f() 函数,此后立即调用 *。 */ bl s_init

对于 ARMv7,arch/arm/cpu/armv7/lowlevel_init.S

中存在 s_init() 的弱实现
.pushsection .text.s_init, "ax"
WEAK(s_init)
        bx      lr
ENDPROC(s_init)
.popsection

几个板重新实现了这个功能。

arch/arm/cpu/armv8/Makefile 有这一行:

obj-$(CONFIG_ARCH_SUNXI) += lowlevel_init.o

所以这个模块是专为SUNXI板子打造的。 s_init() 在 arch/arm/mach-sunxi/board.c.

中实现