/seL4-test-master/projects/sel4_projects_libs/libsel4vm/src/arch/arm/ |
H A D | guest_vcpu_fault_arch.c | 9 #include "fault.h" 13 fault_t *fault = vcpu->vcpu_arch.fault; local 14 return fault->addr; 19 fault_t *fault = vcpu->vcpu_arch.fault; local 20 return fault->ip; 25 fault_t *fault = vcpu->vcpu_arch.fault; local 26 return fault_get_data(fault); 31 fault_t *fault = vcpu->vcpu_arch.fault; local 37 fault_t *fault = vcpu->vcpu_arch.fault; local 43 fault_t *fault = vcpu->vcpu_arch.fault; local 49 fault_t *fault = vcpu->vcpu_arch.fault; local [all...] |
H A D | mem_abort.c | 17 #include "fault.h" 20 static int unhandled_memory_fault(vm_t *vm, vm_vcpu_t *vcpu, fault_t *fault) argument 22 uintptr_t addr = fault_get_address(fault); 23 size_t fault_size = fault_get_width_size(fault); 30 restart_fault(fault); 33 return ignore_fault(fault); 35 print_fault(fault); 36 abandon_fault(fault); 44 int handle_page_fault(vm_t *vm, vm_vcpu_t *vcpu, fault_t *fault) argument 47 uintptr_t addr = fault_get_address(fault); 85 fault_t *fault; local [all...] |
H A D | fault.h | 15 typedef struct fault fault_t; 34 * Data structure representating a fault 36 struct fault { struct 37 /// The vcpu associated with the fault 41 /// VM registers at the time of the fault 44 /// The IPA address of the fault 46 /// The IPA address of the fault at the current stage 48 /// The IPA of the instruction which caused the fault 54 /// type of fault 56 /// For multiple str/ldr and 32 bit access, the fault i [all...] |
H A D | fault.c | 11 #include "fault.h" 240 /* Save processor mode in fault struct */ 269 fault_t *fault; local 271 fault = (fault_t *)calloc(1, sizeof(*fault)); 272 if (fault != NULL) { 273 fault->vcpu = vcpu; 275 err = vka_cspace_alloc_path(vcpu->vm->vka, &fault->reply_cap); 277 free(fault); 278 fault 284 new_vcpu_fault(fault_t *fault, uint32_t hsr) argument 302 new_memory_fault(fault_t *fault) argument 354 abandon_fault(fault_t *fault) argument 363 restart_fault(fault_t *fault) argument 376 ignore_fault(fault_t *fault) argument 396 advance_fault(fault_t *fault) argument 452 print_fault(fault_t *fault) argument 627 fault_get_width_size(fault_t *fault) argument [all...] |
H A D | guest_arm_context.c | 12 #include "fault.h" 16 if (!fault_handled(vcpu->vcpu_arch.fault)) { 17 /* If we are in a fault set its context directly as this will be 19 fault_set_ctx(vcpu->vcpu_arch.fault, &context); 35 if (!fault_handled(vcpu->vcpu_arch.fault)) { 36 /* If we are in a fault use and modify its cached context */ 38 regs = fault_get_ctx(vcpu->vcpu_arch.fault); 60 if (!fault_handled(vcpu->vcpu_arch.fault)) { 61 /* If we are in a fault use its cached context */ 63 regs = fault_get_ctx(vcpu->vcpu_arch.fault); [all...] |
H A D | vm.c | 25 #include "fault.h" 128 printf("======= Unhandled VCPU fault from [%s] =======\n", vcpu->vm->vm_name); 140 fault_t *fault; local 141 fault = vcpu->vcpu_arch.fault; 144 /* Pass the vcpu fault to library user in case they can handle it */ 145 err = new_vcpu_fault(fault, hsr); 147 ZF_LOGE("Failed to create new fault"); 162 ZF_LOGE("Unknown fault from [%s]", vcpu->vm->vm_name); 208 ZF_LOGE("Failed to register fault callbac [all...] |
H A D | boot.c | 27 #include "fault.h" 82 /* Copy it to the cspace of the VM for fault IPC */ 102 vcpu->vcpu_arch.fault = fault_init(vcpu); 103 assert(vcpu->vcpu_arch.fault);
|
/seL4-test-master/projects/sel4_projects_libs/libsel4vm/arch_include/arm/sel4vm/arch/ |
H A D | guest_vm_arch.h | 17 typedef struct fault fault_t; 31 * @param {fault_t *} fault Current VCPU fault 33 * @param {void *} unhandled_vcpu_callback_cookie A cookie to supply to the vcpu fault handler 36 fault_t *fault; member in struct:vm_vcpu_arch 46 * @param {void *} A cookie to supply to the vcpu fault handler
|
/seL4-test-master/projects/sel4_projects_libs/libsel4vm/src/sel4_arch/arm_hyp/ |
H A D | fault.c | 12 #include "fault.h" 78 * Returns a seL4_VCPUReg if the fault affects a banked register. Otherwise 79 * seL4_VCPUReg_Num is returned. It uses the fault to look up what mode the 159 void fault_print_data(fault_t *fault) argument 162 data = fault_get_data(fault) & fault_get_data_mask(fault); 163 switch (fault_get_width(fault)) {
|
/seL4-test-master/projects/seL4_libs/libsel4utils/src/ |
H A D | thread.c | 233 seL4_Fault_t fault = seL4_getFault(tag); local 235 switch (seL4_Fault_get_seL4_FaultType(fault)) { 242 seL4_Fault_VMFault_get_PrefetchFault(fault) ? "prefetch fault" : "fault", 243 (void *)seL4_Fault_VMFault_get_IP(fault), 244 (void *)seL4_Fault_VMFault_get_Addr(fault), 245 (void *)seL4_Fault_VMFault_get_FSR(fault), 254 seL4_Fault_UnknownSyscall_get_Syscall(fault), 255 (void *) seL4_Fault_UnknownSyscall_get_FaultIP(fault), [all...] |
/seL4-test-master/projects/sel4_projects_libs/libsel4vm/src/sel4_arch/aarch64/ |
H A D | fault.c | 10 #include "fault.h" 133 void fault_print_data(fault_t *fault) argument 136 data = fault_get_data(fault) & fault_get_data_mask(fault); 137 switch (fault_get_width(fault)) {
|
/seL4-test-master/projects/sel4_projects_libs/libsel4vm/src/arch/arm/vgic/ |
H A D | vgic.c | 56 #include "../fault.h" 637 fault_t *fault = vcpu->vcpu_arch.fault; local 640 int offset = fault_get_address(fault) - d->pstart; 773 err = ignore_fault(fault); 776 uint32_t mask = fault_get_data_mask(fault); 777 fault_set_data(fault, reg & mask); 778 err = advance_fault(fault); 792 fault_t *fault = vcpu->vcpu_arch.fault; local [all...] |
/seL4-test-master/projects/sel4_projects_libs/libsel4vm/src/arch/x86/ |
H A D | vm.c | 98 /* The interrupt state is a subset of the fault state */ 147 int fault; local 154 fault = seL4_VMEnter(&badge); 157 if (fault == SEL4_VMENTER_RESULT_FAULT) { 158 /* We in a fault */ 160 /* Update the guest state from a fault */ 167 /* update the guest state from a non fault */ 176 fault = SEL4_VMENTER_RESULT_NOTIF; 179 if (fault == SEL4_VMENTER_RESULT_NOTIF) {
|
/seL4-test-master/kernel/src/api/ |
H A D | faults.c | 120 seL4_Fault_t fault = receiver->tcbFault; local 122 switch (seL4_Fault_get_seL4_FaultType(fault)) { 143 if (seL4_Fault_DebugException_get_exceptionReason(fault) != seL4_SingleStep) { 187 return Arch_handleFaultReply(receiver, sender, seL4_Fault_get_seL4_FaultType(fault));
|
/seL4-test-master/kernel/manual/parts/ |
H A D | threads.tex | 304 The standard exception handler is used when a fault is triggered by a thread 306 thread raises a fault due to an unmapped virtual memory page, the thread cannot 308 fault that would trigger the standard exception handler while it is set to a 312 should be trusted not to fault at all. 322 timeout fault handler, a fault will not be raised and the thread will continue 327 not have a timeout fault handler, servers may, allowing single-threaded, 330 completing the request. Timeout fault handlers can access server reply objects 335 available budget returned, another timeout fault will be generated if the 336 nested server also has a timeout fault handle [all...] |
H A D | io.tex | 137 \obj{IOSpace} and \obj{VSpace} fault handling differ significantly. 143 aborted; the device driver must correct the cause of the fault and retry 204 SMMU fault. Faults are reported through registers in the SMMU that can be 218 SMMU fault handling and also perform explicit TLB maintenance. 239 SMMU fault handling is delegated to user level via invocations that allow fault 241 SMMU fault interrupts can be handled the same as other platform level interrupts. 352 software should use the fault handling mechanisms to resolve them. 447 \label{sec:smmuv2-fault-handling} 453 \item Invalid context fault [all...] |
H A D | vspace.tex | 338 See \autoref{sec:vm-fault}.
|
H A D | objects.tex | 172 \obj{Endpoint} or \obj{Notification} capabilities, raising a fault (see 200 object capabilities, raising a fault (see section \ref{sec:faults}) when
|
/seL4-test-master/kernel/src/kernel/ |
H A D | faulthandler.c | 56 seL4_Fault_t fault = current_fault; local 60 handleDoubleFault(tptr, fault); 109 printf("null fault"); 112 printf("cap fault in %s phase at address %p", 117 printf("vm fault on %s at address %p with status %p", 133 printf("Timeout fault for 0x%x\n", (unsigned int) seL4_Fault_Timeout_get_badge(f)); 137 printf("unknown fault"); 146 /* The second fault, ex2, is stored in the global current_fault */ 152 printf("Found thread has no fault handler while trying to handle:\n");
|
/seL4-test-master/projects/sel4test/apps/sel4test-tests/src/tests/ |
H A D | frames.c | 96 /* Wait for a VM fault originating on the given EP the return the virtual 98 * received was not a VM fault. 113 /* Function that generates a fault. If we're mapped XN we should instruction 114 * fault at the start of the function. If not we should data fault on 0x42. 116 static int fault(seL4_Word arg1, seL4_Word arg2, seL4_Word arg3, seL4_Word arg4) function 147 memcpy(dest, (void *)fault, 100); 152 /* First setup a fault endpoint. 159 /* Then setup the thread that will, itself, fault. */ 170 /* Now a fault handle [all...] |
/seL4-test-master/kernel/libsel4/sel4_arch_include/ia32/sel4/sel4_arch/ |
H A D | syscalls.h | 789 seL4_Word fault; local 794 x86_sys_send_recv(seL4_SysVMEnter, 0, &badge, 0, &fault, &mr0, MCS_COND(0, &mr1)); 800 if (!fault && sender) { 803 return fault;
|
/seL4-test-master/kernel/libsel4/sel4_arch_include/x86_64/sel4/sel4_arch/ |
H A D | syscalls.h | 558 seL4_Word fault; local 565 x64_sys_send_recv(seL4_SysVMEnter, 0, &badge, 0, &fault, &mr0, &mr1, &mr2, &mr3, 0); 571 if (!fault && sender) { 574 return fault;
|
/seL4-test-master/kernel/src/arch/arm/32/kernel/ |
H A D | vspace.c | 1261 word_t addr, fault; local 1267 fault = getHSR() & 0x3ffffff; 1270 fault = getDFSR(); 1275 * We have to test the fault-status bits in the IFSR/DFSR to determine 1281 if (isDebugFault(fault)) { 1286 current_fault = seL4_Fault_VMFault_new(addr, fault, false); 1291 word_t pc, fault; local 1298 fault = getHSR() & 0x3ffffff; 1300 fault = getIFSR(); 1304 if (isDebugFault(fault)) { [all...] |
/seL4-test-master/kernel/src/arch/arm/64/kernel/ |
H A D | vspace.c | 933 word_t addr, fault; local 936 fault = getDFSR(); 944 current_fault = seL4_Fault_VMFault_new(addr, fault, false); 949 word_t pc, fault; local 952 fault = getIFSR(); 959 current_fault = seL4_Fault_VMFault_new(pc, fault, true); 964 fail("Invalid VM fault type");
|
/seL4-test-master/kernel/src/arch/x86/kernel/ |
H A D | vspace.c | 567 uint32_t fault; local 570 fault = getRegister(thread, Error); 574 current_fault = seL4_Fault_VMFault_new(addr, fault, false); 578 current_fault = seL4_Fault_VMFault_new(addr, fault, true); 582 fail("Invalid VM fault type");
|