static void meson_secondary_set(unsigned int cpu) { meson_set_cpu_ctrl_addr(cpu, (const uint32_t)virt_to_phys(meson_secondary_startup)); meson_set_cpu_ctrl_reg(cpu, 1); smp_wmb(); mb(); }
void meson_cpu_die(unsigned int cpu) { meson_set_cpu_ctrl_reg(cpu, 0); flush_cache_all(); dsb(); dmb(); meson_cleanup(); aml_set_reg32_bits(MESON_CPU_POWER_CTRL_REG,0x3,(cpu << 3),2); asm volatile( "dsb\n" "wfi\n" ); BUG(); }