【发布时间】:2015-10-23 01:28:50
【问题描述】:
我知道手臂复位向量可以是低(0x00000000)或高(0xffff0000)。 但是一些 SoC 在 linux 内核中的代码说重置向量是可以改变的。
例如,在 mach-imx 中
static int __cpuinit imx_boot_secondary(unsigned int cpu, struct task_struct *idle)
{
imx_set_cpu_jump(cpu, v7_secondary_startup);
imx_enable_cpu(cpu, true);
return 0;
}
void imx_set_cpu_jump(int cpu, void *jump_addr)
{
cpu = cpu_logical_map(cpu);
writel_relaxed(virt_to_phys(jump_addr),
src_base + SRC_GPR1 + cpu * 8);
}
他们说辅助 cpu 可以通过 jump_addr 跳转到您想要的位置。
你能告诉我它是如何工作的吗?
【问题讨论】:
标签: c linux-kernel arm smp soc