Delayed state updates #10

Open
opened 2021-07-25 08:14:07 +02:00 by numas13 · 0 comments
Owner

Currently in v5 branch, all checks for operations in a bundle occur in sequential order without any delayed state updates. This means that if any exception occurs, such a bundle will perform a partial state update and the correct recovery from the exception will no longer occur.

{
    addd,0 %r0, 1, %r0      ! update r0
    ldd,2 [ addr ], %r1     ! an exception may occur here
    addd,3 %r2, 1, %r2
}

In this example, the initial value of the %r0 register will be lost if ldd fails due to a page fault.

This behavior wasn't a big problem in user mode emulation, but in system mode it's no longer acceptable.

Currently in v5 branch, all checks for operations in a bundle occur in sequential order without any delayed state updates. This means that if any exception occurs, such a bundle will perform a partial state update and the correct recovery from the exception will no longer occur. ``` { addd,0 %r0, 1, %r0 ! update r0 ldd,2 [ addr ], %r1 ! an exception may occur here addd,3 %r2, 1, %r2 } ``` In this example, the initial value of the `%r0` register will be lost if `ldd` fails due to a page fault. This behavior wasn't a big problem in user mode emulation, but in system mode it's no longer acceptable.
numas13 added the
bug
enhancement
invalid
labels 2021-07-25 08:14:07 +02:00
numas13 added this to the System Emulation project 2021-07-25 08:14:07 +02:00
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: OpenE2K/qemu-e2k#10
No description provided.