mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-05-15 11:26:54 +00:00
Currently for risc-v, only rawimage loader is supported. Change other loaders later. Tracked-On: #8830 Signed-off-by: Yifan Liu <yifan1.liu@intel.com> Reviewed-by: Fei Li <fei1.li@intel.com> Acked-by: Wang Yu1 <yu1.wang@intel.com>
35 lines
798 B
C
35 lines
798 B
C
/*
|
|
* Copyright (C) 2021-2022 Intel Corporation.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <vm.h>
|
|
#include <vboot.h>
|
|
#include <guest_memory.h>
|
|
|
|
/**
|
|
* @pre vm != NULL
|
|
*/
|
|
static void load_rawimage(struct acrn_vm *vm)
|
|
{
|
|
struct sw_kernel_info *sw_kernel = &(vm->sw.kernel_info);
|
|
const struct acrn_vm_config *vm_config = get_vm_config(vm->vm_id);
|
|
uint64_t kernel_load_gpa;
|
|
|
|
/* TODO: GPA 0 load support */
|
|
kernel_load_gpa = vm_config->os_config.kernel_load_addr;
|
|
|
|
/* Copy the guest kernel image to its run-time location */
|
|
(void)copy_to_gpa(vm, sw_kernel->kernel_src_addr, kernel_load_gpa, sw_kernel->kernel_size);
|
|
|
|
sw_kernel->kernel_entry_addr = (void *)vm_config->os_config.kernel_entry_addr;
|
|
}
|
|
|
|
int32_t rawimage_loader(struct acrn_vm *vm)
|
|
{
|
|
load_rawimage(vm);
|
|
|
|
return 0;
|
|
}
|