Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/arm64/mp_machdep.c
Show First 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | |||||
#include <vm/vm.h> | #include <vm/vm.h> | ||||
#include <vm/pmap.h> | #include <vm/pmap.h> | ||||
#include <vm/vm_extern.h> | #include <vm/vm_extern.h> | ||||
#include <vm/vm_kern.h> | #include <vm/vm_kern.h> | ||||
#include <vm/vm_map.h> | #include <vm/vm_map.h> | ||||
#include <machine/machdep.h> | #include <machine/machdep.h> | ||||
#include <machine/cpu.h> | |||||
#include <machine/debug_monitor.h> | #include <machine/debug_monitor.h> | ||||
#include <machine/intr.h> | #include <machine/intr.h> | ||||
#include <machine/smp.h> | #include <machine/smp.h> | ||||
#ifdef VFP | #ifdef VFP | ||||
#include <machine/vfp.h> | #include <machine/vfp.h> | ||||
#endif | #endif | ||||
#ifdef DEV_ACPI | #ifdef DEV_ACPI | ||||
▲ Show 20 Lines • Show All 133 Lines • ▼ Show 20 Lines | |||||
SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, release_aps, NULL); | SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, release_aps, NULL); | ||||
void | void | ||||
init_secondary(uint64_t cpu) | init_secondary(uint64_t cpu) | ||||
{ | { | ||||
struct pcpu *pcpup; | struct pcpu *pcpup; | ||||
pmap_t pmap0; | pmap_t pmap0; | ||||
u_int mpidr; | u_int mpidr; | ||||
ptrauth_mp_start(cpu); | |||||
/* | /* | ||||
* Verify that the value passed in 'cpu' argument (aka context_id) is | * Verify that the value passed in 'cpu' argument (aka context_id) is | ||||
* valid. Some older U-Boot based PSCI implementations are buggy, | * valid. Some older U-Boot based PSCI implementations are buggy, | ||||
* they can pass random value in it. | * they can pass random value in it. | ||||
*/ | */ | ||||
mpidr = READ_SPECIALREG(mpidr_el1) & CPU_AFF_MASK; | mpidr = READ_SPECIALREG(mpidr_el1) & CPU_AFF_MASK; | ||||
if (cpu >= MAXCPU || __pcpu[cpu].pc_mpidr != mpidr) { | if (cpu >= MAXCPU || __pcpu[cpu].pc_mpidr != mpidr) { | ||||
▲ Show 20 Lines • Show All 715 Lines • Show Last 20 Lines |