1d710aa31STomasz Figa/* 2d710aa31STomasz Figa * Copyright (c) 2013 Samsung Electronics Co., Ltd. 3d710aa31STomasz Figa * http://www.samsung.com 4d710aa31STomasz Figa * 5d710aa31STomasz Figa * Exynos low-level resume code 6d710aa31STomasz Figa * 7d710aa31STomasz Figa * This program is free software; you can redistribute it and/or modify 8d710aa31STomasz Figa * it under the terms of the GNU General Public License as published by 9d710aa31STomasz Figa * the Free Software Foundation; either version 2 of the License, or 10d710aa31STomasz Figa * (at your option) any later version. 11d710aa31STomasz Figa * 12d710aa31STomasz Figa * This program is distributed in the hope that it will be useful, 13d710aa31STomasz Figa * but WITHOUT ANY WARRANTY; without even the implied warranty of 14d710aa31STomasz Figa * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15d710aa31STomasz Figa * GNU General Public License for more details. 16d710aa31STomasz Figa */ 17d710aa31STomasz Figa 18d710aa31STomasz Figa#include <linux/linkage.h> 19d710aa31STomasz Figa 20d710aa31STomasz Figa#define CPU_MASK 0xff0ffff0 21d710aa31STomasz Figa#define CPU_CORTEX_A9 0x410fc090 22d710aa31STomasz Figa 23d710aa31STomasz Figa /* 24d710aa31STomasz Figa * The following code is located into the .data section. This is to 25d710aa31STomasz Figa * allow l2x0_regs_phys to be accessed with a relative load while we 26d710aa31STomasz Figa * can't rely on any MMU translation. We could have put l2x0_regs_phys 27d710aa31STomasz Figa * in the .text section as well, but some setups might insist on it to 28d710aa31STomasz Figa * be truly read-only. (Reference from: arch/arm/kernel/sleep.S) 29d710aa31STomasz Figa */ 30d710aa31STomasz Figa .data 31d710aa31STomasz Figa .align 32d710aa31STomasz Figa 33d710aa31STomasz Figa /* 34d710aa31STomasz Figa * sleep magic, to allow the bootloader to check for an valid 35d710aa31STomasz Figa * image to resume to. Must be the first word before the 36d710aa31STomasz Figa * exynos_cpu_resume entry. 37d710aa31STomasz Figa */ 38d710aa31STomasz Figa 39d710aa31STomasz Figa .word 0x2bedf00d 40d710aa31STomasz Figa 41d710aa31STomasz Figa /* 42d710aa31STomasz Figa * exynos_cpu_resume 43d710aa31STomasz Figa * 44d710aa31STomasz Figa * resume code entry for bootloader to call 45d710aa31STomasz Figa */ 46d710aa31STomasz Figa 47d710aa31STomasz FigaENTRY(exynos_cpu_resume) 48d710aa31STomasz Figa#ifdef CONFIG_CACHE_L2X0 49d710aa31STomasz Figa mrc p15, 0, r0, c0, c0, 0 50d710aa31STomasz Figa ldr r1, =CPU_MASK 51d710aa31STomasz Figa and r0, r0, r1 52d710aa31STomasz Figa ldr r1, =CPU_CORTEX_A9 53d710aa31STomasz Figa cmp r0, r1 54*25a9ef63SRussell King bleq l2c310_early_resume 55d710aa31STomasz Figa#endif 56d710aa31STomasz Figa b cpu_resume 57d710aa31STomasz FigaENDPROC(exynos_cpu_resume) 58