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:
parent
c7efdbe04a
commit
05a914b6fc
7 changed files with 10 additions and 2 deletions
|
|
@ -56,6 +56,7 @@
|
|||
enum {
|
||||
seL4_VMFault_IP,
|
||||
seL4_VMFault_Addr,
|
||||
seL4_VMFault_PrefetchFault,
|
||||
seL4_VMFault_FSR,
|
||||
seL4_VMFault_Length,
|
||||
} seL4_VMFault_Msg;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@
|
|||
enum {
|
||||
seL4_VMFault_IP,
|
||||
seL4_VMFault_Addr,
|
||||
seL4_VMFault_PrefetchFault,
|
||||
seL4_VMFault_FSR,
|
||||
seL4_VMFault_Length,
|
||||
} seL4_VMFault_Msg;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue