在arm板的android linux内核中,如何控制DT_MACHINE_START
高通芯片组8974的一个板文件中有一个DT_MACHINE_START宏。在arm板的android linux内核中,如何控制DT_MACHINE_START,android,linux-kernel,arm,boot,Android,Linux Kernel,Arm,Boot,高通芯片组8974的一个板文件中有一个DT_MACHINE_START宏。 我的问题是,该控件如何到达这台机器的START as“.init_MACHINE”正在被调用。Linux内核使用section magic和链接器脚本创建一个数组,引导加载程序必须将密钥MSM8974_DT传递给Linux。LinuxInit代码查找机器结构,并在初始化期间的适当时间调用这些函数指针。有关呼叫位置,请参阅 请参见类似内容:。当前文件具有定义,并具有链接器部分.init.arch.info 如何将控制权交给
我的问题是,该控件如何到达这台机器的START as“.init_MACHINE”正在被调用。Linux内核使用section magic和链接器脚本创建一个数组,引导加载程序必须将密钥MSM8974_DT传递给Linux。LinuxInit代码查找机器结构,并在初始化期间的适当时间调用这些函数指针。有关呼叫位置,请参阅 请参见类似内容:。当前文件具有定义,并具有链接器部分
.init.arch.info
如何将控制权交给机器启动的“.init_机器”
此调用来自当前Linux源代码中的
`DT_MACHINE_START(MSM8974_DT, "Qualcomm MSM 8974 (Flattened Device Tree)")
.map_io = msm8974_map_io,
.init_irq = msm_dt_init_irq,
.init_machine = msm8974_init,
.handle_irq = gic_handle_irq,
.timer = &msm_dt_timer,
.dt_compat = msm8974_dt_match,
.reserve = msm_8974_reserve,
.init_very_early = msm8974_init_very_early,
.restart = msm_restart,
.smp = &msm8974_smp_ops,
MACHINE_END`
结构指针machine_desc
在前面的init代码中匹配,如上所述
static int __init customize_machine(void)
{
/*
* customizes platform devices, or adds new ones
* On DT based machines, we fall back to populating the
* machine from the device tree, if no callback is provided,
* otherwise we would always need an init_machine callback.
*/
of_iommu_init();
if (machine_desc->init_machine)
machine_desc->init_machine(); /** HERE - calls your routine **/
#ifdef CONFIG_OF
else
of_platform_populate(NULL, of_default_bus_match_table,
NULL, NULL);
#endif
return 0;
}