HomeFreeBSD

[PowerPC] Fix 32-bit ubldr calling convention

Description

[PowerPC] Fix 32-bit ubldr calling convention

Due to the way u-boot for 32-bit powerpc is compiled, the interrupt code
assumes that the GOT pointer (r30) on u-boot is always intact.

When making syscalls to u-boot, ensure that we have restored r30 like we
found it before we enable interrupts to prevent u-boot from crashing if a
timer interrupt was pending.

This fixes ubldr on e500 qemu (assuming you have recompiled qemu's u-boot
with API support!)

Reviewed by: jhibbits
Sponsored by: Tag1 Consulting, Inc.
Differential Revision: https://reviews.freebsd.org/D23258

Details

Provenance
bdragonAuthored on
Reviewer
jhibbits
Differential Revision
D23258: [PowerPC] Fix 32-bit ubldr calling convention
Parents
rS356877: libbe: use the new zfs_mount_at()
Branches
Unknown
Tags
Unknown