* redistribute, and modify it as specified in the file "V3VEE_LICENSE".
*/
+#include <palacios/vm_guest_mem.h>
-static int pre_config_pc(struct guest_info * info, struct v3_config * config_ptr) {
+static int pre_config_pc_core(struct guest_info * info, v3_cfg_tree_t * cfg) {
- info->cpu_mode = REAL;
info->mem_mode = PHYSICAL_MEM;
return 0;
}
-static int post_config_pc(struct guest_info * info, struct v3_config * config_ptr) {
+static int post_config_pc_core(struct guest_info * info, v3_cfg_tree_t * cfg) {
+
+ v3_print_mem_map(info->vm_info);
+ return 0;
+}
+
+static int post_config_pc(struct v3_vm_info * vm, v3_cfg_tree_t * cfg) {
#define VGABIOS_START 0x000c0000
#define ROMBIOS_START 0x000f0000
{
extern uint8_t v3_vgabios_start[];
extern uint8_t v3_vgabios_end[];
-
- addr_t vgabios_dst = v3_get_shadow_addr(&(info->mem_map.base_region), VGABIOS_START);
- memcpy(V3_VAddr((void *)vgabios_dst), v3_vgabios_start, v3_vgabios_end - v3_vgabios_start);
+ void * vgabios_dst = 0;
+
+ if (v3_gpa_to_hva(&(vm->cores[0]), VGABIOS_START, (addr_t *)&vgabios_dst) == -1) {
+ PrintError("Could not find VGABIOS destination address\n");
+ return -1;
+ }
+
+ memcpy(vgabios_dst, v3_vgabios_start, v3_vgabios_end - v3_vgabios_start);
}
/* layout rombios */
{
extern uint8_t v3_rombios_start[];
extern uint8_t v3_rombios_end[];
+ void * rombios_dst = 0;
+
+ if (v3_gpa_to_hva(&(vm->cores[0]), ROMBIOS_START, (addr_t *)&rombios_dst) == -1) {
+ PrintError("Could not find ROMBIOS destination address\n");
+ return -1;
+ }
- addr_t rombios_dst = v3_get_shadow_addr(&(info->mem_map.base_region), ROMBIOS_START);
- memcpy(V3_VAddr((void *)rombios_dst), v3_rombios_start, v3_rombios_end - v3_rombios_start);
+ memcpy(rombios_dst, v3_rombios_start, v3_rombios_end - v3_rombios_start);
}
- v3_print_mem_map(info);
return 0;
}