Path: blob/master/drivers/firmware/efi/libstub/loongarch-stub.c
26483 views
// SPDX-License-Identifier: GPL-2.01/*2* Author: Yun Liu <[email protected]>3* Huacai Chen <[email protected]>4* Copyright (C) 2020-2022 Loongson Technology Corporation Limited5*/67#include <asm/efi.h>8#include <asm/addrspace.h>9#include "efistub.h"10#include "loongarch-stub.h"1112extern int kernel_asize;13extern int kernel_fsize;14extern int kernel_entry;1516efi_status_t handle_kernel_image(unsigned long *image_addr,17unsigned long *image_size,18unsigned long *reserve_addr,19unsigned long *reserve_size,20efi_loaded_image_t *image,21efi_handle_t image_handle)22{23efi_status_t status;24unsigned long kernel_addr = 0;2526kernel_addr = (unsigned long)image->image_base;2728status = efi_relocate_kernel(&kernel_addr, kernel_fsize, kernel_asize,29EFI_KIMG_PREFERRED_ADDRESS, efi_get_kimg_min_align(), 0x0);3031*image_addr = kernel_addr;32*image_size = kernel_asize;3334return status;35}3637unsigned long kernel_entry_address(unsigned long kernel_addr,38efi_loaded_image_t *image)39{40unsigned long base = (unsigned long)image->image_base;4142return (unsigned long)&kernel_entry - base + kernel_addr;43}444546