arm: s5p4418: fix relocation of vectors

The header (NSIH) used for the s5p4418-SoC is not loaded into RAM by the
2nd-bootloader, see boot0.h. Therefore, use an adapted version of
relocate_vectors which relocates the vectors after the header (at _start)
instead of the 'dummy'-vectors at the start of the header (at
__image_copy_start).

Signed-off-by: Stefan Bosch <stefan_b@posteo.net>
Reviewed-by: Minkyu Kang <mk7.kang@samsung.com>
This commit is contained in:
Stefan Bosch 2024-01-26 12:50:56 +00:00 committed by Tom Rini
parent d819250c2a
commit 934dec0af0
2 changed files with 27 additions and 0 deletions

View File

@ -2,5 +2,8 @@
#
# (C) Copyright 2016 Nexell
# Hyunseok, Jung <hsjung@nexell.co.kr>
#
# Copyright (C) 2023 Stefan Bosch <stefan_b@posteo.net>
obj-y += cpu.o
obj-y += relocate.o

View File

@ -0,0 +1,24 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* relocate - S5P4418 specific relocation for ARM U-Boot
*
* Copyright (c) 2013 Albert ARIBAUD <albert.u.boot@aribaud.net>
* Copyright (C) 2023 Stefan Bosch <stefan_b@posteo.net>
*/
#include <asm-offsets.h>
#include <asm/assembler.h>
#include <linux/linkage.h>
ENTRY(relocate_vectors)
/*
* The s5p4418 SoC has the security extensions, so use VBAR to relocate
* the exception vectors.
*/
ldr r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */
add r0, #0x400 /* vectors are after NSIH + 0x200 */
mcr p15, 0, r0, c12, c0, 0 /* Set VBAR */
ret lr
ENDPROC(relocate_vectors)