SELFOUR-1276: set PrefetchFault MR for riscv

This was being tracked in the fault_t, but not set as part of the
message to the user.
This commit is contained in:
Anna Lyons 2018-04-04 09:49:47 +10:00
parent c7efdbe04a
commit 05a914b6fc
7 changed files with 10 additions and 2 deletions

View file

@ -56,6 +56,7 @@
enum {
seL4_VMFault_IP,
seL4_VMFault_Addr,
seL4_VMFault_PrefetchFault,
seL4_VMFault_FSR,
seL4_VMFault_Length,
} seL4_VMFault_Msg;

View file

@ -50,6 +50,7 @@ seL4_getArchFault(seL4_MessageInfo_t tag)
case seL4_Fault_VMFault:
return seL4_Fault_VMFault_new(seL4_GetMR(seL4_VMFault_IP),
seL4_GetMR(seL4_VMFault_Addr),
seL4_GetMR(seL4_VMFault_PrefetchFault),
seL4_GetMR(seL4_VMFault_FSR));
default:
return seL4_Fault_NullFault_new();

View file

@ -21,9 +21,10 @@ base 32
---- Arch-independent object types
block VMFault {
padding 288
padding 256
field IP 32
field Addr 32
field PrefetchFault 32
field FSR 5
padding 8
padding 16

View file

@ -64,6 +64,7 @@
enum {
seL4_VMFault_IP,
seL4_VMFault_Addr,
seL4_VMFault_PrefetchFault,
seL4_VMFault_FSR,
seL4_VMFault_Length,
} seL4_VMFault_Msg;

View file

@ -50,6 +50,7 @@ seL4_getArchFault(seL4_MessageInfo_t tag)
case seL4_Fault_VMFault:
return seL4_Fault_VMFault_new(seL4_GetMR(seL4_VMFault_IP),
seL4_GetMR(seL4_VMFault_Addr),
seL4_GetMR(seL4_VMFault_PrefetchFault),
seL4_GetMR(seL4_VMFault_FSR));
default:
return seL4_Fault_NullFault_new();

View file

@ -21,9 +21,10 @@ base 64
---- Arch-independent object types
block VMFault {
padding 576
padding 512
field IP 64
field Addr 64
field PrefetchFault 64
padding 32
field FSR 5
padding 8

View file

@ -45,6 +45,8 @@ Arch_setMRs_fault(tcb_t *sender, tcb_t* receiver, word_t *receiveIPCBuffer, word
switch (faultType) {
case seL4_Fault_VMFault: {
setMR(receiver, receiveIPCBuffer, seL4_VMFault_IP, getRestartPC(sender));
setMR(receiver, receiveIPCBuffer, seL4_VMFault_PrefetchFault,
seL4_Fault_VMFault_get_instructionFault(sender->tcbFault));
setMR(receiver, receiveIPCBuffer, seL4_VMFault_Addr,
seL4_Fault_VMFault_get_address(sender->tcbFault));
return setMR(receiver, receiveIPCBuffer, seL4_VMFault_FSR,