1/* 2 * Copyright 2019, Data61, CSIRO (ABN 41 687 119 230) 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include <sel4vm/guest_vm.h> 8#include <sel4vm/guest_ram.h> 9 10#include "virtio_emul_helpers.h" 11 12static int read_guest_mem(vm_t *vm, uintptr_t phys, void *vaddr, size_t size, size_t offset, void *cookie) 13{ 14 /* Copy memory from the guest (vaddr) to our given memory destination (cookie) */ 15 memcpy(cookie + offset, vaddr, size); 16 return 0; 17} 18 19static int write_guest_mem(vm_t *vm, uintptr_t phys, void *vaddr, size_t size, size_t offset, void *cookie) 20{ 21 /* Copy memory to our guest (vaddr) from our given memory location (cookie) */ 22 memcpy(vaddr, cookie + offset, size); 23 return 0; 24} 25 26int vm_guest_write_mem(vm_t *vm, void *data, uintptr_t address, size_t size) 27{ 28 return vm_ram_touch(vm, address, size, write_guest_mem, data); 29} 30 31int vm_guest_read_mem(vm_t *vm, void *data, uintptr_t address, size_t size) 32{ 33 return vm_ram_touch(vm, address, size, read_guest_mem, data); 34} 35