/* * The second CPU is parked in ROM at boot time. It requires waking it after * writing an address into the BOOTADDR register of sysctrl. * * So the default value of the "cpu-release-addr" corresponds to BOOTADDR... * * *However* the BOOTADDR register is not available when the kernel * starts in NONSEC mode. * * So for NONSEC mode, the bootloader re-parks the second CPU into a pen * in SRAM, and changes the "cpu-release-addr" of linux's DT to a SRAM address, * which is not restricted.
*/
staticvoid __init r9a06g032_smp_prepare_cpus(unsignedint max_cpus)
{ struct device_node *dn; int ret = -EINVAL, dns;
u32 bootaddr;
dn = of_get_cpu_node(1, NULL); if (!dn) {
pr_err("CPU#1: missing device tree node\n"); return;
} /* * Determine the address from which the CPU is polling. * The bootloader *does* change this property. * Note: The property can be either 64 or 32 bits, so handle both cases
*/ if (of_find_property(dn, "cpu-release-addr", &dns)) { if (dns == sizeof(u64)) {
u64 temp;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.