HomeFreeBSD

[PowerPC] Fix AP bringup on 32-bit AIM SMP

Description

[PowerPC] Fix AP bringup on 32-bit AIM SMP

In r361544, the pmap drivers were converted to ifuncs. When doing so,
this changed the call type of pmap functions to be called via the
secure-plt stubs.

These stubs depend on the TOC base being loaded to r30 to run properly.

On SMP AIM (i.e. a dual processor G4 or running 32-bit on G5), since the
APs were being started up from the reset vector instead of going
through __start, they had never had r30 initialized properly, so when the
cpu_reset code in trap_subr32.S attempted to branch to
pmap_cpu_bootstrap(), it was loading the target from the wrong location.

Ensure r30 is set up directly in the cpu_reset trap code, so we can make
PLT calls as normal.

Fixes boot on my SMP G4.

Reviewed by: jhibbits
MFC after: 3 days
Sponsored by: Tag1 Consulting, Inc.

Details

Provenance
bdragonAuthored on Mar 6 2021, 9:26 PM
Parents
rGcd84c82c6ad7: linux: add support for SO_PEERGROUPS
Branches
Unknown
Tags
Unknown