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_vcpu_fault.h>
8
9#include "fault.h"
10
11seL4_Word get_vcpu_fault_address(vm_vcpu_t *vcpu)
12{
13    fault_t *fault = vcpu->vcpu_arch.fault;
14    return fault->addr;
15}
16
17seL4_Word get_vcpu_fault_ip(vm_vcpu_t *vcpu)
18{
19    fault_t *fault = vcpu->vcpu_arch.fault;
20    return fault->ip;
21}
22
23seL4_Word get_vcpu_fault_data(vm_vcpu_t *vcpu)
24{
25    fault_t *fault = vcpu->vcpu_arch.fault;
26    return fault_get_data(fault);
27}
28
29seL4_Word get_vcpu_fault_data_mask(vm_vcpu_t *vcpu)
30{
31    fault_t *fault = vcpu->vcpu_arch.fault;
32    return fault_get_data_mask(fault);
33}
34
35size_t get_vcpu_fault_size(vm_vcpu_t *vcpu)
36{
37    fault_t *fault = vcpu->vcpu_arch.fault;
38    return fault_get_width_size(fault);
39}
40
41bool is_vcpu_read_fault(vm_vcpu_t *vcpu)
42{
43    fault_t *fault = vcpu->vcpu_arch.fault;
44    return fault_is_read(fault);
45}
46
47int set_vcpu_fault_data(vm_vcpu_t *vcpu, seL4_Word data)
48{
49    fault_t *fault = vcpu->vcpu_arch.fault;
50    fault_set_data(fault, data);
51    return 0;
52}
53
54void advance_vcpu_fault(vm_vcpu_t *vcpu)
55{
56    advance_fault(vcpu->vcpu_arch.fault);
57    return;
58}
59
60void restart_vcpu_fault(vm_vcpu_t *vcpu)
61{
62    restart_fault(vcpu->vcpu_arch.fault);
63    return;
64}
65