@numas13 from old repo
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 from old repo
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.
In this example, the initial value of the
%r0register will be lost iflddfails 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.