[PATCH v2 6/6] armv8: Fix and simplify branch_if_master/branch_if_slave

Tom Rini trini at konsulko.com
Wed Mar 2 23:41:38 CET 2022


On Fri, Feb 11, 2022 at 11:29:39AM +0000, Andre Przywara wrote:

> The branch_if_master macro jumps to a label if the CPU is the "master"
> core, which we define as having all affinity levels set to 0. To check
> for this condition, we need to mask off some bits from the MPIDR
> register, then compare the remaining register value against zero.
> 
> The implementation of this was slighly broken (it preserved the upper
> RES0 bits), overly complicated and hard to understand, especially since
> it lacked comments. The same was true for the very similar
> branch_if_slave macro.
> 
> Use a much shorter assembly sequence for those checks, use the same
> masking for both macros (just negate the final branch), and put some
> comments on them, to make it clear what the code does.
> This allows to drop the second temporary register for branch_if_master,
> so we adjust all call sites as well.
> 
> Also use the opportunity to remove a misleading comment: the macro
> works fine on SoCs with multiple clusters. Judging by the commit
> message, the original problem with the Juno SoC stems from the fact that
> the master CPU *can* be configured to be from cluster 1, so the
> assumption that the master CPU has all affinity values set to 0 does not
> hold there. But this is already mentioned above in a comment, so remove
> the extra comment.
> 
> Signed-off-by: Andre Przywara <andre.przywara at arm.com>

Applied to u-boot/next, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20220302/43e943ac/attachment.sig>


More information about the U-Boot mailing list