Home | History | Annotate | Download | only in include
History log of /src/sys/arch/powerpc/include/types.h
RevisionDateAuthorComments
 1.66  01-Apr-2021  simonb Whitespace: #define<tab>
 1.65  23-Jan-2021  christos branches: 1.65.2;
Document via __HAVE_BUS_SPACE_8 platforms that implement bus_space_*_8
 1.64  22-Jun-2020  rin branches: 1.64.2;
Fix previous; hide userland ABI details for kernel as suggested by joerg:

http://mail-index.netbsd.org/source-changes-d/2020/06/21/msg012745.html

- Revive __lwp_settcb(), and call _lwp_setprivate(2) from it.

- Keep l_private opaque pointer for kernel; store raw value of %r2 in it.
In the previous commit message, I wrote,

http://mail-index.netbsd.org/source-changes/2020/06/21/msg118524.html

> - Make sure that, like other ports, l_private represents address of tcb,
> not biased one as in %r2.

but, it turned out to be wrong. mips stores a biased address, at least.
It is userland responsibility to interpret returned values from
lwp_getprivate(2).
 1.63  21-Jun-2020  rin Fix inconsistency b/w kernel and userland recognitions of TLS, as well as
inconsistency whether it is biased or not in kernel.

- Obsolete __lwp_settcb() in order to let kernel know new TLS address via
_lwp_setprivate(2). Alternatively, we can call _lwp_setprivate(2) within
__lwp_settcb() like mips, but it is just double handling; we adjust %r2
appropriately in _lwp_setprivate(2) via cpu_lwp_setprivate().

- Make sure that, like other ports, l_private represents address of tcb,
not biased one as in %r2. This guarantees that the returned values from
_lwp_getprivate(2) and __lwp_getprivate_fast() are always same. Also,
we can obsolete PTRACE_LWP_GETPRIVATE() macro.

Now, *_pl_private tests in tests/lib/libc/sys successfully pass, while
no other tests become newly falling.
 1.62  16-Apr-2020  rin Discard __HAVE_UNLOCKED_PMAP for 4xx; 4xx is uniprocessor architecture,
and everything gets more than 10 times slower by __HAVE_UNLOCKED_PMAP.

Note that we support three supervisor-level architectures for powerpc:
oea, booke, and 4xx. We have three different implementations of pmap as
a result. Whereas oea and booke support multiprocessor, 4xx does not.
 1.61  22-Mar-2020  ad branches: 1.61.2;
Temporarily mark hppa, mips, powerpc and riscv with __HAVE_UNLOCKED_PMAP,
for the benefit of UVM.

These need some pmap changes to support concurrent faults on the same
object. I have changes to do just that, but they're a work in progress.
 1.60  06-Dec-2019  mrg revert this change from early this year. it appears the
changes macallan@ commited to fix FIRMWORKSBUGS issues
in openfirmware() have fixed the hangs seen on PegasosII.

hooray!

---
Log Message:
workaround a problem with the pegasos firmware interface:
attempting to use /dev/openfirm on this machine hangs hard.

this isn't a new problem, and i've been meaning to try to
figure it out for years, but it's become a problem since
the xf86-video-radeon driver gained code to look for the
macppc model using this interface.

this is why xorg-server 1.18 and 1.20 hang recently on the
pegasosII.

this change is fairly ugly but i couldn't think of a less
ugly method to avoid /dev/openfirm working just on this
one platform. introduce new __OPENFIRMIO_OPEN_CHECK_BROKEN
macro and associated __openfirmio_open_check_broken(), and
use them in the new openfirmopen() to fail opens.

include proplib.h in macppc and ofppc autoconf.h since they
use it.
---
 1.59  07-Apr-2019  thorpej Detangle some of the PowerPC CPU configuration spaghetti.
 1.58  06-Apr-2019  thorpej Overhaul the API used to fetch and store individual memory cells in
userspace. The old fetch(9) and store(9) APIs (fubyte(), fuword(),
subyte(), suword(), etc.) are retired and replaced with new ufetch(9)
and ustore(9) APIs that can return proper error codes, etc. and are
implemented consistently across all platforms. The interrupt-safe
variants are no longer supported (and several of the existing attempts
at fuswintr(), etc. were buggy and not actually interrupt-safe).

Also augmement the ucas(9) API, making it consistently available on
all plaforms, supporting uniprocessor and multiprocessor systems, even
those that do not have CAS or LL/SC primitives.

Welcome to NetBSD 8.99.37.
 1.57  08-Jan-2019  mrg workaround a problem with the pegasos firmware interface:
attempting to use /dev/openfirm on this machine hangs hard.

this isn't a new problem, and i've been meaning to try to
figure it out for years, but it's become a problem since
the xf86-video-radeon driver gained code to look for the
macppc model using this interface.

this is why xorg-server 1.18 and 1.20 hang recently on the
pegasosII.


this change is fairly ugly but i couldn't think of a less
ugly method to avoid /dev/openfirm working just on this
one platform. introduce new __OPENFIRMIO_OPEN_CHECK_BROKEN
macro and associated __openfirmio_open_check_broken(), and
use them in the new openfirmopen() to fail opens.

include proplib.h in macppc and ofppc autoconf.h since they
use it.
 1.56  27-Jan-2017  christos branches: 1.56.12; 1.56.14;
remove __HAVE_COMPAT_NETBSD32
 1.55  26-Jan-2017  christos provide __HAVE_COMPAT_NETBSD32 and fix multiple include protection consistently.
 1.54  24-Jan-2016  christos branches: 1.54.2; 1.54.4;
expose __register32_t for frame.h
 1.53  23-Jan-2016  christos expose the kernel types for standalone code.
 1.52  23-Jan-2016  christos Hide {p,v}{addr,size}_t and register_t (and a couple more types that
are machine-specific) from userland unless _KERNEL/_KMEMUSER and a
new _KERNTYPES variables is defined. The _KERNTYPES should be fixed
for many subsystems that should not be using it (rump)...
 1.51  27-Aug-2015  pooka Fix PTHREAD_FOO_INITIALIZER for C++ by not using volatile in the relevant
pthread types in C++ builds, attempt 2.

The problem with attempt 1 was making assumptions of what the MD
__cpu_simple_lock_t (declared volatile) looks like. To get a same type
except non-volatile, we change the MD type to __cpu_simple_lock_nv_t
and typedef __cpu_simple_lock_t as a volatile __cpu_simple_lock_nv_t.
IMO, __cpu_simple_lock_t should not be volatile at all, but changing it
now is too risky.

Fixes at least Rumprun w/ gcc 5.1/5.2. Furthermore, the mpd application
(and possibly others) will no longer require NetBSD-specific patches.

Tested: build.sh for i386, Rumprun for x86_64 w/ gcc 5.2.

Based on the patch from Christos in lib/49989.
 1.50  14-Dec-2014  chs fix powerpc TLS problems by removing the hacks for PPC EABI.
the kernel no longer treats R2 specially and its use as
the TLS register is now handled entirely in userland.
 1.49  18-Mar-2014  riastradh branches: 1.49.4; 1.49.6;
Merge riastradh-drm2 to HEAD.
 1.48  17-Jul-2013  matt kcpuset_t changes for the pmap and removal of __cpuset_t
 1.47  26-May-2012  matt branches: 1.47.2; 1.47.4; 1.47.10;
Add __HAVE_RAS support. Do it in userret.
 1.46  17-Jul-2011  dyoung branches: 1.46.2; 1.46.6; 1.46.8;
Enable new-style <sys/bus.h> on several PowerPC ports supporting PCI
buses. Make non-inline implementations of bus_space(9) and bus_dma(9)
routines and move them to appropriate .c files.

This may leave amigappc in a bad state, sorry. Fortunately, it will be
easy to repair by imitating the bus.h -> bus_{defs,funcs}.h split in
some other PowerPC port.
 1.45  23-Jun-2011  matt Switch to using the common <common/pmap/tlb/tlb.h>
 1.44  14-Jun-2011  matt Add mm_md_kernacc and now kmem tools work again.
 1.43  13-Jun-2011  matt Add __HAVE_CPU_UAREA_ROUTINES support so that uareas will be direct-mapped.
(This avoids the nasty tlb recursion problem on ibm4xx as well on mpc85xx).
 1.42  12-Jun-2011  matt need mm_md_direct_mapped_phys support.
 1.41  05-Jun-2011  matt Remove <machine/atomic.h>; use <sys/atomic.h> instead.
Add <powerpc/cpuset.h> (for mpc85xx pmap).
Add some initial MP code for mpc85xx
Rework ipi code to be common across all ppcs
Change PPC to keep curlwp in %r13 while in the kernel.
Move astpending from cpu_info to mdlwp
Improve cpu_need_resched to be more MP friendly.
 1.40  02-May-2011  matt branches: 1.40.2;
Move powerpc to use pcu to manage FPU/AltiVec/SPE.
 1.39  07-Apr-2011  matt Get rid of cpu_lwp_setprivate since it's not needed on powerpc.
 1.38  12-Mar-2011  matt Add TLS defines.
 1.37  24-Feb-2011  joerg Allow storing and receiving the LWP private pointer via ucontext_t
on all platforms except VAX and IA64. Add fast access via register for
AMD64, i386 and SH3 ports. Use this fast access in libpthread to replace
the stack based pthread_self(). Implement skeleton support for Alpha,
HPPA, PowerPC, SPARC and SPARC64, but leave it disabled.

Ports that support this feature provide __HAVE____LWP_GETPRIVATE_FAST in
machine/types.h and a corresponding __lwp_getprivate_fast in
machine/mcontext.h.

This material is based upon work partially supported by
The NetBSD Foundation under a contract with Joerg Sonnenberger.
 1.36  22-Dec-2010  matt branches: 1.36.2; 1.36.4;
Add a define __HAVE_CPU_DATA_FIRST which means that cpu_data is the first
member in struct cpu_info.
 1.35  07-Jul-2010  chs implement cpu_lwp_setprivate() on several platforms.
 1.34  11-Dec-2009  matt branches: 1.34.2; 1.34.4;
Add PRIx{P,V}{ADDR,SIZE}, PRIu{P,V}SIZE, and PRIxREGISTER{,32,64} for all
(except where they will be added via merge). These should be used to print
{p,v}{addr,size}_t and register*_t as appropriate.
 1.33  31-Jan-2008  matt branches: 1.33.10; 1.33.32;
Add register{32,64}_t
 1.32  20-Jan-2008  joerg Now that __HAVE_TIMECOUNTER and __HAVE_GENERIC_TODR are invariants,
remove the conditionals and the code associated with the undef case.
 1.31  08-Jan-2008  joerg Finish conversion of ppc and evbppc to timecounter.
Tested by simonb@ on WALNUT.
 1.30  29-Nov-2007  ad branches: 1.30.6;
__HAVE_ATOMIC64_OPS if 64-bit
 1.29  17-Oct-2007  garbled branches: 1.29.2;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.28  17-May-2007  yamt branches: 1.28.8; 1.28.10;
merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.
 1.27  05-Aug-2006  sanjayl branches: 1.27.10; 1.27.14; 1.27.16; 1.27.22;
1st cut of Powermac G5 support (uses bridge mode).
 1.26  24-Dec-2005  perry branches: 1.26.4; 1.26.8;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.25  11-Dec-2005  christos merge ktrace-lwp.
 1.24  26-Sep-2003  nathanw branches: 1.24.16;
Move __cpu_simple_lock_t and __SIMPLELOCK_{UN,}LOCKED to machine/types.h
so that they can be used in a namespace-friendly way.
 1.23  25-Sep-2003  matt Add siginfo support for PowerPC.
 1.22  21-Jul-2003  hannken Typo: __HAVE_BITENDIAN_BITOPS -> __HAVE_BIGENDIAN_BITOPS
 1.21  18-Jul-2003  matt Elimindate MD setrunqueue/remrunqueue (which were out-of-date compared to
the canonical versions in kern_synch.c). Define __HAVE_BIGENDIAN_BITOPS
so the canonical versions will be used but will store priorities in the
desired (MSB) order for PowerPC (which allows the use of the cntlzw (count
leading zeroes, word) instruction in locore_subr.S to find the proper
priority).
 1.20  28-Apr-2003  bjh21 branches: 1.20.2;
Add a new feature-test macro, _NETBSD_SOURCE. If this is defined
by the application, all NetBSD interfaces are made visible, even
if some other feature-test macro (like _POSIX_C_SOURCE) is defined.
<sys/featuretest.h> defined _NETBSD_SOURCE if none of _ANSI_SOURCE,
_POSIX_C_SOURCE and _XOPEN_SOURCE is defined, so as to preserve
existing behaviour.

This has two major advantages:
+ Programs that require non-POSIX facilities but define _POSIX_C_SOURCE
can trivially be overruled by putting -D_NETBSD_SOURCE in their CFLAGS.
+ It makes most of the #ifs simpler, in that they're all now ORs of the
various macros, rather than having checks for (!defined(_ANSI_SOURCE) ||
!defined(_POSIX_C_SOURCE) || !defined(_XOPEN_SOURCE)) all over the place.

I've tried not to change the semantics of the headers in any case where
_NETBSD_SOURCE wasn't defined, but there were some places where the
current semantics were clearly mad, and retaining them was harder than
correcting them. In particular, I've mostly normalised things so that
_ANSI_SOURCE gets you the smallest set of stuff, then _POSIX_C_SOURCE,
_XOPEN_SOURCE and _NETBSD_SOURCE in that order.

Tested by building for vax, encouraged by thorpej, and uncontested in
tech-userlevel for a week.
 1.19  18-Jan-2003  matt Make register_t. Change the printfs in trap.c to match.
 1.18  16-Jan-2003  matt A small LP64 fix.
 1.17  22-Sep-2002  simonb Use "#define\t" instead of "#define ".
 1.16  22-Sep-2002  gmcgarry Add __HAVE_MD_RUNQUEUE flag for MD code to override MI run queue primitives.
 1.15  14-Aug-2002  matt Prepare for PPC64. Use register_t for mtmsr/mfmsr since the msr on PPC64
is 64bits wide. Define proper types for PPC64 if _LP64 is defined.
 1.14  05-Jul-2002  matt Peform a rototill over the powerpc-based ports.

Move the trap/vector initialization for MPC6xx ports to mpc6xx_machdep.c
Also move softnet, install_extintr, mapiodev, kvtop. Add common BAT
initialization code.

Add user Altivec support.

Fix calls to OF_call_method in macppc/macppc/machdep.c.

Use ci_fpuproc in cpu_info instead of separate fpuproc.

Add separate syscall.c and defined __HAVE_SYSCALL_INTERN.
 1.13  28-Feb-2002  simonb branches: 1.13.8;
Use "#define<tab>".
 1.12  28-Apr-2001  kleink branches: 1.12.2; 1.12.8;
* Move definitions of exact-width integer types from <machine/types.h>
to <sys/types.h> and <sys/stdint.h>.
* Add a new C99 <stdint.h> header, which provides integer types of
explicit width, related limits and integer constant macros.
* Extend <inttypes.h> to provide <stdint.h> definitions and format
macros for printf() and scanf().
* Add C99 strtoimax() and strtoumax() functions.
* Use the latter within scanf().
* Add C99 %j, %t and %z printf()/scanf() conversions for
intmax_t, pointer-type and size_t arguments.
 1.11  04-Mar-2001  matt branches: 1.11.2;
Nuke vm_offset_t, vm_size_t from powerpc.
 1.10  03-Jan-2001  takemura replace 'long long' with int64_t to compile stand alone program with
compiler other than GCC.
 1.9  11-Jun-2000  tsubai Add cpu_counter().
 1.8  13-Aug-1998  eeh branches: 1.8.12; 1.8.20;
Merge paddr_t changes into the main branch.
 1.7  14-Jun-1998  kleink branches: 1.7.2;
GC the unused `physadr' type, which was not able to hold a complete physical
address on 2 architectures anyhow. Also, move the definition of the `label_t'
type inside _KERNEL protection, since it is specific to the in-kernel
setjmp()/longjmp() implementations.
 1.6  23-Feb-1998  mycroft Clean up, add physadr.
 1.5  27-Jan-1998  sakamoto Import DDB from OpenBSD/powerpc.
 1.4  05-Nov-1997  thorpej Mark uses of long long with /* LONGLONG */ for lint. From
Chris Demetriou <cgd@pa.dec.com>.
 1.3  16-Apr-1997  thorpej branches: 1.3.8;
Nuke __BROKEN_INDIRECT_CONFIG
 1.2  05-Dec-1996  cgd First step inn removing config_scan() and the hacks that gave devices
on indirect-config busses a (permanent) softc that they could share
between 'match' and 'attach' routines:

Define __BROKEN_INDIRECT_CONFIG so that old autoconfiguration
interfaces are used, until drivers are converted to use the new
interfaces (actually, converted back to use the _older_ interfaces)
which prohibit indirect configuration devices from receiving a softc
in their match routine that they can share with their attach routine.
 1.1  30-Sep-1996  ws PowerPC port
 1.3.8.1  05-Nov-1997  thorpej Update from trunk: Mark usese of long long with /* LONGLONG */ for lint.
 1.7.2.2  12-Aug-1998  eeh Protect XOPEN and POSIX code from vm_offset_t, paddr_t, vaddr_t, vm_size_t, psize_t, and vsize_t.
 1.7.2.1  30-Jul-1998  eeh Split vm_offset_t and vm_size_t into paddr_t, psize_t, vaddr_t, and vsize_t.
 1.8.20.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.8.12.3  12-Mar-2001  bouyer Sync with HEAD.
 1.8.12.2  05-Jan-2001  bouyer Sync with HEAD
 1.8.12.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.11.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.12.8.6  17-Jan-2003  thorpej Sync with HEAD.
 1.12.8.5  18-Oct-2002  nathanw Catch up to -current.
 1.12.8.4  27-Aug-2002  nathanw Catch up to -current.
 1.12.8.3  01-Aug-2002  nathanw Catch up to -current.
 1.12.8.2  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.12.8.1  28-Apr-2001  nathanw file types.h was added on branch nathanw_sa on 2002-04-01 07:42:05 +0000
 1.12.2.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.12.2.2  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.12.2.1  16-Mar-2002  jdolecek Catch up with -current.
 1.13.8.2  31-Aug-2002  gehenna catch up with -current.
 1.13.8.1  16-Jul-2002  gehenna catch up with -current.
 1.20.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.20.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.20.2.1  03-Aug-2004  skrll Sync with HEAD
 1.24.16.5  04-Feb-2008  yamt sync with head.
 1.24.16.4  07-Dec-2007  yamt sync with head
 1.24.16.3  03-Sep-2007  yamt sync with head.
 1.24.16.2  30-Dec-2006  yamt sync with head.
 1.24.16.1  21-Jun-2006  yamt sync with head.
 1.26.8.1  11-Aug-2006  yamt sync with head
 1.26.4.1  09-Sep-2006  rpaulo sync with head
 1.27.22.2  02-Aug-2007  macallan sync with HEAD
 1.27.22.1  22-May-2007  matt Update to HEAD.
 1.27.16.1  11-Jul-2007  mjf Sync with head.
 1.27.14.3  03-Dec-2007  ad Sync with HEAD.
 1.27.14.2  03-Dec-2007  ad Sync with HEAD.
 1.27.14.1  27-May-2007  ad Sync with head.
 1.27.10.1  03-Apr-2007  matt Adapt powerpc to yamt-idlelwp. Nuke cpu_setfunc.
Don't define _HAVE_BITENDIAN_BITOPS. Misc cleanups.
 1.28.10.3  23-Mar-2008  matt sync with HEAD
 1.28.10.2  09-Jan-2008  matt sync with HEAD
 1.28.10.1  06-Nov-2007  matt sync with HEAD
 1.28.8.1  03-Dec-2007  joerg Sync with HEAD.
 1.29.2.2  18-Feb-2008  mjf Sync with HEAD.
 1.29.2.1  08-Dec-2007  mjf Sync with HEAD.
 1.30.6.2  23-Jan-2008  bouyer Sync with HEAD.
 1.30.6.1  08-Jan-2008  bouyer Sync with HEAD
 1.33.32.2  14-Oct-2011  matt Sync with current pulling P2020 and other newer processor support.
 1.33.32.1  07-Jan-2011  matt Add PRIx{P,V}{ADDR,SIZE} and PRIxREGISTER
 1.33.10.2  11-Aug-2010  yamt sync with head.
 1.33.10.1  11-Mar-2010  yamt sync with head
 1.34.4.4  12-Jun-2011  rmind sync with head
 1.34.4.3  31-May-2011  rmind sync with head
 1.34.4.2  21-Apr-2011  rmind sync with head
 1.34.4.1  05-Mar-2011  rmind sync with head
 1.34.2.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.36.4.1  05-Mar-2011  bouyer Sync with HEAD
 1.36.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.40.2.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.46.8.1  13-Jun-2012  riz Pull up following revision(s) (requested by matt in ticket #340):
sys/arch/powerpc/include/types.h: revision 1.47
sys/arch/powerpc/include/userret.h: revision 1.24
Add __HAVE_RAS support. Do it in userret.
 1.46.6.1  02-Jun-2012  mrg sync to latest -current.
 1.46.2.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.46.2.1  30-Oct-2012  yamt sync with head
 1.47.10.1  23-Jul-2013  riastradh sync with HEAD
 1.47.4.1  28-Aug-2013  rmind sync with head
 1.47.2.2  03-Dec-2017  jdolecek update from HEAD
 1.47.2.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.49.6.4  05-Feb-2017  skrll Sync with HEAD
 1.49.6.3  19-Mar-2016  skrll Sync with HEAD
 1.49.6.2  22-Sep-2015  skrll Sync with HEAD
 1.49.6.1  06-Apr-2015  skrll Sync with HEAD
 1.49.4.1  31-Dec-2014  snj Pull up following revision(s) (requested by chs in ticket #364):
lib/libc/tls/tls.c: revision 1.8
libexec/ld.elf_so/tls.c: revision 1.10
sys/arch/powerpc/include/types.h: revision 1.50
sys/arch/powerpc/powerpc/sig_machdep.c: revision 1.44
fix powerpc TLS problems by removing the hacks for PPC EABI.
the kernel no longer treats R2 specially and its use as
the TLS register is now handled entirely in userland.
 1.54.4.1  21-Apr-2017  bouyer Sync with HEAD
 1.54.2.1  20-Mar-2017  pgoyette Sync with HEAD
 1.56.14.3  21-Apr-2020  martin Sync with HEAD
 1.56.14.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.56.14.1  10-Jun-2019  christos Sync with HEAD
 1.56.12.1  18-Jan-2019  pgoyette Synch with HEAD
 1.61.2.1  20-Apr-2020  bouyer Sync with HEAD
 1.64.2.1  03-Apr-2021  thorpej Sync with HEAD.
 1.65.2.1  03-Apr-2021  thorpej Sync with HEAD.

RSS XML Feed