1/* 2 * Copyright (C) STMicroelectronics 2009 3 * Copyright (C) ST-Ericsson SA 2010 4 * 5 * License Terms: GNU General Public License v2 6 * Based on ARM realview platform 7 * 8 * Author: Sundar Iyer <sundar.iyer@stericsson.com> 9 * 10 */ 11#include <linux/kernel.h> 12#include <linux/errno.h> 13#include <linux/smp.h> 14 15#include <asm/smp_plat.h> 16 17#include "setup.h" 18 19/* 20 * platform-specific code to shutdown a CPU 21 * 22 * Called with IRQs disabled 23 */ 24void __ref ux500_cpu_die(unsigned int cpu) 25{ 26 /* directly enter low power state, skipping secure registers */ 27 for (;;) { 28 __asm__ __volatile__("dsb\n\t" "wfi\n\t" 29 : : : "memory"); 30 if (pen_release == cpu_logical_map(cpu)) { 31 /* 32 * OK, proper wakeup, we're done 33 */ 34 break; 35 } 36 } 37} 38