我知道手臂复位向量可以是低(0x00000000)或高(0xffff0000)。但是 linux 内核中的一些 SoC 代码说可以更改重置向量。
例如,在 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跳转到你想要的地方。
你能告诉我它是如何工作的吗?