mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-22 17:52:09 +00:00
This patch adds efistub booting support, which is the standard UEFI boot protocol for LoongArch to use. We use generic efistub, which means we can pass boot information (i.e., system table, memory map, kernel command line, initrd) via a light FDT and drop a lot of non-standard code. We use a flat mapping to map the efi runtime in the kernel's address space. In efi, VA = PA; in kernel, VA = PA + PAGE_OFFSET. As a result, flat mapping is not identity mapping, SetVirtualAddressMap() is still needed for the efi runtime. Tested-by: Xi Ruoyao <xry111@xry111.site> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn> [ardb: change fpic to fpie as suggested by Xi Ruoyao] Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
37 lines
837 B
C
37 lines
837 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) 2020-2022 Loongson Technology Corporation Limited
|
|
*/
|
|
#ifndef _ASM_LOONGARCH_EFI_H
|
|
#define _ASM_LOONGARCH_EFI_H
|
|
|
|
#include <linux/efi.h>
|
|
|
|
void __init efi_init(void);
|
|
void __init efi_runtime_init(void);
|
|
void efifb_setup_from_dmi(struct screen_info *si, const char *opt);
|
|
|
|
#define ARCH_EFI_IRQ_FLAGS_MASK 0x00000004 /* Bit 2: CSR.CRMD.IE */
|
|
|
|
#define arch_efi_call_virt_setup()
|
|
#define arch_efi_call_virt_teardown()
|
|
|
|
#define EFI_ALLOC_ALIGN SZ_64K
|
|
#define EFI_RT_VIRTUAL_OFFSET CSR_DMW0_BASE
|
|
|
|
static inline struct screen_info *alloc_screen_info(void)
|
|
{
|
|
return &screen_info;
|
|
}
|
|
|
|
static inline void free_screen_info(struct screen_info *si)
|
|
{
|
|
}
|
|
|
|
static inline unsigned long efi_get_max_initrd_addr(unsigned long image_addr)
|
|
{
|
|
return ULONG_MAX;
|
|
}
|
|
|
|
#endif /* _ASM_LOONGARCH_EFI_H */
|