Module Name:    src
Committed By:   martin
Date:           Tue Mar  3 18:54:59 UTC 2020

Modified Files:
        src/common/lib/libc/arch/powerpc/atomic [netbsd-9]: atomic_cas.S
            atomic_op_asm.h atomic_swap.S
        src/sys/arch/evbppc/conf [netbsd-9]: std.obs200 std.obs266 std.virtex
            std.walnut
        src/sys/arch/powerpc/ibm4xx [netbsd-9]: 4xx_trap_subr.S trap_subr.S
        src/sys/arch/powerpc/include [netbsd-9]: asm.h lock.h
        src/sys/arch/powerpc/powerpc [netbsd-9]: lock_stubs.S locore_subr.S
            trap_subr.S

Log Message:
Pull up following revision(s) (requested by rin in ticket #755):

        sys/arch/evbppc/conf/std.virtex: revision 1.4
        sys/arch/powerpc/powerpc/trap_subr.S: revision 1.81
        sys/arch/powerpc/ibm4xx/4xx_trap_subr.S: revision 1.8
        sys/arch/evbppc/conf/std.walnut: revision 1.9
        common/lib/libc/arch/powerpc/atomic/atomic_op_asm.h: revision 1.7
        sys/arch/powerpc/include/asm.h: revision 1.49
        common/lib/libc/arch/powerpc/atomic/atomic_cas.S: revision 1.9
        sys/arch/powerpc/ibm4xx/trap_subr.S: revision 1.28
        sys/arch/powerpc/include/lock.h: revision 1.15
        sys/arch/evbppc/conf/std.obs266: revision 1.3
        common/lib/libc/arch/powerpc/atomic/atomic_swap.S: revision 1.8
        sys/arch/powerpc/powerpc/locore_subr.S: revision 1.61
        sys/arch/powerpc/powerpc/lock_stubs.S: revision 1.12
        sys/arch/evbppc/conf/std.obs200: revision 1.5

Implement workaround for IBM405 Errata 77 (aka CPU_210), where
interrupted stwcx. may errantly write data to memory:

     https://elinux.org/images/1/1d/Ppc405gp-errata.pdf

This is because stwcx. is split into two pieces in the pipeline.

We need to
(1) insert dcbt before every stwcx. instruction, as well as
(2) insert sync before every rfi/rfci instruction.

It is unclear which processors are affected, but according to Linux,
all 405-based cores up until 405GPR and 405EP are affected:

     
https://github.com/torvalds/linux/blob/master/arch/powerpc/platforms/40x/Kconfig#L140

For kernel, this workaround can be restricted to affected processors.

However, for kernel modules and userland, we have to enable it for all
32bit powerpc archs in order to share common binaries as before.
Proposed on port-powerpc:

     http://mail-index.netbsd.org/port-powerpc/2020/02/21/msg003583.html


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.8.28.1 \
    src/common/lib/libc/arch/powerpc/atomic/atomic_cas.S
cvs rdiff -u -r1.6 -r1.6.28.1 \
    src/common/lib/libc/arch/powerpc/atomic/atomic_op_asm.h
cvs rdiff -u -r1.7 -r1.7.28.1 \
    src/common/lib/libc/arch/powerpc/atomic/atomic_swap.S
cvs rdiff -u -r1.4 -r1.4.64.1 src/sys/arch/evbppc/conf/std.obs200
cvs rdiff -u -r1.2 -r1.2.60.1 src/sys/arch/evbppc/conf/std.obs266
cvs rdiff -u -r1.3 -r1.3.58.1 src/sys/arch/evbppc/conf/std.virtex
cvs rdiff -u -r1.8 -r1.8.58.1 src/sys/arch/evbppc/conf/std.walnut
cvs rdiff -u -r1.7 -r1.7.60.1 src/sys/arch/powerpc/ibm4xx/4xx_trap_subr.S
cvs rdiff -u -r1.27 -r1.27.4.1 src/sys/arch/powerpc/ibm4xx/trap_subr.S
cvs rdiff -u -r1.48 -r1.48.22.1 src/sys/arch/powerpc/include/asm.h
cvs rdiff -u -r1.13 -r1.13.8.1 src/sys/arch/powerpc/include/lock.h
cvs rdiff -u -r1.10 -r1.10.34.1 src/sys/arch/powerpc/powerpc/lock_stubs.S
cvs rdiff -u -r1.57.4.1 -r1.57.4.2 src/sys/arch/powerpc/powerpc/locore_subr.S
cvs rdiff -u -r1.80 -r1.80.4.1 src/sys/arch/powerpc/powerpc/trap_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Reply via email to