| /* 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) |
| * |
| */ |
| #include <asm/asm.h> |
| #include <linux/linkage.h> |
| |
| .text |
| |
| SYM_CODE_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 |
| SYM_CODE_END(purgatory_start) |
| |
| .align 4 |
| .rept 256 |
| .quad 0 |
| .endr |
| .Lstack: |
| |
| .data |
| |
| .align LGREG |
| SYM_DATA(riscv_kernel_entry, .quad 0) |
| |
| .end |