]> git.baikalelectronics.ru Git - uboot.git/commit
microblaze: exception: fix delay slot exception handling
authorOvidiu Panait <ovidiu.panait@windriver.com>
Sun, 13 Feb 2022 08:09:21 +0000 (10:09 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 15 Feb 2022 12:11:43 +0000 (13:11 +0100)
commit99c30309a11a6d8a3887f04cdea5f7c8510c71f9
tree2b4ad6f282b1d949665ef4e433b0b077e293c3ca
parent30a7e833a195951ed5a083906a61728ee3863015
microblaze: exception: fix delay slot exception handling

The switch statement in _hw_exception_handler() only covers the
rightmost 5 bits that encode the exception cause:
switch (state & 0x1f)
{
...
}

For this reason, the "0x1000" case will never be reached, because the 13th
bit was zeroed out. To fix this, move delay slot exception handling before
the switch statement (delay slot (DS) bit in Exception Status Register is
independent of the exception cause (EC)).

Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
Link: https://lore.kernel.org/r/20220213080925.1548411-3-ovidiu.panait@windriver.com
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/microblaze/cpu/exception.c