Even some more information:
These is a function
word_t Arch_setMRs_fault(tcb_t *sender, tcb_t *receiver, word_t
*receiveIPCBuffer, word_t faultType)
which populate a message and send it to fault handler.
In this function
case seL4_Fault_VCPUFault:
return setMR(receiver, receiveIPCBuffer, seL4_VCPUFault_HSR,
seL4_Fault_VCPUFault_get_hsr(sender->tcbFault));
This is only information that sent to fault handler, but
for seL4_Fault_VMFault it provides nuch more
case seL4_Fault_VMFault: {
if (config_set(CONFIG_ARM_HYPERVISOR_SUPPORT)) {
word_t ipa, va;
va = getRestartPC(sender);
ipa = (addressTranslateS1CPR(va) & ~MASK(PAGE_BITS)) | (va &
MASK(PAGE_BITS));
setMR(receiver, receiveIPCBuffer, seL4_VMFault_IP, ipa);
Just some addition: I have found function
seL4_Fault_VCPUFault_get_HSR(seL4_Fault_t seL4_Fault)
It gives me the value of HSR register, but how can I get fault address and
some other (if exist) information?
Thanks,
---------- Forwarded message ---------
From: Leonid Meyerovich