diff options
| author | Lioncash <mathew1800@gmail.com> | 2018-05-22 10:25:45 -0400 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2018-05-22 10:39:08 -0400 |
| commit | 2ca1ac337040a6dd9f0f1a18a7dbdc2aa027d21f (patch) | |
| tree | 8dde35097def2340f48096c037aae531412fddd9 /Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp | |
| parent | 5ac05725c88a146ff517dc145c07a9f475186256 (diff) | |
Interpreter_Integer: Correct negative overflow handling for divw
Previously, given cases such as 0x80000000 / 0xFFFFFFFF we'd incorrectly
set the destination register value to zero. If the dividend is negative,
then the destination should be set to -1 (0xFFFFFFFF), however if the
dividend is positive, then the destination should be set to 0.
Note that the 750CL documents state that:
"If an attempt is made to perform either of the divisions --
0x80000000 / -1 or <anything> / 0, then the contents of rD are
undefined, as are the contents of the LT, GT, and EQ bits of the CR0
field (if Rc = 1). In this case, if OE = 1 then OV is set."
So this is a particular behavior of the hardware itself.
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp')
0 files changed, 0 insertions, 0 deletions
