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