ARM: Fix issue with with way MPIDR is read to include affinity levels.
The simple_bootloader checks for CPU0 in a manner incompatible with systems actually using affinity levels -- just looking at MPIDR[7:0]. However, in future we may wish to use real affinity levels and this method will be in danger of matching several CPUs with affinity0 = 0. Match affinity2 == affinity1 == affinity0 == 0 instead.
This commit is contained in:
parent
5217d5a451
commit
25c1933ffe
1 changed files with 1 additions and 2 deletions
|
@ -68,8 +68,7 @@ _entry:
|
|||
|
||||
bootldr:
|
||||
mrc p15, 0, r8, c0, c0, 5 // get the MPIDR register
|
||||
uxtb r8, r8 // isolate the lower 8 bits (affinity lvl 1)
|
||||
adds r8, r8, #0 // set flags for branch
|
||||
bics r8, r8, #0xff000000 // isolate the lower 24 bits (affinity levels)
|
||||
bxeq r3 // if it's 0 (CPU 0), branch to kernel
|
||||
mov r8, #1
|
||||
str r8, [r4, #0] // Enable CPU interface on GIC
|
||||
|
|
Loading…
Reference in a new issue