• Mike Frysinger's avatar
    Blackfin arch: add support for working around anomaly 05000312 · 9e83b98a
    Mike Frysinger authored
    Anomaly 05000312 - Errors When SSYNC, CSYNC, or Loads to LT, LB and LC Registers Are Interrupted:
    
    DESCRIPTION:
    When instruction cache is enabled, erroneous behavior may occur when any of the following instructions are interrupted:
    
    . CSYNC
    • SSYNC
    • LCx =
    • LTx = (only when LCx is non-zero)
    • LBx = (only when LCx is non-zero)
    
    When this problem occurs, a variety of incorrect things could happen, including an illegal instruction exception. Additional errors could
    show up as an exception, a hardware error, or an instruction that is valid but different than the one that was expected.
    
    WORKAROUND:
    Place a cli before all SSYNC, CSYNC, "LCx =", "LTx =", and "LBx =" instructions to disable interrupts, and place an sti after each of these
    instructions to re-enable interrupts. When these instructions are executed in code that is already non-interruptible, the problem will not
    occur.
    Signed-off-by: default avatarMike Frysinger <michael.frysinger@analog.com>
    Signed-off-by: default avatarBryan Wu <bryan.wu@analog.com>
    9e83b98a
delay.h 1.35 KB