Branches must be resolved one time to be predicted by the dynamic predictor. To accelerate
cold startup of code, the processor includes a static predictor that detects branches
in the code stream as follows:
- Direct unconditional branches,
B immediate, are predicted taken.
- Direct unconditional call-type branches,
BL immediate and
immediate, are predicted taken, and the preferred return address value is
pushed on the return stack.
- Unconditional return-type
are predicted taken and the target is popped from the return stack.
To avoid potential illegal speculation, the static predictor is disabled when the MMU is