mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-05 13:24:23 +08:00
736e30af58
This patch adds purgatory, the name and concept have been taken from kexec-tools. Purgatory runs between two kernels, and do verify sha256 hash to ensure the kernel to jump to is fine and has not been corrupted after loading. Makefile is modified based on x86 platform. Signed-off-by: Li Zhengyu <lizhengyu3@huawei.com> Link: https://lore.kernel.org/r/20220408100914.150110-6-lizhengyu3@huawei.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
48 lines
665 B
ArmAsm
48 lines
665 B
ArmAsm
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* purgatory: Runs between two kernels
|
|
*
|
|
* Copyright (C) 2022 Huawei Technologies Co, Ltd.
|
|
*
|
|
* Author: Li Zhengyu (lizhengyu3@huawei.com)
|
|
*
|
|
*/
|
|
|
|
.macro size, sym:req
|
|
.size \sym, . - \sym
|
|
.endm
|
|
|
|
.text
|
|
|
|
.globl purgatory_start
|
|
purgatory_start:
|
|
|
|
lla sp, .Lstack
|
|
mv s0, a0 /* The hartid of the current hart */
|
|
mv s1, a1 /* Phys address of the FDT image */
|
|
|
|
jal purgatory
|
|
|
|
/* Start new image. */
|
|
mv a0, s0
|
|
mv a1, s1
|
|
ld a2, riscv_kernel_entry
|
|
jr a2
|
|
|
|
size purgatory_start
|
|
|
|
.align 4
|
|
.rept 256
|
|
.quad 0
|
|
.endr
|
|
.Lstack:
|
|
|
|
.data
|
|
|
|
.globl riscv_kernel_entry
|
|
riscv_kernel_entry:
|
|
.quad 0
|
|
size riscv_kernel_entry
|
|
|
|
.end
|