History log of /freebsd-current/sys/powerpc/include/spr.h
Revision Date Author Comments
# 2ff63af9 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: one-line .h pattern

Remove /^\s*\*+\s*\$FreeBSD\$.*$\n/


# 4d846d26 10-May-2023 Warner Losh <imp@FreeBSD.org>

spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD

The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch
up to that fact and revert to their recommended match of BSD-2-Clause.

Discussed with: pfg
MFC After: 3 days
Sponsored by: Netflix


# 66b2b71d 29-May-2021 Justin Hibbits <jhibbits@FreeBSD.org>

Wrap the default SPE config in its own #define

No functional change. Cleans up the code a little.


# 0137a09d 29-May-2021 Justin Hibbits <jhibbits@FreeBSD.org>

Clean up spr.h

Remove SPRs for CPUs FreeBSD doesn't run on
Add debug register SPRs from the Freescale EREF


# 6a32dae2 05-Nov-2020 Leandro Lupori <luporl@FreeBSD.org>

Fix powerpc and powerpcspe builds

This change fixes 32-bit PowerPC builds, that r367390 broke
(shift count >= width of type).


# 9fe896ec 05-Nov-2020 Leandro Lupori <luporl@FreeBSD.org>

[PowerPC] Make PPC 970 PMC SPRs the standard ones

And add a _74XX suffix to 74XX SPRs.

This is a preparation for adding support to POWER8/9 PMCs, which have most
SPRs equal to 970 ones.

Reviewed by: jhibbits
Sponsored by: Eldorado Research Institute (eldorado.org.br)
Differential Revision: https://reviews.freebsd.org/D26532


# c16359cf 22-Sep-2020 Brandon Bergren <bdragon@FreeBSD.org>

[PowerPC64LE] powernv ILE setup code.

When running without a hypervisor, we need to set the ILE bit in the LPCR
ourselves.

For the boot processor, handle it in powernv_attach() like we do for other
LPCR bits.

No change for the APs, as they will use the lpcr global to set up their own
LPCR when they do their own cpudep_ap_early_bootstrap() and pick up this
automatically.

Sponsored by: Tag1 Consulting, Inc.


# b64b3133 01-Sep-2020 Mateusz Guzik <mjg@FreeBSD.org>

powerpc: clean up empty lines in .c and .h files


# 8415f755 19-Jun-2020 Brandon Bergren <bdragon@FreeBSD.org>

[PowerPC] Fix booke64 qemu infinite loop in L2 cache enable

Since qemu does not implement the L2 cache, we get stuck forever waiting
for a bit to be set when trying to invalidate it.

To prevent that, we should bail out if the L2 cache is missing.
One easy way to check this is L2CFG0 == 0 (since L2CSIZE always has at
least one bit set in a valid implementation)

(tested on qemu, rb800, and x5000)

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


# 65bbba25 10-May-2020 Justin Hibbits <jhibbits@FreeBSD.org>

powerpc64: Implement Radix MMU for POWER9 CPUs

Summary:
POWER9 supports two MMU formats: traditional hashed page tables, and Radix
page tables, similar to what's presesnt on most other architectures. The
PowerISA also specifies a process table -- a table of page table pointers--
which on the POWER9 is only available with the Radix MMU, so we can take
advantage of it with the Radix MMU driver.

Written by Matt Macy.

Differential Revision: https://reviews.freebsd.org/D19516


# 81962477 10-May-2020 Justin Hibbits <jhibbits@FreeBSD.org>

powerpc: Add a CPU-custom machine check handler

Summary:
Some machine checks are process-recoverable, others are not. Let a
CPU-specific handler decide what to do.

This works around a machine check error hit while building www/firefox
and mail/thunderbird, which would otherwise cause the build to fail.

More work is needed to handle all possible machine check conditions, but
this is sufficient to unblock some ports building.

Differential Revision: https://reviews.freebsd.org/D23731


# 889d304b 17-Mar-2020 Justin Hibbits <jhibbits@FreeBSD.org>

powerpc: Axe PPC4xx support.

Summary:
The support was added almost a decade ago, and never completed. Just axe
it. It was also inadvertently broken 5 years ago, and nobody noticed.

Reviewed by: bdragon
Differential Revision: https://reviews.freebsd.org/D23753


# ab3f2a38 02-Nov-2019 Brandon Bergren <bdragon@FreeBSD.org>

Add support for building Book-E kernels with clang/lld.

This involved several changes:

* Since lld does not like text relocations, replace SMP boot page text relocs
in booke/locore.S with position-independent math, and track the virtual base
in the SMP boot page header.

* As some SPRs are interpreted differently on clang due to the way it handles
platform-specific SPRs, switch m*dear and m*esr mnemonics out for regular
m*spr. Add both forms of SPR_DEAR to spr.h so the correct encoding is selected.

* Change some hardcoded 32 bit things in the boot page to be pointer-sized, and
fix alignment.

* Fix 64-bit build of booke/pmap.c when enabling pmap debugging.

Additionally, I took the opportunity to document how the SMP boot page works.

Approved by: jhibbits (mentor)
Differential Revision: https://reviews.freebsd.org/D21999


# d1d73b0e 27-Apr-2019 Justin Hibbits <jhibbits@FreeBSD.org>

powerpc: Add support for additional FSCR-managed facilities

Add support to enable, save, and restore the following facilities:
* Target Address Register (bctar) -- seemingly just another register to
branch to.
* Event-based branching -- an interrupt-like userspace event handler
subsystem.
* Load-monitored facility -- A facility that allows monitoring a range of
physical memory, and triggering an event on access. Targeted to garbage
collection software features.


# 3eb5d5dd 27-Apr-2019 Justin Hibbits <jhibbits@FreeBSD.org>

powerpc: Add SPR definitions for additional POWER8/POWER9 facilities

This only adds the new SPR definitions and the associated FSCR bits. The
facilities themselves will be added in separate commits.


# 8b7f0d83 27-Apr-2019 Justin Hibbits <jhibbits@FreeBSD.org>

powerpc64: Add the DSCR facility on POWER8 and later

The Data Stream Control Register (DSCR) is privileged on POWER7, but
unprivileged (different register) on POWER8 and later. However, it's now
guarded by a new register, the Facility Status and Control Register, instead of
the MSR like other pre-existing facilities (FPU, Altivec). The FSCR must be
managed explicitly, since it's effectively an extension of the MSR.

Tested by: Brandon Bergren


# f074eff1 26-Apr-2019 Justin Hibbits <jhibbits@FreeBSD.org>

powerpc: Add POWER8NVL definition

The POWER8NVL (POWER8 NVLink) architecturally behaves identically to the
POWER8, with a different PVR identifier. Mark it as such, so it shows up
appropriately to the user.

Reported by: Alexey Kardashevskiy
MFC after: 2 weeks


# 38a6d549 25-Apr-2019 Justin Hibbits <jhibbits@FreeBSD.org>

powerpc: Fix whitespace in SPR header.


# 6b74fa3f 11-Apr-2019 Justin Hibbits <jhibbits@FreeBSD.org>

powerpc64: Increase the nap level on power9 idling

The POWER9 documentation specifies that levels 0-3 are the 'lightest' sleep
level, meaning lowest latency and with no state loss. However, state 3 is
not implemented, and is instead reserved for future chips. This now
properly configures the PSSCR, specifying state 2 as the lowest level to
enter, but request level 0 for quickest sleep level. If the OCC determines
that the CPU can enter states 1 or 2 it will trigger the transition to those
states on demand.

MFC after: 1 week


# 8af4cc4d 22-Mar-2019 Justin Hibbits <jhibbits@FreeBSD.org>

powernv: Add Hypervisor Maintenance Interrupt handler

Attempting to build www/firefox on POWER9 resulted in a HMI exception being
thrown, a fatal trap currently. This is typically caused by timer facility
errors, but examination of the Hypervisor Maintenance Exception Register
(HMER) yielded only that an exception had recovered, with no information of
the actual exception cause.

When an HMI occurs, OPAL_HANDLE_HMI or OPAL_HANDLE_HMI2 must be called to
handle the exception at the firmware level. If the exception is handled, we
can continue.

This adds only the preliminary handler, enough to prevent package building
from panicking. An enhancement in the future is to use the flags returned
by OPAL_HANDLE_HMI2 to print more useful error messages, and log maintenance
events.

Reviewed by: luporl
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D19634


# 289041e2 20-Oct-2018 Justin Hibbits <jhibbits@FreeBSD.org>

powerpcspe: Implement SPE exception handling

The Signal Processing Engine (SPE) found in Freescale e500 cores (and
others) offloads IEEE-754 compliance (NaN, Inf handling, overflow,
underflow) to software, most likely as a means of simplifying the APU
silicon. Some software, like AbiWord, needs full IEEE-754 compliance,
including NaN handling. Implement the necessary bits to enable it.

Differential Revision: https://reviews.freebsd.org/D17446


# b793c8ab 19-Aug-2018 Justin Hibbits <jhibbits@FreeBSD.org>

Sort SPR_SPEFSCR in the SPR list

Also remove duplicate definition of SPR_IBAT0U.


# b99540b6 21-Jun-2018 Justin Hibbits <jhibbits@FreeBSD.org>

Add the rest of the files for r335481

Missed hooking PMCR cpufreq(4) to the build, and adding the SPR to the header.


# ce7b8e55 27-May-2018 Justin Hibbits <jhibbits@FreeBSD.org>

Stop idle threads on power9 in the idle task until an interrupt.

This reduces the CPU cycle wastage on power9, which is SMT4. Any idle
thread that's spinning is simply starving working threads on the same core
of valuable resources.

This can be reduced further by taking more advantage of the PSSCR supported
states, as well as permitting state loss, as is currently done for power8.
The currently implemented stop state is the lowest latency, which may still
consume resources.


# ef6da5e5 19-May-2018 Justin Hibbits <jhibbits@FreeBSD.org>

Add support for the XIVE XICS emulation mode for POWER9 systems

Summary:
POWER9 systems use a new interrupt controller, XIVE, managed through OPAL
firmware calls. The OPAL firmware includes support for emulating the previous
generation XICS presentation layer in addition to a new "XIVE Exploitation"
mode. As a stopgap until we have XIVE exploitation mode, enable XICS emulation
mode so that we at least have an interrupt controller.

Since the CPPR is local to the current CPU, it cannot be updated for APs when
initializing on the BSP. This adds a new function, directly called by the
powernv platform code, to initialize the CPPR on AP bringup.

Reviewed by: nwhitehorn
Differential Revision: https://reviews.freebsd.org/D15492


# 4a11ed71 18-May-2018 Justin Hibbits <jhibbits@FreeBSD.org>

Add SPR_HSRR0/SPR_HSRR1 definitions

Reported by: Mark Millard
Pointy-hat to: jhibbits


# 10d0cdfc 05-May-2018 Justin Hibbits <jhibbits@FreeBSD.org>

Add support for powernv POWER9 MMU initialization

The POWER9 MMU (PowerISA 3.0) is slightly different from current
configurations, using a partition table even for hypervisor mode, and
dropping the SDR1 register. Key off the newly early-enabled CPU features
flags for the new architecture, and configure the MMU appropriately.

The POWER9 MMU ignores the "PSIZ" field in the PTCR, and expects a 64kB
table. As we are enabled for powernv (hypervisor mode, no VMs), only
initialize partition table entry 0, and zero out the rest. The actual
contents of the register are identical to SDR1 from previous architectures.

Along with this, fix a bug in the page table allocation with very large
memory. The table can be allocated on any 256k boundary. The
bootstrap_alloc alignment argument is an int, and with large amounts of
memory passing the size of the table as the alignment will overflow an
integer. Hard-code the alignment at 256k as wider alignment is not
necessary.

Reviewed by: nwhitehorn
Tested by: Breno Leitao
Relnotes: Yes


# 2914706a 19-Apr-2018 Justin Hibbits <jhibbits@FreeBSD.org>

powerpc64: Add DSCR support

Summary:
Powerpc64 has support for a register called Data Stream Control Register
(DSCR), which basically controls how the hardware controls the caching and
prefetch for stream operations.

Since mfdscr and mtdscr are privileged instructions, we need to emulate them,
and
keep the custom DSCR configuration per thread.

The purpose of this feature is to change DSCR depending on the operation, set
to DSCR Default Prefetch Depth to deepest on string operations, as memcpy.

Submitted by: Breno Leitao
Differential Revision: https://reviews.freebsd.org/D15081


# b4b4b176 08-Apr-2018 Justin Hibbits <jhibbits@FreeBSD.org>

Fix typo

Reserved cause is 6, not 5.

Reported by: cem


# ac2605b1 08-Apr-2018 Justin Hibbits <jhibbits@FreeBSD.org>

Powerpc64: Add the facility unavailable trap subsystem

Summary:
This code adds the basic infrastructure for the facility subsystem. A facility
trap is raised when an unavailable instruction is executed. One example is
executing a Hardware Transactional Memory instruction while the MSR[TM] is
disabled. In the past, there was a specific interrupt for it (FP, VEC), but the
new instructions seem to be multiplexed on this facility interrupt.

The root cause of the trap is provided on Facility Status and Control Register
(FSCR) register.

Submitted by: Breno Leitao
Reviewed by: nwhitehorn
Differential Revision: https://reviews.freebsd.org/D14566


# d9dbc210 21-Feb-2018 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Add definition for the PowerPC A2.


# 6d13fd63 21-Feb-2018 Wojciech Macek <wma@FreeBSD.org>

PowerNV: Put processor to power-save state in idle thread

When processor enters power-save state it releases resources shared with other
cpu threads which makes other cores working much faster.

This patch also implements saving and restoring registers that might get
corrupted in power-save state.

Submitted by: Patryk Duda <pdk@semihalf.com>
Obtained from: Semihalf
Reviewed by: jhibbits, nwhitehorn, wma
Sponsored by: IBM, QCM Technologies
Differential revision: https://reviews.freebsd.org/D14330


# 21776ff8 28-Jan-2018 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Remove some unused AIM register declarations that existed to support some
CPUs we have never run on. As a side-effect, removes some #ifdef AIM/#else.


# c0248976 11-Jan-2018 Wojciech Macek <wma@FreeBSD.org>

PowerNV: set LPCR[LPES] correctly

Make sure to set LPCR[LPES] so that external interrupts set SRR0 and SRR1
instead of HSRR0 and HSRR1. Without this, external interrupt handlers would
get the wrong MSR value when executing, causing eventual madness.

Created by: Nathan Whitehorn <nwhitehorn@freebsd.org>
Submitted by: Wojciech Macek <wma@freebsd.org>
Sponsored by: FreeBSD Foundation


# 71e3c308 27-Nov-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

sys/powerpc: further adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.


# d225a2a9 25-Nov-2017 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Definitions for registers and trap types found on new POWER CPUs.

MFC after: 3 weeks


# f6bd9666 29-Oct-2017 Justin Hibbits <jhibbits@FreeBSD.org>

Add P5010/P5010E for completeness


# dc720811 08-Sep-2017 Justin Hibbits <jhibbits@FreeBSD.org>

Add some more PVR and SVR defines

These processors may not be supported yet, but add them for completion.

POWER9 is planned for support. e300 may work (based on 603e core).
P5040/P5021 are similar to P5020, so should work as well. One addition is
needed for P5040, to support the number of LAWs, and will be a separate commit.


# e683c328 17-Mar-2017 Justin Hibbits <jhibbits@FreeBSD.org>

Introduce 64-bit PowerPC Book-E support

Extend the Book-E pmap to support 64-bit operation. Much of this was taken from
Juniper's Junos FreeBSD port. It uses a 3-level page table (page directory
list -- PP2D, page directory, page table), but has gaps in the page directory
list where regions will repeat, due to the design of the PP2D hash (a 20-bit gap
between the two parts of the index). In practice this may not be a problem
given the expanded address space. However, an alternative to this would be to
use a 4-level page table, like Linux, and possibly reduce the available address
space; Linux appears to use a 46-bit address space. Alternatively, a cache of
page directory pointers could be used to keep the overall design as-is, but
remove the gaps in the address space.

This includes a new kernel config for 64-bit QorIQ SoCs, based on MPC85XX, with
the following notes:
* The DPAA driver has not yet been ported to 64-bit so is not included in the
kernel config.
* This has been tested on the AmigaOne X5000, using a MD_ROOT compiled in
(total size kernel+mdroot must be under 64MB).
* This can run both 32-bit and 64-bit processes, and has even been tested to run
a 32-bit init with 64-bit children.

Many thanks to stevek and marcel for getting Juniper's FreeBSD patches open
sourced to be used here, and to stevek for reviewing, and providing some
historical contexts on quirks of the code.

Reviewed by: stevek
Obtained from: Juniper (in part)
MFC after: 2 months
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D9433


# 91722a2f 31-Jan-2017 Justin Hibbits <jhibbits@FreeBSD.org>

Add Book-E Enhanced Debug (E.D) profile debug support

Freescale added the E.D profile to e500mc and derivative cores. From
Freescale's EREF reference manual this is enabled by a bit in HID0 and should
otherwise default to traditional debug. However, none of the Freescale cores
support that bit, and instead always use E.D. This results in kernel panics
using the standard debug on e500mc+ cores.

Enhanced debug allows debugging of interrupts, including critical interrupts,
as it uses a different save/restore registers (srr*). At this time we don't use
this ability, so instead share the core of the debug handler code between both
handlers.

MFC after: 3 weeks


# 6529f950 01-Nov-2016 Justin Hibbits <jhibbits@FreeBSD.org>

Add P1022 and compatible SVR IDs

The eSDHC driver requires these IDs. Missed in r308188.


# dc9b124d 21-Oct-2016 Justin Hibbits <jhibbits@FreeBSD.org>

Create a new MACHINE_ARCH for Freescale PowerPC e500v2

Summary:
The Freescale e500v2 PowerPC core does not use a standard FPU.
Instead, it uses a Signal Processing Engine (SPE)--a DSP-style vector processor
unit, which doubles as a FPU. The PowerPC SPE ABI is incompatible with the
stock powerpc ABI, so a new MACHINE_ARCH was created to deal with this.
Additionaly, the SPE opcodes overlap with Altivec, so these are mutually
exclusive. Taking advantage of this fact, a new file, powerpc/booke/spe.c, was
created with the same function set as in powerpc/powerpc/altivec.c, so it
becomes effectively a drop-in replacement. setjmp/longjmp were modified to save
the upper 32-bits of the now-64-bit GPRs (upper 32-bits are only accessible by
the SPE).

Note: This does _not_ support the SPE in the e500v1, as the e500v1 SPE does not
support double-precision floating point.

Also, without a new MACHINE_ARCH it would be impossible to provide binary
packages which utilize the SPE.

Additionally, no work has been done to support ports, work is needed for this.
This also means no newer gcc can yet be used. However, gcc's powerpc support
has been refactored which would make adding a powerpcspe-freebsd target very
easy.

Test Plan:
This was lightly tested on a RouterBoard RB800 and an AmigaOne A1222
(P1022-based) board, compiled against the new ABI. Base system utilities
(/bin/sh, /bin/ls, etc) still function appropriately, the system is able to boot
multiuser.

Reviewed By: bdrewery, imp
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D5683


# 6035018b 29-Nov-2015 Justin Hibbits <jhibbits@FreeBSD.org>

Print machine check address for Book-E.

Bits in mcsr indicate if the address is valid, and whether it's a physical
address or effective address.

Sponsored by: Alex Perez/Inertial Computing


# dbaeb061 08-Sep-2015 Justin Hibbits <jhibbits@FreeBSD.org>

Add PVR identifier for E6500, from the reference.


# 398973f8 04-Jul-2015 Justin Hibbits <jhibbits@FreeBSD.org>

Add machine check register printing

This will print out the Memory Subsystem Status Register on MPC745x (G4+ class),
and the Machine Check Status Register on Book-E class CPUs, to aid in debugging
machine checks. Other relevant registers, for other CPUs, can be added in the
future.


# 770047f5 06-Jul-2014 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Add a new CPU id for a POWER8 variant.


# 169dd953 31-Jan-2014 Justin Hibbits <jhibbits@FreeBSD.org>

Add hwpmc(4) support for the PowerPC 970 class processors, direct events.
This also fixes asserts on removal of the module for the mpc74xx.

The PowerPC 970 processors have two different types of events: direct events
and indirect events. Thus far only direct events are supported. I included
some documentation in the driver on how indirect events work, but support is
for the future.

MFC after: 1 month


# 4702d987 12-Dec-2013 Justin Hibbits <jhibbits@FreeBSD.org>

Add PMU-based CPU frequency scaling. This method is used on most Titanium
PowerBooks.

MFC after: 1 month


# 5d548e66 17-Sep-2013 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Add POWER7+ and POWER8 to the CPU ID table.

Approved by: re (kib)


# 450f1970 03-Aug-2013 Justin Hibbits <jhibbits@FreeBSD.org>

Remove duplicate definition of SPR MMCR0.

MFC after: 3 days


# 2467c62f 21-Aug-2012 Adrian Chadd <adrian@FreeBSD.org>

On Nintendo Wii CPUs, the mdp value will be garbage. Set it to NULL
so as to not confuse things.

Submitted by: Margarida Gouveia


# 17f4cae4 27-May-2012 Rafal Jaworowski <raj@FreeBSD.org>

Let us manage differences of Book-E PowerPC variations i.e. vendor /
implementation specific vs. the common architecture definition.

Bring PPC4XX defines (PSL, SPR, TLB). Note the new definitions under
BOOKE_PPC4XX are not used in the code yet.

This change set is not supposed to affect existing E500 support, it's just
another reorg step before bringing support for E500mc, E5500 and PPC465.

Obtained from: AppliedMicro, Freescale, Semihalf


# 4f0962fc 25-May-2012 Rafal Jaworowski <raj@FreeBSD.org>

Provide SPR definitions for newer Book-E (E500mc, E5500, PPC465).

Obtained from: Freescale, Semihalf.


# 2ae7b3e4 25-May-2012 Rafal Jaworowski <raj@FreeBSD.org>

Unify SPR defines formatting, no funtional changes.


# 7b25dcca 24-Dec-2011 Justin Hibbits <jhibbits@FreeBSD.org>

Implement hwpmc counting PMC support for PowerPC G4+ (MPC745x/MPC744x).
Sampling is in progress.

Approved by: nwhitehorn (mentor)
MFC after: 9.0-RELEASE


# ebfbeb83 28-May-2011 Marcel Moolenaar <marcel@FreeBSD.org>

o Add system versions for the P4040(E) and P4080(E).
o In bare_probe(), change the logic that determines the maximum
number of processors/cores into a switch statement and take
advantage of the fact that bit 3 of the SVR value indicates
whether we're running on a security enabled version. Since we
don't care about that here, mask the bit. All -E versions
are taken care of automatically.


# df697aa0 26-May-2011 Marcel Moolenaar <marcel@FreeBSD.org>

o Swap the SVR numbers for MPC8533 & MPC8533E
o Add SVR defines for P1011(E), P1020(E), P2010(E) & P2020(E)


# ff30eecf 12-Jan-2011 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Fix handling of NX pages on capable CPUs. Thanks to kib for prodding me
in the right direction.


# 2971d3bb 12-Nov-2010 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Add CPU support code for the IBM Cell Broadband Engine.


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# c3e289e1 12-Jul-2010 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

MFppc64:

Kernel sources for 64-bit PowerPC, along with build-system changes to keep
32-bit kernels compiling (build system changes for 64-bit kernels are
coming later). Existing 32-bit PowerPC kernel configurations must be
updated after this change to specify their architecture.


# 2598954e 03-Mar-2010 Joel Dahl <joel@FreeBSD.org>

The NetBSD Foundation has granted permission to remove clause 3 and 4 from
their software.

Obtained from: NetBSD


# 0b5ac7b6 28-Nov-2009 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

MFC r198212,198378,198427,198428,198723,198724,198725,198731:
SMP support for PowerPC G5 systems.

r198724:
Fix a race in casuword() exposed by csup. casuword() non-atomically
read the current value of its argument before atomically replacing it,
which could occasionally return the wrong value on an SMP system. This
resulted in user mutex operations hanging when using threaded applications.

r198723,198725,198731:
Loop on blocked threads when using ULE scheduler, removing an
XXX MP comment.

r198427:
Add some more paranoia to setting HID registers, and update the AIM
clock routines to work better with SMP.

r198378:
Add SMP support on U3-based G5 systems. While here, correct the
64-bit tlbie function to set the CPU to 64-bit mode correctly.

r198212:
Don't assume that physical addresses are identity mapped. This
allows the second processor on G5 systems to start.


# 999987e5 22-Oct-2009 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Add SMP support on U3-based G5 systems. This does not yet work perfectly:
at least on my Xserve, getting the decrementer and timebase on APs to tick
requires setting up a clock chip over I2C, which is not yet done.

While here, correct the 64-bit tlbie function to set the CPU to 64-bit
mode correctly.

Hardware donated by: grehan


# 7f0ad28f 22-Jun-2009 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Fix copy/paste typo in last revision. PMC0 control should be shifted 8
bits, not 6, on the PPC 970.


# 30a2bd2f 17-Jun-2009 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Teach cpu_est_clockrate() about the G5's slightly different PMC. This
allows the boot messages to include the CPU speed and makes possible
the forthcoming cpufreq support for the PPC 970.


# 28bb01e5 21-May-2009 Rafal Jaworowski <raj@FreeBSD.org>

Initial support for SMP on PowerPC MPC85xx.

Tested with Freescale dual-core MPC8572DS development system.

Obtained from: Freescale, Semihalf


# 7ad9c533 14-May-2009 Rafal Jaworowski <raj@FreeBSD.org>

PowerPC common SMP startup and time base rework.

- make mftb() shared, rewrite in C, provide complementary mttb()
- adjust SMP startup per the above, additional comments, minor naming
changes
- eliminate redundant TB defines, other minor cosmetics

Reviewed by: marcel, nwhitehorn
Obtained from: Freescale, Semihalf


# b40ce02a 13-May-2009 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Factor out platform dependent things unrelated to device drivers into a
new platform module. These are probed in early boot, and have the
responsibility of determining the layout of physical memory, determining
the CPU timebase frequency, and handling the zoo of SMP mechanisms
found on PowerPC.

Reviewed by: marcel, raj
Book-E parts by: raj


# 8cf9d6cd 11-Apr-2009 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Rework the way we get the cacheline size. Instead of having a table of
CPUs known to use 128 byte cache lines and defaulting to 32, use the dcbz
instruction to measure it. Also make dcbz behave the way you would
expect on PPC 970.


# 1c96bdd1 03-Apr-2009 Nathan Whitehorn <nwhitehorn@FreeBSD.org>

Add support for 64-bit PowerPC CPUs operating in the 64-bit bridge mode
provided, for example, on the PowerPC 970 (G5), as well as on related CPUs
like the POWER3 and POWER4.

This also adds support for various built-in hardware found on Apple G5
hardware (e.g. the IBM CPC925 northbridge).

Reviewed by: grehan


# 389e4721 13-Mar-2009 Rafal Jaworowski <raj@FreeBSD.org>

Make MPC85xx LAW handling and reset routines aware of the MPC8548 variant.

Inspired by discussion with Alexey V Fedorov on freebsd-powerpc@.


# fe48da3f 17-Dec-2008 Rafal Jaworowski <raj@FreeBSD.org>

Improve MPC85XX helper routines.

- Move CCSR accessors to the shared MPC85XX area
- Simplify SVR version subfield handling
- Adjust OCP


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# cf0c3004 14-Sep-2008 Marcel Moolenaar <marcel@FreeBSD.org>

o Remove SPR_TSR & SPR_TCR for AIM.
o Remove SPR_HID2.
o Add more SPR_L3CR bit definitions.


# 653b7b49 26-Apr-2008 Rafal Jaworowski <raj@FreeBSD.org>

Move System Revision defines to a bit better place, add MPC8572 systems IDs.


# ffb56695 03-Mar-2008 Rafal Jaworowski <raj@FreeBSD.org>

Rework and extend PowerPC headers definitons towards Book-E/e500 CPUs support.

Approved by: cognet (mentor)
Obtained from: Juniper, Semihalf
MFp4: e500


# cb9bdc64 24-Feb-2008 Rafal Jaworowski <raj@FreeBSD.org>

Teach PowerPC CPU identification routines to recognize e500 cores. Fix style
issues in this area.

Approved by: cognet (mentor)
MFp4: e500


# 4e895c54 03-Feb-2005 Peter Grehan <grehan@FreeBSD.org>

- add definitions for MPC7447A/7448 (i.e. miniMac)
- expand MPC745X_P macro to include these

Obtained from: NetBSD


# 60727d8b 06-Jan-2005 Warner Losh <imp@FreeBSD.org>

/* -> /*- for license, minor formatting changes


# e6d3e1c2 08-Feb-2004 Peter Grehan <grehan@FreeBSD.org>

Definitions for MPC7457 CPU type and HID0 bits


# 19ca68d9 04-Feb-2003 Benno Rice <benno@FreeBSD.org>

- Update spr.h
- Add hid.h

Obtained from: NetBSD

NOTE: This undoes some changes I'd made to prefix the processor name defines
with PVR_. This was due to my original decision to use MPC750 as a cpu name.
With this changed, the PVR_ change is no longer required.


# 3bc5121f 09-May-2002 Benno Rice <benno@FreeBSD.org>

Rename the constants for the contents of the PVR register so as not to
conflict with cpu names used in config files..


# b57e802a 28-Apr-2002 Benno Rice <benno@FreeBSD.org>

Commit of stuff that's been sitting in my tree for a while.

Highlights include:
- New low-level trap code from NetBSD. The high level code still needs a lot
of work.
- Fixes for some pmap handling in thread switching.
- The kernel will now get to attempting to jump into init in user mode. There
are some pmap/trap issues which prevent it from actually getting there though.

Obtained from: NetBSD (parts)