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