Home | History | Annotate | only in /src/sys/arch/arm/cortex
History log of /src/sys/arch/arm/cortex
RevisionDateAuthorComments
 1.59 18-May-2019  skrll Convert remaining armv7 kernels to generic start and remove a bunch of
code including a9_mpsubr.S.

Thanks to Lwazi Dube for testing PANDABOARD and BEAGLEBONE.
 1.58 21-Sep-2018  skrll Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.
 1.57 27-Jun-2018  ryo branches: 1.57.2;
on evbarm/RPI,RPI2, VERBOSE_INIT_ARM had broken.

XPUTC() of evbarm/rpi/rpi*_start.S uses bcm283[567]_platform_early_putchar() and it requires stack.
fixed to allocate stack when starting from rpi*_start.S and a9_mpsubr.S if needed.

to work XPUTC(), need to define VERBOSE_INIT_ARM and EARLYCONS option.
 1.56 27-Jun-2018  ryo keep stack pointer even if chainging CPU mode.
 1.55 18-Jan-2018  skrll branches: 1.55.2;
Use r0 in the tlbiall instruction to avoid confusion.

From Ramakrishna Rao Desetti
 1.54 10-Dec-2017  skrll FDTise RapberryPI support. Thanks for jmcneill for a lot of help with this.

The kernel image that the RPI firmware boots is now netbsd.img in the
kernel build directory.

XXX fdtbus_get_reg needs reworking
 1.53 10-Nov-2017  matt Add #define CPU_CORTEDVIRT to reduce copied complex ifdef.
Shrink HYP test
 1.52 04-Nov-2017  skrll Ensure CNTVOFF is 0 before dropping out of Hyp mode
CVS ----------------------------------------------------------------------
 1.51 22-Sep-2017  skrll Typo
 1.50 06-Sep-2017  jmcneill Clear TEX Remap Enable in SCTLR. U-Boot with CONFIG_ARMV8_SWITCH_TO_EL1
sets it since it is RES1 when TTBCR.EAE=1, but we are still using the
short descriptor format and don't currently support TEX remap.

ok skrll@
 1.49 24-Jul-2017  joerg Replace assembler flags with .arch* annotation.
 1.48 05-Jul-2017  skrll Make fp 0 on entry to idle_stack to ensure we mark that we're top of
stack
 1.47 04-Oct-2016  kiyohara branches: 1.47.8;
Don't touch ACTLR on CORTEX A9, if ACTLR.SMP=1. like Linux.
Tested on Gumstix DuoVero(OMAP 4430).
 1.46 19-Dec-2015  skrll branches: 1.46.2;
Deal with kernel builds where virtualisation isn't available
 1.45 17-Dec-2015  skrll Check for hypervisor mode in cortex_init and exit if the cpu started
there.

Needed by latest RPI firmware.
 1.44 25-Nov-2015  skrll G/C TEGRAK1_PMAP_WORKAROUND.

Using XN (eXecute Never) properly means speculative reads from devices
aren't done. Pretty sure this was the cause of the wedges.
 1.43 15-Oct-2015  skrll Setting actlr.bit15=1 (Force in order issue in the branch execution unit)
makes my jetson tk1 stable. Apply this workaround until we figure out
what the real problem is.
 1.42 09-Jun-2015  skrll Use TTBR_[UM]PATTR in a9_mpsubr.S as well as cpufunc_asm_armv7

Prompted by matt@
 1.41 31-May-2015  matt Add CALL macro to hide ugliness of calling when KERNEL_BASE_VOFFSET is non-0
 1.40 30-May-2015  matt Call armv7_dcache_l1inv_all in mpstart
Make sure ACTRL<31> is set on A15 with 3+ cores.
 1.39 28-May-2015  matt A15 change for > 2 cores.
 1.38 17-May-2015  matt Add a missing defined(CORTEX_A15)
 1.37 15-May-2015  skrll Make sure TLB is invalidated and ACTLR.SMP is set on ARM A15. ACTLR.SMP
enables the processor to receive instruction cache, BTB and TLB main-
tenance operations from other processors
 1.36 03-May-2015  matt On secondary cores, invalidate the caches to make them clean.
 1.35 27-Apr-2015  skrll Remove unused label
 1.34 27-Apr-2015  skrll ARM spells the System Control Register SCTLR
 1.33 26-Apr-2015  jmcneill isb between TTBCR write and TLBIALL
 1.32 20-Apr-2015  jmcneill Restore "#if !defined(CPU_CORTEXA5)" accidentally removed in previous
commit -- hi skrll@
 1.31 18-Apr-2015  skrll Use character constants instead of ascii values for readability
 1.30 04-Mar-2015  skrll Spin up the non-boot CPUs, but don't allow cpu_boot_secondary_processors
to see them for now.

RPI2 nows works well with only the boot cpu.
 1.29 27-Feb-2015  jmcneill skip a TLBIALL on Cortex-A5 that stops my odroid-c1 from booting, ok matt
 1.28 07-Feb-2015  jmcneill According to the Cortex-A5 TRM, the CBAR register is not implemented and
always reads as 0x00000000. Add ARM_CBAR option to set this in kernel
config.
 1.27 07-Feb-2015  jmcneill make sure we set ACTLR.SMP=1 for CPU_CORTEXA5 in !MP case, ok matt@
 1.26 02-Dec-2014  matt Fix CORTEXA17 support
 1.25 02-Dec-2014  matt Add Cortex-A17 support
 1.24 25-Sep-2014  ryo branches: 1.24.2;
Always set CORTEXA9_AUXCTL_SMP on the CortexA9 as well as A7
 1.23 16-Sep-2014  matt Always set SMP on the A7 since it's needed for ldrex/strex
 1.22 16-Sep-2014  matt Enable L2 prefetch on A9 if MP
 1.21 15-Sep-2014  skrll Don't set CORTEXA9_AUXCTL_FW on A7. It's undefined.

Misc. cleanup while I'm here.
 1.20 15-Sep-2014  ryo fix to invalidate all way of own processor
 1.19 15-Sep-2014  matt Make sure to read SCTRL no matter way CPU we are on.
 1.18 21-May-2014  ozaki-r branches: 1.18.2;
Fix wrong instruction; mrc => mcr
 1.17 11-Apr-2014  matt whitespace cleanup
 1.16 11-Apr-2014  matt Simplify calls into .text by using KERNEL_BASE_VOFFSET.
 1.15 10-Apr-2014  skrll Fix a typo - it's "#define". Use defined(foo) rather than just foo in
preprocessor conditional.

ok matt@
 1.14 30-Mar-2014  matt branches: 1.14.2;
Improve MP startup code. We now use a two stage startup, after creating
the initial L1PT and turning on the MMU/caches, we spinup the secondary CPUs
waiting for them to get the same state as the boot processor. Once the
real L1PT is initialized and used, the secondary CPUs are kicked so they can
use it (and the initial L1PT is discarded). Finally, wait until NetBSD
kicks the secondary CPUs then load the stack from the idlelwp and then hatch
the cpu and then jump to idle_loop.
 1.13 21-Feb-2014  matt Rework PIC method to be simplier. Change be more cortex neutral.
 1.12 24-Jan-2014  matt branches: 1.12.2;
Deal with writing bswapped com registers at COM_MULT register widths.
 1.11 26-Dec-2013  joerg dsb is preferred for post-armv7 CPUs.
 1.10 12-Nov-2013  matt Deal with ARM32_DISABLE_ALIGNMENT_FAULTS
 1.9 07-Sep-2013  matt Remove brain fart with TTBCR
 1.8 05-Aug-2013  matt Turn on CPU_CONTROL_EX_BEND for big endian in exceptions,
not CPU_CONTROL_BEND_ENABLE.
 1.7 04-Aug-2013  matt Make sure CPU_CONTROL_BEND_ENABLE is set on BE systems.
 1.6 20-Jun-2013  matt branches: 1.6.2;
Set caching bits on the TTBR for ARMv7
Make sure TTCR is 0
 1.5 17-Jun-2013  matt Make this a little more generic.
Make sure to turn on branch prediction.
 1.4 28-Nov-2012  matt Make these compile with gcc4.1 and binutils 2.16
 1.3 05-Sep-2012  matt branches: 1.3.2; 1.3.4; 1.3.6;
Force TTBCR to 0
 1.2 02-Sep-2012  matt Cleanup and bring forwards from bcm53xx_start.S
Use more symbolic names ...
 1.1 01-Sep-2012  matt Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.3.6.3 12-Mar-2013  matt Busy wait in a WFI loop until told to exit.
 1.3.6.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.3.6.1 05-Sep-2012  matt file a9_mpsubr.S was added on branch matt-nb6-plus on 2012-11-28 22:40:25 +0000
 1.3.4.4 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.3.4.3 16-Jan-2013  yamt sync with (a bit old) head
 1.3.4.2 30-Oct-2012  yamt sync with head
 1.3.4.1 05-Sep-2012  yamt file a9_mpsubr.S was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.3.2.4 03-Dec-2017  jdolecek update from HEAD
 1.3.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.2.2 23-Jun-2013  tls resync from head
 1.3.2.1 25-Feb-2013  tls resync with head
 1.6.2.2 18-May-2014  rmind sync with head
 1.6.2.1 28-Aug-2013  rmind sync with head
 1.12.2.6 27-Mar-2014  matt Don't = since that isn't BE8 friendly
 1.12.2.5 26-Mar-2014  matt flush the icache after enabling the SCU
 1.12.2.4 24-Mar-2014  matt Allow A7 to use this.
 1.12.2.3 20-Feb-2014  matt Use right register when setting ttbr
 1.12.2.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.12.2.1 24-Jan-2014  matt file a9_mpsubr.S was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.14.2.1 10-Aug-2014  tls Rebase.
 1.18.2.6 03-Dec-2017  snj Pull up following revision(s) (requested by skrll in ticket #1524):
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.52
Ensure CNTVOFF is 0 before dropping out of Hyp mode
 1.18.2.5 08-Jul-2017  snj Pull up following revision(s) (requested by skrll in ticket #1444):
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.48
Make fp 0 on entry to idle_stack to ensure we mark that we're top of
stack
 1.18.2.4 26-Feb-2016  snj Pull up following revision(s) (requested by skrll in ticket #1107):
external/broadcom/rpi-firmware/dist/LICENCE.broadcom: revision 1.2
external/broadcom/rpi-firmware/dist/bootcode.bin: revision 1.8
external/broadcom/rpi-firmware/dist/fixup.dat: revision 1.8
external/broadcom/rpi-firmware/dist/fixup_cd.dat: revision 1.8
external/broadcom/rpi-firmware/dist/start.elf: revision 1.8
external/broadcom/rpi-firmware/dist/start_cd.elf: revision 1.8
sys/arch/arm/broadcom/bcm2835_emmc.c: revision 1.29
sys/arch/arm/broadcom/bcm2835_gpio.c: revision 1.3
sys/arch/arm/broadcom/bcm2835_gpio_subr.c: revision 1.4
sys/arch/arm/broadcom/bcm2835_space.c: revision 1.9, 1.10
sys/arch/arm/broadcom/bcm2835reg.h: patch
sys/arch/arm/cortex/a9_mpsubr.S: revisions 1.45, 1.46
sys/arch/evbarm/conf/CUBIEBOARD: revision 1.45
sys/arch/evbarm/conf/std.awin: revision 1.9
sys/arch/evbarm/rpi/rpi2_start.S: revision 1.3
sys/arch/evbarm/rpi/rpi_machdep.c: revision 1.68
Check for hypervisor mode in cortex_init and exit if the cpu started
there.
Needed by latest RPI firmware.
--
Fix up bus_space_map for latest RPI firmware which now passes the FB
address in the mailbox properties as a bus address.
--
Update RPI firmware to version after the following commit
commit 224c75602b8bae1a9e942b4f1c7ed3aa8e0f0ec8
Author: popcornmix<popcornmix@gmail.com>
Date: Tue Dec 8 14:48:57 2015 +0000
--
Deal with kernel builds where virtualisation isn't available
--
Tweak CPUFLAGS to cover all CPUs
--
Fix up bcm283[56] bus_space(4) to really use bus addresses for
peripherals, etc
Simplifies the code in various places and uses the abstraction in
more places. (bcm2835_gpio_subr.c still doesn't)
 1.18.2.3 21-Mar-2015  snj Pull up following revision(s) (requested by jmcneill in ticket #598):
sys/arch/arm/amlogic/amlogic_board.c: up to revision 1.9
sys/arch/arm/amlogic/amlogic_canvasreg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_com.c: up to revision 1.4
sys/arch/arm/amlogic/amlogic_comreg.h: up to revision 1.3
sys/arch/arm/amlogic/amlogic_comvar.h: revision 1.1
sys/arch/arm/amlogic/amlogic_cpufreq.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_crureg.h: up to revision 1.7
sys/arch/arm/amlogic/amlogic_dwctwo.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_genfb.c: revision 1.1
sys/arch/arm/amlogic/amlogic_gmac.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_hdmireg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_intr.h: up to revision 1.5
sys/arch/arm/amlogic/amlogic_io.c: up to revision 1.7
sys/arch/arm/amlogic/amlogic_reg.h: up to revision 1.9
sys/arch/arm/amlogic/amlogic_rng.c: revision 1.1
sys/arch/arm/amlogic/amlogic_sdhc.c: up to revision 1.3
sys/arch/arm/amlogic/amlogic_sdhcreg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_space.c: revision 1.1
sys/arch/arm/amlogic/amlogic_var.h: up to revision 1.8
sys/arch/arm/amlogic/amlogic_vpureg.h: revision 1.1
sys/arch/arm/arm/bootconfig.c: revisions 1.7-1.8
sys/arch/arm/conf/files.arm: revision 1.129
sys/arch/arm/cortex/pl310.c: revisions 1.16-1.17
sys/arch/arm/cortex/a9_mpsubr.S: revisions 1.25-1.29
sys/arch/arm/cortex/a9tmr.c: revisions 1.8-1.12
sys/arch/arm/cortex/a9tmr_var.h: revision 1.4
sys/arch/arm/cortex/a9wdt.c: revisions 1.3-1.4
sys/arch/arm/cortex/armperiph.c: revisions 1.5-1.7
sys/arch/arm/arm/cpufunc.c: revision 1.151
sys/arch/arm/include/bootconfig.h: revision 1.7
sys/arch/arm/include/locore.h: revision 1.19
sys/arch/evbarm/amlogic/amlogic_machdep.c: up to revision 1.17
sys/arch/evbarm/amlogic/amlogic_start.S: up to revision 1.2
sys/arch/evbarm/amlogic/genassym.cf: revision 1.1
sys/arch/evbarm/amlogic/platform.h: revision 1.1
sys/arch/evbarm/conf/files.amlogic: up to revision 1.8
sys/arch/evbarm/conf/std.amlogic: up to revision 1.2
sys/arch/evbarm/conf/mk.amlogic: revision 1.1
sys/arch/evbarm/conf/ODROID-C1: up to revision 1.12
sys/arch/evarm/conf/ODROID-C1_INSTALL: revision 1.1
Don't use not as a variable since it's reserved in C++.
--
clean the a9 l2 cache before turning it on.
--
Add Cortex-A17 support
--
Fix CORTEXA17 support
--
Let the "cbar" device property override the cbar value, to work around
broken bootloaders
--
add a helper to update a9tmr frequency
--
detach and re-attach timecounter when updating freq, and reinit timer on
each cpu
--
fix typo
--
add BOOTOPT_TYPE_MACADDR for parsing mac address parameters
--
make sure we set ACTLR.SMP=1 for CPU_CORTEXA5 in !MP case, ok matt@
--
According to the Cortex-A5 TRM, the CBAR register is not implemented and
always reads as 0x00000000. Add ARM_CBAR option to set this in kernel
config.
--
skip a TLBIALL on Cortex-A5 that stops my odroid-c1 from booting, ok matt
--
match on Cortex-A5
--
match on Cortex-A5
--
allow arml2cc to be used on Cortex-A5 if the "offset" property is specified
--
print "A5" instead of "A9" at attach time if running on a Cortex-A5
--
Improve inline asm around dsb/dmb/isb:
- always use volatile and mark them as memory barrier
- use the common version from locore.h in all places not included from
userland
--
Work-in-progress Odroid-C1 support.
--
no need to override ARM_CBAR, remove unused COM_16750 option
--
Add basic serial console support.
--
add dwctwo and usb devices
--
ODROID-C1 SMP support.
--
auto-detect RAM size
--
ODROID-C1 onboard ethernet support.
--
add amlogicrng, add commented-out genfb placeholder
--
enable amlogicsdhc
--
add ODROID-C1 install kernel
--
Add CPUFREQ option to set boot CPU frequency. ODROID-C1 is advertised
as quad-core 1.5GHz but boots up at 1.2GHz; add CPUFREQ=1512 to config
and make sure to set the correct speed before attaching CPUs.
The speed can still be scaled down with machdep.cpu sysctls.
--
disable DEBUG, LOCKDEBUG, VERBOSE_INIT_ARM
--
Basic framebuffer console support. Work in progress.
 1.18.2.2 11-Mar-2015  snj Pull up following revision(s) (requested by skrll in ticket #582):
distrib/utils/embedded/conf/rpi.conf: revision 1.27
etc/etc.evbarm/Makefile.inc: revision 1.70
sys/arch/arm/broadcom/bcm2835_intr.c: revision 1.5-1.7
sys/arch/arm/broadcom/bcm2835_obio.c: revision 1.23, 1.24
sys/arch/arm/broadcom/bcm2835_space.c: revision 1.8
sys/arch/arm/broadcom/bcm2835reg.h: revision 1.14
sys/arch/arm/broadcom/bcm2835var.h: revision 1.2
sys/arch/arm/broadcom/files.bcm2835: revision 1.24
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.30
sys/arch/arm/cortex/armperiph.c: revision 1.8, 1.9
sys/arch/arm/cortex/gtmr.c: revision 1.9
sys/arch/arm/cortex/gtmr_var.h: revision 1.5
sys/arch/arm/cortex/mpcore_var.h: revision 1.3
sys/arch/arm/include/cpu.h: revision 1.84
sys/arch/evbarm/conf/RPI2: revision 1.1, 1.2
sys/arch/evbarm/conf/RPI2_INSTALL: revision 1.1
sys/arch/evbarm/conf/RPI: revision 1.59, 1.60
sys/arch/evbarm/conf/mk.rpi: revision 1.4
sys/arch/evbarm/conf/std.rpi: revisions 1.16-1.19 via patch
sys/arch/evbarm/rpi/genassym.cf: revision 1.2
sys/arch/evbarm/rpi/rpi.h: revision 1.4
sys/arch/evbarm/rpi/rpi2_start.S: revision 1.1
sys/arch/evbarm/rpi/rpi_machdep.c: revision 1.57, 1.58 via patch
sys/arch/evbarm/rpi/rpi_start.S: revision 1.13
Move some options into std.rpi
--
Add __HAVE_MM_MD_CACHE_ALIASING
Pull up following revision(s) (requested by skrll in ticket #582):
Fix TPIDRPRW_IS_CURLWP builds.
--
A MULTIPROCESSOR kernel requires TPIDRPRW_IS_CURCPU.
--
Use TPIDRPRW_IS_CURLWP as it's a slight code reduction and performance
improvement.
Initial RPI2 support - it doesn't work yet. The generic timer gets messed
up somehow.
This commit changes the KVA layout of the RPI.
--
Make this compile where gtmr isn't used.
--
Spin up the non-boot CPUs, but don't allow cpu_boot_secondary_processors
to see them for now.
RPI2 nows works well with only the boot cpu.
--
Appease a KASSERT - will be remove when MULTIPROCESSOR RPI2 is fixed.
--
Add RPI2 to kernels build for both earmv[67].
Use the earmv6 built kernels to create an image that can be used on both
RPI and RPI2
--
Add an RPI2_INSTALL
 1.18.2.1 09-Nov-2014  martin Pull up following revision(s) (requested by skrll in ticket #188):
sys/arch/arm/include/arm32/pmap.h: revision 1.136
sys/arch/arm/include/armreg.h: revision 1.100
sys/arch/arm/cortex/gic.c: revision 1.11
sys/arch/arm/arm32/db_interface.c: revision 1.54
sys/arch/arm/include/armreg.h: revision 1.101
sys/arch/arm/cortex/gic.c: revision 1.12
sys/arch/arm/arm32/arm32_machdep.c: revision 1.107
sys/arch/arm/arm/cpufunc_asm_armv7.S: revision 1.19
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.20
sys/arch/evbarm/conf/BPI: revision 1.5
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.21
sys/arch/arm/arm32/pmap.c: revision 1.306
sys/arch/arm/arm32/db_machdep.c: revision 1.22
sys/arch/arm/arm32/arm32_tlb.c: revision 1.3
sys/arch/arm/arm/undefined.c: revision 1.55
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.22
sys/arch/arm/arm32/pmap.c: revision 1.307
sys/arch/arm/arm32/arm32_tlb.c: revision 1.4
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.23
sys/arch/arm/arm32/arm32_tlb.c: revision 1.5
sys/arch/evbarm/conf/BPI: revision 1.8
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.24
sys/arch/arm/arm32/arm32_tlb.c: revision 1.6
sys/arch/arm/arm32/arm32_tlb.c: revision 1.7
sys/arch/evbarm/conf/CUBIETRUCK: revision 1.5
sys/arch/arm/pic/pic.c: revision 1.23
sys/arch/arm/pic/pic.c: revision 1.24
sys/arch/arm/pic/picvar.h: revision 1.11
sys/arch/arm/arm/cpufunc_asm_armv7.S: revision 1.20
sys/arch/arm/mainbus/cpu_mainbus.c: revision 1.16
sys/arch/arm/arm32/pmap.c: revision 1.298
sys/arch/arm/arm/cpufunc_asm_arm11.S: revision 1.17
sys/arch/arm/arm/cpufunc_asm_pj4b.S: revision 1.5
sys/arch/arm/arm32/pmap.c: revision 1.310
sys/arch/arm/arm32/pmap.c: revision 1.311
sys/arch/arm/arm32/arm32_kvminit.c: revision 1.32
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.19
sys/arch/arm/arm32/arm32_boot.c: revision 1.10
sys/arch/arm/arm/ast.c: revision 1.25
sys/arch/arm/include/armreg.h: revision 1.98
sys/uvm/pmap/pmap_tlb.c: revision 1.10
sys/arch/arm/arm32/arm32_boot.c: revision 1.8
sys/arch/arm/arm32/arm32_boot.c: revision 1.9
sys/arch/arm/arm/arm_machdep.c: revision 1.43
Various ARM MP fixes.
 1.24.2.6 28-Aug-2017  skrll Sync with HEAD
 1.24.2.5 05-Dec-2016  skrll Sync with HEAD
 1.24.2.4 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.24.2.3 22-Sep-2015  skrll Sync with HEAD
 1.24.2.2 06-Jun-2015  skrll Sync with HEAD
 1.24.2.1 06-Apr-2015  skrll Sync with HEAD
 1.46.2.1 04-Nov-2016  pgoyette Sync with HEAD
 1.47.8.3 31-Jul-2023  martin Pull up following revision(s) (requested by riastradh in ticket #1859):

sys/arch/ia64/ia64/vm_machdep.c: revision 1.18
sys/arch/powerpc/powerpc/locore_subr.S: revision 1.67
sys/arch/aarch64/aarch64/locore.S: revision 1.91
sys/arch/mips/include/asm.h: revision 1.74
sys/arch/hppa/include/cpu.h: revision 1.13
sys/arch/arm/arm/armv6_start.S: revision 1.38
(applied also to sys/arch/arm/cortex/a9_mpsubr.S,
sys/arch/arm/cortex/a9_mpsubr.S,
sys/arch/arm/cortex/cortex_init.S)
sys/arch/evbmips/ingenic/cpu_startup.S: revision 1.2
sys/arch/mips/mips/locore.S: revision 1.229
sys/arch/alpha/include/asm.h: revision 1.45
(applied to sys/arch/alpha/alpha/multiproc.s)
sys/arch/sparc64/sparc64/locore.s: revision 1.432
sys/arch/vax/vax/subr.S: revision 1.42
sys/arch/mips/mips/locore_mips3.S: revision 1.116
sys/arch/ia64/ia64/machdep.c: revision 1.44
sys/arch/arm/arm32/cpuswitch.S: revision 1.106
sys/arch/sparc/sparc/locore.s: revision 1.284
(all via patch)

aarch64: Add missing barriers in cpu_switchto.
Details in comments.

Note: This is a conservative change that inserts a barrier where
there was a comment saying none is needed, which is probably correct.
The goal of this change is to systematically add barriers to be
confident in correctness; subsequent changes may remove some bariers,
as an optimization, with an explanation of why each barrier is not
needed.

PR kern/57240

alpha: Add missing barriers in cpu_switchto.
Details in comments.

arm32: Add missing barriers in cpu_switchto.
Details in comments.

hppa: Add missing barriers in cpu_switchto.
Not sure hppa has ever had working MULTIPROCESSOR, so maybe no
pullups needed?

ia64: Add missing barriers in cpu_switchto.
(ia64 has never really worked, so no pullups needed, right?)

mips: Add missing barriers in cpu_switchto.
Details in comments.

powerpc: Add missing barriers in cpu_switchto.
Details in comments.

sparc: Add missing barriers in cpu_switchto.

sparc64: Add missing barriers in cpu_switchto.
Details in comments.

vax: Note where cpu_switchto needs barriers.

Not sure vax has ever had working MULTIPROCESSOR, though, and I'm not
even sure how to spell store-before-load barriers on VAX, so no
functional change for now.
 1.47.8.2 17-Nov-2017  martin Pull up following revision(s) (requested by skrll in ticket #351):
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.52
Ensure CNTVOFF is 0 before dropping out of Hyp mode
 1.47.8.1 06-Jul-2017  martin branches: 1.47.8.1.2;
Pull up following revision(s) (requested by skrll in ticket #99):
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.48
Make fp 0 on entry to idle_stack to ensure we mark that we're top of
stack
 1.47.8.1.2.1 13-Dec-2017  matt Add Cortex-A35 and make VIRT support simplier
 1.55.2.2 30-Sep-2018  pgoyette Ssync with HEAD
 1.55.2.1 28-Jul-2018  pgoyette Sync with HEAD
 1.57.2.1 10-Jun-2019  christos Sync with HEAD
 1.3 05-Nov-2022  jmcneill Handle speed change events
 1.2 14-Aug-2019  skrll branches: 1.2.2; 1.2.10;
Various fixes / changes

- don't use prescaler
- improve AB_DEBUG output
- fix a9ptmr_delay to work with a decrementing counter!

Thanks to jmcneill@ for proving I'm an idiot
 1.1 10-Aug-2019  skrll Add a driver for the A5/A9 Private timer.

While here FDTise the Watchdog driver.
 1.2.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2.10.1 14-Aug-2019  martin file a9ptmr.c was added on branch phil-wifi on 2020-04-13 08:03:33 +0000
 1.2.2.2 15-Aug-2019  martin Pull up following revision(s) (requested by skrll in ticket #55):

sys/arch/arm/cortex/a9wdt.c: revision 1.10
sys/arch/evbarm/conf/HUMMINGBOARD: revision 1.9
sys/arch/evbarm/conf/GENERIC: revision 1.50
sys/arch/evbarm/conf/NITROGEN6X: revision 1.24
sys/arch/arm/cortex/a9tmr_var.h: revision 1.7
sys/arch/arm/fdt/files.fdt: revision 1.29
sys/arch/arm/amlogic/meson_platform.c: revision 1.12
sys/arch/arm/amlogic/meson8b_pinctrl.c: revision 1.2
sys/arch/arm/amlogic/meson_platform.c: revision 1.13
sys/arch/evbarm/conf/BCM5301X: revision 1.34
sys/arch/arm/dts/meson8b.dtsi: revision 1.6
sys/arch/arm/fdt/a9ptmr_fdt.c: revision 1.1
sys/arch/arm/dts/meson8b.dtsi: revision 1.7
sys/arch/arm/cortex/a9ptmr_var.h: revision 1.1
sys/arch/evbarm/conf/PANDABOARD: revision 1.30
sys/arch/evbarm/conf/DUOVERO: revision 1.14
sys/arch/arm/cortex/a9ptmr.c: revision 1.1
sys/arch/arm/cortex/a9ptmr.c: revision 1.2
sys/arch/arm/fdt/a9wdt_fdt.c: revision 1.1
sys/arch/evbarm/conf/BCM56340: revision 1.19
sys/arch/evbarm/conf/CUBOX-I: revision 1.23
sys/arch/arm/amlogic/meson8b_clkc.c: revision 1.4
sys/arch/evbarm/conf/PARALLELLA: revision 1.7
sys/arch/arm/cortex/files.cortex: revision 1.12
sys/arch/arm/dts/meson8b-odroidc1.dts: revision 1.4
sys/arch/arm/cortex/a9wdt.c: revision 1.9
sys/arch/evbarm/conf/ZEDBOARD: revision 1.6

spaces to tab

-

Add a driver for the A5/A9 Private timer.
While here FDTise the Watchdog driver.

-

Update for recent a9wdt changes
-

Trailing whitespace

-
Updates to get Odroid-C1 in better shape since the last DTS import

-

Various fixes / changes
- don't use prescaler
- improve AB_DEBUG output
- fix a9ptmr_delay to work with a decrementing counter!
Thanks to jmcneill@ for proving I'm an idiot

-

Add eth_rxd3 and eth_rxd2 pinctrl groups

-

Catch up to recent mainline dts changes
 1.2.2.1 14-Aug-2019  martin file a9ptmr.c was added on branch netbsd-9 on 2019-08-15 09:49:49 +0000
 1.2 05-Nov-2022  jmcneill Handle speed change events
 1.1 10-Aug-2019  skrll branches: 1.1.2; 1.1.10;
Add a driver for the A5/A9 Private timer.

While here FDTise the Watchdog driver.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 10-Aug-2019  martin file a9ptmr_var.h was added on branch phil-wifi on 2020-04-13 08:03:33 +0000
 1.1.2.2 15-Aug-2019  martin Pull up following revision(s) (requested by skrll in ticket #55):

sys/arch/arm/cortex/a9wdt.c: revision 1.10
sys/arch/evbarm/conf/HUMMINGBOARD: revision 1.9
sys/arch/evbarm/conf/GENERIC: revision 1.50
sys/arch/evbarm/conf/NITROGEN6X: revision 1.24
sys/arch/arm/cortex/a9tmr_var.h: revision 1.7
sys/arch/arm/fdt/files.fdt: revision 1.29
sys/arch/arm/amlogic/meson_platform.c: revision 1.12
sys/arch/arm/amlogic/meson8b_pinctrl.c: revision 1.2
sys/arch/arm/amlogic/meson_platform.c: revision 1.13
sys/arch/evbarm/conf/BCM5301X: revision 1.34
sys/arch/arm/dts/meson8b.dtsi: revision 1.6
sys/arch/arm/fdt/a9ptmr_fdt.c: revision 1.1
sys/arch/arm/dts/meson8b.dtsi: revision 1.7
sys/arch/arm/cortex/a9ptmr_var.h: revision 1.1
sys/arch/evbarm/conf/PANDABOARD: revision 1.30
sys/arch/evbarm/conf/DUOVERO: revision 1.14
sys/arch/arm/cortex/a9ptmr.c: revision 1.1
sys/arch/arm/cortex/a9ptmr.c: revision 1.2
sys/arch/arm/fdt/a9wdt_fdt.c: revision 1.1
sys/arch/evbarm/conf/BCM56340: revision 1.19
sys/arch/evbarm/conf/CUBOX-I: revision 1.23
sys/arch/arm/amlogic/meson8b_clkc.c: revision 1.4
sys/arch/evbarm/conf/PARALLELLA: revision 1.7
sys/arch/arm/cortex/files.cortex: revision 1.12
sys/arch/arm/dts/meson8b-odroidc1.dts: revision 1.4
sys/arch/arm/cortex/a9wdt.c: revision 1.9
sys/arch/evbarm/conf/ZEDBOARD: revision 1.6

spaces to tab

-

Add a driver for the A5/A9 Private timer.
While here FDTise the Watchdog driver.

-

Update for recent a9wdt changes
-

Trailing whitespace

-
Updates to get Odroid-C1 in better shape since the last DTS import

-

Various fixes / changes
- don't use prescaler
- improve AB_DEBUG output
- fix a9ptmr_delay to work with a decrementing counter!
Thanks to jmcneill@ for proving I'm an idiot

-

Add eth_rxd3 and eth_rxd2 pinctrl groups

-

Catch up to recent mainline dts changes
 1.1.2.1 10-Aug-2019  martin file a9ptmr_var.h was added on branch netbsd-9 on 2019-08-15 09:49:49 +0000
 1.22 03-Mar-2022  riastradh arm: Use device_set_private for various drivers.
 1.21 02-Dec-2020  wiz comparision -> comparison
 1.20 11-Jun-2019  skrll branches: 1.20.10;
Trailing whitespace
 1.19 22-Nov-2018  aymeric Switch the DE0 Nano SoC to the GENERIC kernel.
 1.18 28-Oct-2018  aymeric Enable the global timer at attach time, it ensures that delay() works.
 1.17 14-Oct-2018  aymeric Remove comment that the peripherals clock should be half of the cpu clock.
NFC
 1.16 20-Jun-2018  hkenken branches: 1.16.2;
Use mpcaa_off1 parameter for mapping subregion.
 1.15 05-Jun-2018  hkenken Rename ARM A9 Global Timer driver name to support fdt.

- Rename a9tmr to arma9tmr.
- Add a9tmr_fdt.c based gtmr_fdt.c.
 1.14 24-Jul-2015  ryo branches: 1.14.16;
KNF
 1.13 24-Jul-2015  ryo - fix sc_ev_missing_ticks over-counting.
- don't use 64bit division, because it has expensive cost on gcc/arm
whether it is a constant or not.

'delta' is usually taken a value around sc_autoinc depending on timing
of read. therefore 'delta / sc->sc_autoinc' would be count too much.
 1.12 04-Mar-2015  jmcneill print "A5" instead of "A9" at attach time if running on a Cortex-A5
 1.11 27-Feb-2015  jmcneill match on Cortex-A5
 1.10 08-Jan-2015  hkenken fix typo
 1.9 02-Jan-2015  jmcneill detach and re-attach timecounter when updating freq, and reinit timer on each cpu
 1.8 02-Jan-2015  jmcneill add a helper to update a9tmr frequency
 1.7 28-Mar-2014  matt branches: 1.7.4; 1.7.6;
Mark interrupt as MPSAFE.
 1.6 20-Jun-2013  matt branches: 1.6.2; 1.6.6;
Pass the offset from CBAR/PERIPHBASE in mpcore_attach_args.
Modify the list of devices to include the offset(s) from PERIPHBASE.
 1.5 12-Jun-2013  matt Don't attach a9tmr if the CPU supports the generic timer.
 1.4 29-Nov-2012  matt Make sure we enable the timer since CFE doesn't enable it by default.
 1.3 27-Sep-2012  matt branches: 1.3.2; 1.3.4;
Don't bother dealing with "extra" ticks, just count them.
 1.2 14-Sep-2012  matt Set dv_private, use a9tmr_private.
 1.1 01-Sep-2012  matt branches: 1.1.2;
Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.1.2.5 03-Dec-2017  jdolecek update from HEAD
 1.1.2.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.2.3 23-Jun-2013  tls resync from head
 1.1.2.2 25-Feb-2013  tls resync with head
 1.1.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.3.4.3 29-Nov-2012  matt Sync with HEAD.
 1.3.4.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.3.4.1 27-Sep-2012  matt file a9tmr.c was added on branch matt-nb6-plus on 2012-11-28 22:40:25 +0000
 1.3.2.4 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.3.2.3 16-Jan-2013  yamt sync with (a bit old) head
 1.3.2.2 30-Oct-2012  yamt sync with head
 1.3.2.1 27-Sep-2012  yamt file a9tmr.c was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.6.6.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.6.6.1 20-Jun-2013  matt file a9tmr.c was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.6.2.1 18-May-2014  rmind sync with head
 1.7.6.2 22-Sep-2015  skrll Sync with HEAD
 1.7.6.1 06-Apr-2015  skrll Sync with HEAD
 1.7.4.1 21-Mar-2015  snj Pull up following revision(s) (requested by jmcneill in ticket #598):
sys/arch/arm/amlogic/amlogic_board.c: up to revision 1.9
sys/arch/arm/amlogic/amlogic_canvasreg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_com.c: up to revision 1.4
sys/arch/arm/amlogic/amlogic_comreg.h: up to revision 1.3
sys/arch/arm/amlogic/amlogic_comvar.h: revision 1.1
sys/arch/arm/amlogic/amlogic_cpufreq.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_crureg.h: up to revision 1.7
sys/arch/arm/amlogic/amlogic_dwctwo.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_genfb.c: revision 1.1
sys/arch/arm/amlogic/amlogic_gmac.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_hdmireg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_intr.h: up to revision 1.5
sys/arch/arm/amlogic/amlogic_io.c: up to revision 1.7
sys/arch/arm/amlogic/amlogic_reg.h: up to revision 1.9
sys/arch/arm/amlogic/amlogic_rng.c: revision 1.1
sys/arch/arm/amlogic/amlogic_sdhc.c: up to revision 1.3
sys/arch/arm/amlogic/amlogic_sdhcreg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_space.c: revision 1.1
sys/arch/arm/amlogic/amlogic_var.h: up to revision 1.8
sys/arch/arm/amlogic/amlogic_vpureg.h: revision 1.1
sys/arch/arm/arm/bootconfig.c: revisions 1.7-1.8
sys/arch/arm/conf/files.arm: revision 1.129
sys/arch/arm/cortex/pl310.c: revisions 1.16-1.17
sys/arch/arm/cortex/a9_mpsubr.S: revisions 1.25-1.29
sys/arch/arm/cortex/a9tmr.c: revisions 1.8-1.12
sys/arch/arm/cortex/a9tmr_var.h: revision 1.4
sys/arch/arm/cortex/a9wdt.c: revisions 1.3-1.4
sys/arch/arm/cortex/armperiph.c: revisions 1.5-1.7
sys/arch/arm/arm/cpufunc.c: revision 1.151
sys/arch/arm/include/bootconfig.h: revision 1.7
sys/arch/arm/include/locore.h: revision 1.19
sys/arch/evbarm/amlogic/amlogic_machdep.c: up to revision 1.17
sys/arch/evbarm/amlogic/amlogic_start.S: up to revision 1.2
sys/arch/evbarm/amlogic/genassym.cf: revision 1.1
sys/arch/evbarm/amlogic/platform.h: revision 1.1
sys/arch/evbarm/conf/files.amlogic: up to revision 1.8
sys/arch/evbarm/conf/std.amlogic: up to revision 1.2
sys/arch/evbarm/conf/mk.amlogic: revision 1.1
sys/arch/evbarm/conf/ODROID-C1: up to revision 1.12
sys/arch/evarm/conf/ODROID-C1_INSTALL: revision 1.1
Don't use not as a variable since it's reserved in C++.
--
clean the a9 l2 cache before turning it on.
--
Add Cortex-A17 support
--
Fix CORTEXA17 support
--
Let the "cbar" device property override the cbar value, to work around
broken bootloaders
--
add a helper to update a9tmr frequency
--
detach and re-attach timecounter when updating freq, and reinit timer on
each cpu
--
fix typo
--
add BOOTOPT_TYPE_MACADDR for parsing mac address parameters
--
make sure we set ACTLR.SMP=1 for CPU_CORTEXA5 in !MP case, ok matt@
--
According to the Cortex-A5 TRM, the CBAR register is not implemented and
always reads as 0x00000000. Add ARM_CBAR option to set this in kernel
config.
--
skip a TLBIALL on Cortex-A5 that stops my odroid-c1 from booting, ok matt
--
match on Cortex-A5
--
match on Cortex-A5
--
allow arml2cc to be used on Cortex-A5 if the "offset" property is specified
--
print "A5" instead of "A9" at attach time if running on a Cortex-A5
--
Improve inline asm around dsb/dmb/isb:
- always use volatile and mark them as memory barrier
- use the common version from locore.h in all places not included from
userland
--
Work-in-progress Odroid-C1 support.
--
no need to override ARM_CBAR, remove unused COM_16750 option
--
Add basic serial console support.
--
add dwctwo and usb devices
--
ODROID-C1 SMP support.
--
auto-detect RAM size
--
ODROID-C1 onboard ethernet support.
--
add amlogicrng, add commented-out genfb placeholder
--
enable amlogicsdhc
--
add ODROID-C1 install kernel
--
Add CPUFREQ option to set boot CPU frequency. ODROID-C1 is advertised
as quad-core 1.5GHz but boots up at 1.2GHz; add CPUFREQ=1512 to config
and make sure to set the correct speed before attaching CPUs.
The speed can still be scaled down with machdep.cpu sysctls.
--
disable DEBUG, LOCKDEBUG, VERBOSE_INIT_ARM
--
Basic framebuffer console support. Work in progress.
 1.14.16.3 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.14.16.2 20-Oct-2018  pgoyette Sync with head
 1.14.16.1 25-Jun-2018  pgoyette Sync with HEAD
 1.16.2.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.16.2.1 10-Jun-2019  christos Sync with HEAD
 1.20.10.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.1 01-Sep-2012  matt branches: 1.1.4; 1.1.6; 1.1.16;
Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.1.16.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.1.16.1 01-Sep-2012  matt file a9tmr_intr.h was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.1.6.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.1.6.1 01-Sep-2012  matt file a9tmr_intr.h was added on branch matt-nb6-plus on 2012-11-28 22:40:26 +0000
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 01-Sep-2012  yamt file a9tmr_intr.h was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.3 02-Oct-2021  skrll Trailing whitespace
 1.2 27-Jul-2019  skrll Rename a register define to make it more obvious it's watchdog only
 1.1 01-Sep-2012  matt branches: 1.1.4; 1.1.6; 1.1.16; 1.1.46;
Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.1.46.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.16.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.1.16.1 01-Sep-2012  matt file a9tmr_reg.h was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.1.6.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.1.6.1 01-Sep-2012  matt file a9tmr_reg.h was added on branch matt-nb6-plus on 2012-11-28 22:40:26 +0000
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 01-Sep-2012  yamt file a9tmr_reg.h was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.7 10-Aug-2019  skrll Add a driver for the A5/A9 Private timer.

While here FDTise the Watchdog driver.
 1.6 20-Jun-2018  hkenken branches: 1.6.2; 1.6.6;
Use mpcaa_off1 parameter for mapping subregion.
 1.5 05-Jun-2018  hkenken Rename ARM A9 Global Timer driver name to support fdt.

- Rename a9tmr to arma9tmr.
- Add a9tmr_fdt.c based gtmr_fdt.c.
 1.4 02-Jan-2015  jmcneill branches: 1.4.16;
add a helper to update a9tmr frequency
 1.3 20-Jun-2013  matt branches: 1.3.6; 1.3.10; 1.3.12;
Pass the offset from CBAR/PERIPHBASE in mpcore_attach_args.
Modify the list of devices to include the offset(s) from PERIPHBASE.
 1.2 27-Sep-2012  matt branches: 1.2.2; 1.2.4;
Don't bother dealing with "extra" ticks, just count them.
 1.1 01-Sep-2012  matt branches: 1.1.2;
Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.1.2.3 03-Dec-2017  jdolecek update from HEAD
 1.1.2.2 23-Jun-2013  tls resync from head
 1.1.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.2.4.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.2.4.1 27-Sep-2012  matt file a9tmr_var.h was added on branch matt-nb6-plus on 2012-11-28 22:40:26 +0000
 1.2.2.3 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.2.2.2 30-Oct-2012  yamt sync with head
 1.2.2.1 27-Sep-2012  yamt file a9tmr_var.h was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.3.12.1 06-Apr-2015  skrll Sync with HEAD
 1.3.10.1 21-Mar-2015  snj Pull up following revision(s) (requested by jmcneill in ticket #598):
sys/arch/arm/amlogic/amlogic_board.c: up to revision 1.9
sys/arch/arm/amlogic/amlogic_canvasreg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_com.c: up to revision 1.4
sys/arch/arm/amlogic/amlogic_comreg.h: up to revision 1.3
sys/arch/arm/amlogic/amlogic_comvar.h: revision 1.1
sys/arch/arm/amlogic/amlogic_cpufreq.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_crureg.h: up to revision 1.7
sys/arch/arm/amlogic/amlogic_dwctwo.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_genfb.c: revision 1.1
sys/arch/arm/amlogic/amlogic_gmac.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_hdmireg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_intr.h: up to revision 1.5
sys/arch/arm/amlogic/amlogic_io.c: up to revision 1.7
sys/arch/arm/amlogic/amlogic_reg.h: up to revision 1.9
sys/arch/arm/amlogic/amlogic_rng.c: revision 1.1
sys/arch/arm/amlogic/amlogic_sdhc.c: up to revision 1.3
sys/arch/arm/amlogic/amlogic_sdhcreg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_space.c: revision 1.1
sys/arch/arm/amlogic/amlogic_var.h: up to revision 1.8
sys/arch/arm/amlogic/amlogic_vpureg.h: revision 1.1
sys/arch/arm/arm/bootconfig.c: revisions 1.7-1.8
sys/arch/arm/conf/files.arm: revision 1.129
sys/arch/arm/cortex/pl310.c: revisions 1.16-1.17
sys/arch/arm/cortex/a9_mpsubr.S: revisions 1.25-1.29
sys/arch/arm/cortex/a9tmr.c: revisions 1.8-1.12
sys/arch/arm/cortex/a9tmr_var.h: revision 1.4
sys/arch/arm/cortex/a9wdt.c: revisions 1.3-1.4
sys/arch/arm/cortex/armperiph.c: revisions 1.5-1.7
sys/arch/arm/arm/cpufunc.c: revision 1.151
sys/arch/arm/include/bootconfig.h: revision 1.7
sys/arch/arm/include/locore.h: revision 1.19
sys/arch/evbarm/amlogic/amlogic_machdep.c: up to revision 1.17
sys/arch/evbarm/amlogic/amlogic_start.S: up to revision 1.2
sys/arch/evbarm/amlogic/genassym.cf: revision 1.1
sys/arch/evbarm/amlogic/platform.h: revision 1.1
sys/arch/evbarm/conf/files.amlogic: up to revision 1.8
sys/arch/evbarm/conf/std.amlogic: up to revision 1.2
sys/arch/evbarm/conf/mk.amlogic: revision 1.1
sys/arch/evbarm/conf/ODROID-C1: up to revision 1.12
sys/arch/evarm/conf/ODROID-C1_INSTALL: revision 1.1
Don't use not as a variable since it's reserved in C++.
--
clean the a9 l2 cache before turning it on.
--
Add Cortex-A17 support
--
Fix CORTEXA17 support
--
Let the "cbar" device property override the cbar value, to work around
broken bootloaders
--
add a helper to update a9tmr frequency
--
detach and re-attach timecounter when updating freq, and reinit timer on
each cpu
--
fix typo
--
add BOOTOPT_TYPE_MACADDR for parsing mac address parameters
--
make sure we set ACTLR.SMP=1 for CPU_CORTEXA5 in !MP case, ok matt@
--
According to the Cortex-A5 TRM, the CBAR register is not implemented and
always reads as 0x00000000. Add ARM_CBAR option to set this in kernel
config.
--
skip a TLBIALL on Cortex-A5 that stops my odroid-c1 from booting, ok matt
--
match on Cortex-A5
--
match on Cortex-A5
--
allow arml2cc to be used on Cortex-A5 if the "offset" property is specified
--
print "A5" instead of "A9" at attach time if running on a Cortex-A5
--
Improve inline asm around dsb/dmb/isb:
- always use volatile and mark them as memory barrier
- use the common version from locore.h in all places not included from
userland
--
Work-in-progress Odroid-C1 support.
--
no need to override ARM_CBAR, remove unused COM_16750 option
--
Add basic serial console support.
--
add dwctwo and usb devices
--
ODROID-C1 SMP support.
--
auto-detect RAM size
--
ODROID-C1 onboard ethernet support.
--
add amlogicrng, add commented-out genfb placeholder
--
enable amlogicsdhc
--
add ODROID-C1 install kernel
--
Add CPUFREQ option to set boot CPU frequency. ODROID-C1 is advertised
as quad-core 1.5GHz but boots up at 1.2GHz; add CPUFREQ=1512 to config
and make sure to set the correct speed before attaching CPUs.
The speed can still be scaled down with machdep.cpu sysctls.
--
disable DEBUG, LOCKDEBUG, VERBOSE_INIT_ARM
--
Basic framebuffer console support. Work in progress.
 1.3.6.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.3.6.1 20-Jun-2013  matt file a9tmr_var.h was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.4.16.1 25-Jun-2018  pgoyette Sync with HEAD
 1.6.6.1 15-Aug-2019  martin Pull up following revision(s) (requested by skrll in ticket #55):

sys/arch/arm/cortex/a9wdt.c: revision 1.10
sys/arch/evbarm/conf/HUMMINGBOARD: revision 1.9
sys/arch/evbarm/conf/GENERIC: revision 1.50
sys/arch/evbarm/conf/NITROGEN6X: revision 1.24
sys/arch/arm/cortex/a9tmr_var.h: revision 1.7
sys/arch/arm/fdt/files.fdt: revision 1.29
sys/arch/arm/amlogic/meson_platform.c: revision 1.12
sys/arch/arm/amlogic/meson8b_pinctrl.c: revision 1.2
sys/arch/arm/amlogic/meson_platform.c: revision 1.13
sys/arch/evbarm/conf/BCM5301X: revision 1.34
sys/arch/arm/dts/meson8b.dtsi: revision 1.6
sys/arch/arm/fdt/a9ptmr_fdt.c: revision 1.1
sys/arch/arm/dts/meson8b.dtsi: revision 1.7
sys/arch/arm/cortex/a9ptmr_var.h: revision 1.1
sys/arch/evbarm/conf/PANDABOARD: revision 1.30
sys/arch/evbarm/conf/DUOVERO: revision 1.14
sys/arch/arm/cortex/a9ptmr.c: revision 1.1
sys/arch/arm/cortex/a9ptmr.c: revision 1.2
sys/arch/arm/fdt/a9wdt_fdt.c: revision 1.1
sys/arch/evbarm/conf/BCM56340: revision 1.19
sys/arch/evbarm/conf/CUBOX-I: revision 1.23
sys/arch/arm/amlogic/meson8b_clkc.c: revision 1.4
sys/arch/evbarm/conf/PARALLELLA: revision 1.7
sys/arch/arm/cortex/files.cortex: revision 1.12
sys/arch/arm/dts/meson8b-odroidc1.dts: revision 1.4
sys/arch/arm/cortex/a9wdt.c: revision 1.9
sys/arch/evbarm/conf/ZEDBOARD: revision 1.6

spaces to tab

-

Add a driver for the A5/A9 Private timer.
While here FDTise the Watchdog driver.

-

Update for recent a9wdt changes
-

Trailing whitespace

-
Updates to get Odroid-C1 in better shape since the last DTS import

-

Various fixes / changes
- don't use prescaler
- improve AB_DEBUG output
- fix a9ptmr_delay to work with a decrementing counter!
Thanks to jmcneill@ for proving I'm an idiot

-

Add eth_rxd3 and eth_rxd2 pinctrl groups

-

Catch up to recent mainline dts changes
 1.6.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.10 10-Aug-2019  skrll Add a driver for the A5/A9 Private timer.

While here FDTise the Watchdog driver.
 1.9 10-Aug-2019  skrll spaces to tab
 1.8 30-Jul-2019  skrll branches: 1.8.2;
Fix loop to calculate prescaler divisor.
 1.7 29-Dec-2017  skrll branches: 1.7.4;
Trailing whitespace
 1.6 29-Dec-2017  skrll Set attached to true when attach completes.

Reported by Ramakrishna Rao Desetti on port-arm
 1.5 04-Oct-2016  kiyohara Register sysmon_wdog.
 1.4 04-Mar-2015  jmcneill branches: 1.4.2;
print "A5" instead of "A9" at attach time if running on a Cortex-A5
 1.3 27-Feb-2015  jmcneill match on Cortex-A5
 1.2 13-Apr-2014  matt branches: 1.2.2; 1.2.4;
write correct register.
 1.1 01-Sep-2012  matt branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.16; 1.1.18;
Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.1.18.1 10-Aug-2014  tls Rebase.
 1.1.16.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.1.16.1 01-Sep-2012  matt file a9wdt.c was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.1.8.1 18-May-2014  rmind sync with head
 1.1.6.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.1.6.1 01-Sep-2012  matt file a9wdt.c was added on branch matt-nb6-plus on 2012-11-28 22:40:26 +0000
 1.1.4.3 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.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 01-Sep-2012  yamt file a9wdt.c was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.1.2.2 03-Dec-2017  jdolecek update from HEAD
 1.1.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.4.2 05-Dec-2016  skrll Sync with HEAD
 1.2.4.1 06-Apr-2015  skrll Sync with HEAD
 1.2.2.1 21-Mar-2015  snj Pull up following revision(s) (requested by jmcneill in ticket #598):
sys/arch/arm/amlogic/amlogic_board.c: up to revision 1.9
sys/arch/arm/amlogic/amlogic_canvasreg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_com.c: up to revision 1.4
sys/arch/arm/amlogic/amlogic_comreg.h: up to revision 1.3
sys/arch/arm/amlogic/amlogic_comvar.h: revision 1.1
sys/arch/arm/amlogic/amlogic_cpufreq.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_crureg.h: up to revision 1.7
sys/arch/arm/amlogic/amlogic_dwctwo.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_genfb.c: revision 1.1
sys/arch/arm/amlogic/amlogic_gmac.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_hdmireg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_intr.h: up to revision 1.5
sys/arch/arm/amlogic/amlogic_io.c: up to revision 1.7
sys/arch/arm/amlogic/amlogic_reg.h: up to revision 1.9
sys/arch/arm/amlogic/amlogic_rng.c: revision 1.1
sys/arch/arm/amlogic/amlogic_sdhc.c: up to revision 1.3
sys/arch/arm/amlogic/amlogic_sdhcreg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_space.c: revision 1.1
sys/arch/arm/amlogic/amlogic_var.h: up to revision 1.8
sys/arch/arm/amlogic/amlogic_vpureg.h: revision 1.1
sys/arch/arm/arm/bootconfig.c: revisions 1.7-1.8
sys/arch/arm/conf/files.arm: revision 1.129
sys/arch/arm/cortex/pl310.c: revisions 1.16-1.17
sys/arch/arm/cortex/a9_mpsubr.S: revisions 1.25-1.29
sys/arch/arm/cortex/a9tmr.c: revisions 1.8-1.12
sys/arch/arm/cortex/a9tmr_var.h: revision 1.4
sys/arch/arm/cortex/a9wdt.c: revisions 1.3-1.4
sys/arch/arm/cortex/armperiph.c: revisions 1.5-1.7
sys/arch/arm/arm/cpufunc.c: revision 1.151
sys/arch/arm/include/bootconfig.h: revision 1.7
sys/arch/arm/include/locore.h: revision 1.19
sys/arch/evbarm/amlogic/amlogic_machdep.c: up to revision 1.17
sys/arch/evbarm/amlogic/amlogic_start.S: up to revision 1.2
sys/arch/evbarm/amlogic/genassym.cf: revision 1.1
sys/arch/evbarm/amlogic/platform.h: revision 1.1
sys/arch/evbarm/conf/files.amlogic: up to revision 1.8
sys/arch/evbarm/conf/std.amlogic: up to revision 1.2
sys/arch/evbarm/conf/mk.amlogic: revision 1.1
sys/arch/evbarm/conf/ODROID-C1: up to revision 1.12
sys/arch/evarm/conf/ODROID-C1_INSTALL: revision 1.1
Don't use not as a variable since it's reserved in C++.
--
clean the a9 l2 cache before turning it on.
--
Add Cortex-A17 support
--
Fix CORTEXA17 support
--
Let the "cbar" device property override the cbar value, to work around
broken bootloaders
--
add a helper to update a9tmr frequency
--
detach and re-attach timecounter when updating freq, and reinit timer on
each cpu
--
fix typo
--
add BOOTOPT_TYPE_MACADDR for parsing mac address parameters
--
make sure we set ACTLR.SMP=1 for CPU_CORTEXA5 in !MP case, ok matt@
--
According to the Cortex-A5 TRM, the CBAR register is not implemented and
always reads as 0x00000000. Add ARM_CBAR option to set this in kernel
config.
--
skip a TLBIALL on Cortex-A5 that stops my odroid-c1 from booting, ok matt
--
match on Cortex-A5
--
match on Cortex-A5
--
allow arml2cc to be used on Cortex-A5 if the "offset" property is specified
--
print "A5" instead of "A9" at attach time if running on a Cortex-A5
--
Improve inline asm around dsb/dmb/isb:
- always use volatile and mark them as memory barrier
- use the common version from locore.h in all places not included from
userland
--
Work-in-progress Odroid-C1 support.
--
no need to override ARM_CBAR, remove unused COM_16750 option
--
Add basic serial console support.
--
add dwctwo and usb devices
--
ODROID-C1 SMP support.
--
auto-detect RAM size
--
ODROID-C1 onboard ethernet support.
--
add amlogicrng, add commented-out genfb placeholder
--
enable amlogicsdhc
--
add ODROID-C1 install kernel
--
Add CPUFREQ option to set boot CPU frequency. ODROID-C1 is advertised
as quad-core 1.5GHz but boots up at 1.2GHz; add CPUFREQ=1512 to config
and make sure to set the correct speed before attaching CPUs.
The speed can still be scaled down with machdep.cpu sysctls.
--
disable DEBUG, LOCKDEBUG, VERBOSE_INIT_ARM
--
Basic framebuffer console support. Work in progress.
 1.4.2.1 04-Nov-2016  pgoyette Sync with HEAD
 1.7.4.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.8.2.1 15-Aug-2019  martin Pull up following revision(s) (requested by skrll in ticket #55):

sys/arch/arm/cortex/a9wdt.c: revision 1.10
sys/arch/evbarm/conf/HUMMINGBOARD: revision 1.9
sys/arch/evbarm/conf/GENERIC: revision 1.50
sys/arch/evbarm/conf/NITROGEN6X: revision 1.24
sys/arch/arm/cortex/a9tmr_var.h: revision 1.7
sys/arch/arm/fdt/files.fdt: revision 1.29
sys/arch/arm/amlogic/meson_platform.c: revision 1.12
sys/arch/arm/amlogic/meson8b_pinctrl.c: revision 1.2
sys/arch/arm/amlogic/meson_platform.c: revision 1.13
sys/arch/evbarm/conf/BCM5301X: revision 1.34
sys/arch/arm/dts/meson8b.dtsi: revision 1.6
sys/arch/arm/fdt/a9ptmr_fdt.c: revision 1.1
sys/arch/arm/dts/meson8b.dtsi: revision 1.7
sys/arch/arm/cortex/a9ptmr_var.h: revision 1.1
sys/arch/evbarm/conf/PANDABOARD: revision 1.30
sys/arch/evbarm/conf/DUOVERO: revision 1.14
sys/arch/arm/cortex/a9ptmr.c: revision 1.1
sys/arch/arm/cortex/a9ptmr.c: revision 1.2
sys/arch/arm/fdt/a9wdt_fdt.c: revision 1.1
sys/arch/evbarm/conf/BCM56340: revision 1.19
sys/arch/evbarm/conf/CUBOX-I: revision 1.23
sys/arch/arm/amlogic/meson8b_clkc.c: revision 1.4
sys/arch/evbarm/conf/PARALLELLA: revision 1.7
sys/arch/arm/cortex/files.cortex: revision 1.12
sys/arch/arm/dts/meson8b-odroidc1.dts: revision 1.4
sys/arch/arm/cortex/a9wdt.c: revision 1.9
sys/arch/evbarm/conf/ZEDBOARD: revision 1.6

spaces to tab

-

Add a driver for the A5/A9 Private timer.
While here FDTise the Watchdog driver.

-

Update for recent a9wdt changes
-

Trailing whitespace

-
Updates to get Odroid-C1 in better shape since the last DTS import

-

Various fixes / changes
- don't use prescaler
- improve AB_DEBUG output
- fix a9ptmr_delay to work with a decrementing counter!
Thanks to jmcneill@ for proving I'm an idiot

-

Add eth_rxd3 and eth_rxd2 pinctrl groups

-

Catch up to recent mainline dts changes
 1.20 19-Jun-2025  andvar Add missing RCSIDs.
Fix typo s/btyes/bytes/ in comment.
 1.19 07-Aug-2021  thorpej branches: 1.19.12;
Merge thorpej-cfargs2.
 1.18 24-Apr-2021  thorpej branches: 1.18.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.17 28-Nov-2020  skrll branches: 1.17.2;
Fix build
 1.16 29-Sep-2020  jmcneill branches: 1.16.2;
Collapse all CPU_CORTEXA<n> options into CPU_CORTEX and do runtime
detection instead of ifdefs where required.
 1.15 25-Sep-2018  skrll Cortex A5 also uses PPI 27 for timer.

ODROID-C1 boots again.
 1.14 15-Aug-2018  skrll Sprinkle #include "opt_cputypes.h"
 1.13 05-Jun-2018  hkenken branches: 1.13.2;
Rename ARM A9 Global Timer driver name to support fdt.

- Rename a9tmr to arma9tmr.
- Add a9tmr_fdt.c based gtmr_fdt.c.
 1.12 29-Dec-2017  skrll branches: 1.12.2;
Set attached to true when attach completes.

Reported by Ramakrishna Rao Desetti on port-arm
 1.11 26-May-2017  jmcneill branches: 1.11.6;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.
 1.10 02-Apr-2015  matt need to include <sys/lwp.h>
 1.9 28-Feb-2015  skrll Make this compile where gtmr isn't used.
 1.8 28-Feb-2015  skrll Initial RPI2 support - it doesn't work yet. The generic timer gets messed
up somehow.

This commit changes the KVA layout of the RPI.
 1.7 27-Feb-2015  jmcneill allow arml2cc to be used on Cortex-A5 if the "offset" property is specified
 1.6 27-Feb-2015  jmcneill match on Cortex-A5
 1.5 05-Dec-2014  jmcneill Let the "cbar" device property override the cbar value, to work around broken bootloaders
 1.4 20-Jun-2013  matt branches: 1.4.6; 1.4.10; 1.4.12;
Pass the offset from CBAR/PERIPHBASE in mpcore_attach_args.
Modify the list of devices to include the offset(s) from PERIPHBASE.
 1.3 16-Jun-2013  matt Add generic timer support (untested)
 1.2 02-Sep-2012  matt branches: 1.2.2; 1.2.4; 1.2.6;
Add driver to attach ARM PL210 L2 Cache Controller
arml2cc0 at armperiph0: ARM PL310 L2 r3p2 Cache Controller
arml2cc0: 256KB/32B 16-way L2 Unified cache
 1.1 01-Sep-2012  matt Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.2.6.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.2.6.1 02-Sep-2012  matt file armperiph.c was added on branch matt-nb6-plus on 2012-11-28 22:40:26 +0000
 1.2.4.3 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.2.4.2 30-Oct-2012  yamt sync with head
 1.2.4.1 02-Sep-2012  yamt file armperiph.c was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.2.2.2 03-Dec-2017  jdolecek update from HEAD
 1.2.2.1 23-Jun-2013  tls resync from head
 1.4.12.2 28-Aug-2017  skrll Sync with HEAD
 1.4.12.1 06-Apr-2015  skrll Sync with HEAD
 1.4.10.2 21-Mar-2015  snj Pull up following revision(s) (requested by jmcneill in ticket #598):
sys/arch/arm/amlogic/amlogic_board.c: up to revision 1.9
sys/arch/arm/amlogic/amlogic_canvasreg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_com.c: up to revision 1.4
sys/arch/arm/amlogic/amlogic_comreg.h: up to revision 1.3
sys/arch/arm/amlogic/amlogic_comvar.h: revision 1.1
sys/arch/arm/amlogic/amlogic_cpufreq.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_crureg.h: up to revision 1.7
sys/arch/arm/amlogic/amlogic_dwctwo.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_genfb.c: revision 1.1
sys/arch/arm/amlogic/amlogic_gmac.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_hdmireg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_intr.h: up to revision 1.5
sys/arch/arm/amlogic/amlogic_io.c: up to revision 1.7
sys/arch/arm/amlogic/amlogic_reg.h: up to revision 1.9
sys/arch/arm/amlogic/amlogic_rng.c: revision 1.1
sys/arch/arm/amlogic/amlogic_sdhc.c: up to revision 1.3
sys/arch/arm/amlogic/amlogic_sdhcreg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_space.c: revision 1.1
sys/arch/arm/amlogic/amlogic_var.h: up to revision 1.8
sys/arch/arm/amlogic/amlogic_vpureg.h: revision 1.1
sys/arch/arm/arm/bootconfig.c: revisions 1.7-1.8
sys/arch/arm/conf/files.arm: revision 1.129
sys/arch/arm/cortex/pl310.c: revisions 1.16-1.17
sys/arch/arm/cortex/a9_mpsubr.S: revisions 1.25-1.29
sys/arch/arm/cortex/a9tmr.c: revisions 1.8-1.12
sys/arch/arm/cortex/a9tmr_var.h: revision 1.4
sys/arch/arm/cortex/a9wdt.c: revisions 1.3-1.4
sys/arch/arm/cortex/armperiph.c: revisions 1.5-1.7
sys/arch/arm/arm/cpufunc.c: revision 1.151
sys/arch/arm/include/bootconfig.h: revision 1.7
sys/arch/arm/include/locore.h: revision 1.19
sys/arch/evbarm/amlogic/amlogic_machdep.c: up to revision 1.17
sys/arch/evbarm/amlogic/amlogic_start.S: up to revision 1.2
sys/arch/evbarm/amlogic/genassym.cf: revision 1.1
sys/arch/evbarm/amlogic/platform.h: revision 1.1
sys/arch/evbarm/conf/files.amlogic: up to revision 1.8
sys/arch/evbarm/conf/std.amlogic: up to revision 1.2
sys/arch/evbarm/conf/mk.amlogic: revision 1.1
sys/arch/evbarm/conf/ODROID-C1: up to revision 1.12
sys/arch/evarm/conf/ODROID-C1_INSTALL: revision 1.1
Don't use not as a variable since it's reserved in C++.
--
clean the a9 l2 cache before turning it on.
--
Add Cortex-A17 support
--
Fix CORTEXA17 support
--
Let the "cbar" device property override the cbar value, to work around
broken bootloaders
--
add a helper to update a9tmr frequency
--
detach and re-attach timecounter when updating freq, and reinit timer on
each cpu
--
fix typo
--
add BOOTOPT_TYPE_MACADDR for parsing mac address parameters
--
make sure we set ACTLR.SMP=1 for CPU_CORTEXA5 in !MP case, ok matt@
--
According to the Cortex-A5 TRM, the CBAR register is not implemented and
always reads as 0x00000000. Add ARM_CBAR option to set this in kernel
config.
--
skip a TLBIALL on Cortex-A5 that stops my odroid-c1 from booting, ok matt
--
match on Cortex-A5
--
match on Cortex-A5
--
allow arml2cc to be used on Cortex-A5 if the "offset" property is specified
--
print "A5" instead of "A9" at attach time if running on a Cortex-A5
--
Improve inline asm around dsb/dmb/isb:
- always use volatile and mark them as memory barrier
- use the common version from locore.h in all places not included from
userland
--
Work-in-progress Odroid-C1 support.
--
no need to override ARM_CBAR, remove unused COM_16750 option
--
Add basic serial console support.
--
add dwctwo and usb devices
--
ODROID-C1 SMP support.
--
auto-detect RAM size
--
ODROID-C1 onboard ethernet support.
--
add amlogicrng, add commented-out genfb placeholder
--
enable amlogicsdhc
--
add ODROID-C1 install kernel
--
Add CPUFREQ option to set boot CPU frequency. ODROID-C1 is advertised
as quad-core 1.5GHz but boots up at 1.2GHz; add CPUFREQ=1512 to config
and make sure to set the correct speed before attaching CPUs.
The speed can still be scaled down with machdep.cpu sysctls.
--
disable DEBUG, LOCKDEBUG, VERBOSE_INIT_ARM
--
Basic framebuffer console support. Work in progress.
 1.4.10.1 11-Mar-2015  snj Pull up following revision(s) (requested by skrll in ticket #582):
distrib/utils/embedded/conf/rpi.conf: revision 1.27
etc/etc.evbarm/Makefile.inc: revision 1.70
sys/arch/arm/broadcom/bcm2835_intr.c: revision 1.5-1.7
sys/arch/arm/broadcom/bcm2835_obio.c: revision 1.23, 1.24
sys/arch/arm/broadcom/bcm2835_space.c: revision 1.8
sys/arch/arm/broadcom/bcm2835reg.h: revision 1.14
sys/arch/arm/broadcom/bcm2835var.h: revision 1.2
sys/arch/arm/broadcom/files.bcm2835: revision 1.24
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.30
sys/arch/arm/cortex/armperiph.c: revision 1.8, 1.9
sys/arch/arm/cortex/gtmr.c: revision 1.9
sys/arch/arm/cortex/gtmr_var.h: revision 1.5
sys/arch/arm/cortex/mpcore_var.h: revision 1.3
sys/arch/arm/include/cpu.h: revision 1.84
sys/arch/evbarm/conf/RPI2: revision 1.1, 1.2
sys/arch/evbarm/conf/RPI2_INSTALL: revision 1.1
sys/arch/evbarm/conf/RPI: revision 1.59, 1.60
sys/arch/evbarm/conf/mk.rpi: revision 1.4
sys/arch/evbarm/conf/std.rpi: revisions 1.16-1.19 via patch
sys/arch/evbarm/rpi/genassym.cf: revision 1.2
sys/arch/evbarm/rpi/rpi.h: revision 1.4
sys/arch/evbarm/rpi/rpi2_start.S: revision 1.1
sys/arch/evbarm/rpi/rpi_machdep.c: revision 1.57, 1.58 via patch
sys/arch/evbarm/rpi/rpi_start.S: revision 1.13
Move some options into std.rpi
--
Add __HAVE_MM_MD_CACHE_ALIASING
Pull up following revision(s) (requested by skrll in ticket #582):
Fix TPIDRPRW_IS_CURLWP builds.
--
A MULTIPROCESSOR kernel requires TPIDRPRW_IS_CURCPU.
--
Use TPIDRPRW_IS_CURLWP as it's a slight code reduction and performance
improvement.
Initial RPI2 support - it doesn't work yet. The generic timer gets messed
up somehow.
This commit changes the KVA layout of the RPI.
--
Make this compile where gtmr isn't used.
--
Spin up the non-boot CPUs, but don't allow cpu_boot_secondary_processors
to see them for now.
RPI2 nows works well with only the boot cpu.
--
Appease a KASSERT - will be remove when MULTIPROCESSOR RPI2 is fixed.
--
Add RPI2 to kernels build for both earmv[67].
Use the earmv6 built kernels to create an image that can be used on both
RPI and RPI2
--
Add an RPI2_INSTALL
 1.4.6.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.4.6.1 20-Jun-2013  matt file armperiph.c was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.11.6.1 13-Dec-2017  matt Add Cortex-A35 devices
 1.12.2.3 30-Sep-2018  pgoyette Ssync with HEAD
 1.12.2.2 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.12.2.1 25-Jun-2018  pgoyette Sync with HEAD
 1.13.2.1 10-Jun-2019  christos Sync with HEAD
 1.16.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.17.2.1 21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.18.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.19.12.1 02-Aug-2025  perseant Sync with HEAD
 1.2 05-Jun-2017  skrll Removed unused file
 1.1 25-Nov-2015  marty branches: 1.1.2; 1.1.12;
something temporary that will go away once odroid xu4 works
 1.1.12.1 31-Jul-2023  martin Pull up following revision(s) (requested by riastradh in ticket #1859):

sys/arch/ia64/ia64/vm_machdep.c: revision 1.18
sys/arch/powerpc/powerpc/locore_subr.S: revision 1.67
sys/arch/aarch64/aarch64/locore.S: revision 1.91
sys/arch/mips/include/asm.h: revision 1.74
sys/arch/hppa/include/cpu.h: revision 1.13
sys/arch/arm/arm/armv6_start.S: revision 1.38
(applied also to sys/arch/arm/cortex/a9_mpsubr.S,
sys/arch/arm/cortex/a9_mpsubr.S,
sys/arch/arm/cortex/cortex_init.S)
sys/arch/evbmips/ingenic/cpu_startup.S: revision 1.2
sys/arch/mips/mips/locore.S: revision 1.229
sys/arch/alpha/include/asm.h: revision 1.45
(applied to sys/arch/alpha/alpha/multiproc.s)
sys/arch/sparc64/sparc64/locore.s: revision 1.432
sys/arch/vax/vax/subr.S: revision 1.42
sys/arch/mips/mips/locore_mips3.S: revision 1.116
sys/arch/ia64/ia64/machdep.c: revision 1.44
sys/arch/arm/arm32/cpuswitch.S: revision 1.106
sys/arch/sparc/sparc/locore.s: revision 1.284
(all via patch)

aarch64: Add missing barriers in cpu_switchto.
Details in comments.

Note: This is a conservative change that inserts a barrier where
there was a comment saying none is needed, which is probably correct.
The goal of this change is to systematically add barriers to be
confident in correctness; subsequent changes may remove some bariers,
as an optimization, with an explanation of why each barrier is not
needed.

PR kern/57240

alpha: Add missing barriers in cpu_switchto.
Details in comments.

arm32: Add missing barriers in cpu_switchto.
Details in comments.

hppa: Add missing barriers in cpu_switchto.
Not sure hppa has ever had working MULTIPROCESSOR, so maybe no
pullups needed?

ia64: Add missing barriers in cpu_switchto.
(ia64 has never really worked, so no pullups needed, right?)

mips: Add missing barriers in cpu_switchto.
Details in comments.

powerpc: Add missing barriers in cpu_switchto.
Details in comments.

sparc: Add missing barriers in cpu_switchto.

sparc64: Add missing barriers in cpu_switchto.
Details in comments.

vax: Note where cpu_switchto needs barriers.

Not sure vax has ever had working MULTIPROCESSOR, though, and I'm not
even sure how to spell store-before-load barriers on VAX, so no
functional change for now.
 1.1.2.3 28-Aug-2017  skrll Sync with HEAD
 1.1.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.1 25-Nov-2015  skrll file cortex_init.S was added on branch nick-nhusb on 2015-12-27 12:09:30 +0000
 1.6 02-Oct-2025  riastradh cpu_in_cksum_asm_neon.S: Nix trailing whitespace.

No functional change intended.
 1.5 19-Jun-2025  andvar Add missing RCSIDs.
Fix typo s/btyes/bytes/ in comment.
 1.4 02-Oct-2021  skrll branches: 1.4.10;
Trailing whitespace
 1.3 22-Dec-2012  matt branches: 1.3.2; 1.3.6; 1.3.14;
Rework considerably. Use alternating sets of registers.
(Still not faster than normal ARM code).
 1.2 18-Dec-2012  matt Tighten up cpu_in_cksum_neon_v4hdr by 3 instructions.
Swap the doubles on a partial qword load on BE platforms.
 1.1 17-Dec-2012  matt Add preliminary version of a NEON based in_cksum routine.
 1.3.14.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.3.14.1 22-Dec-2012  matt file cpu_in_cksum_asm_neon.S was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.3.6.2 25-Feb-2013  tls resync with head
 1.3.6.1 22-Dec-2012  tls file cpu_in_cksum_asm_neon.S was added on branch tls-maxphys on 2013-02-25 00:28:26 +0000
 1.3.2.2 23-Jan-2013  yamt sync with head
 1.3.2.1 22-Dec-2012  yamt file cpu_in_cksum_asm_neon.S was added on branch yamt-pagecache on 2013-01-23 00:05:41 +0000
 1.4.10.1 02-Aug-2025  perseant Sync with HEAD
 1.2 19-Jun-2025  andvar Add missing RCSIDs.
Fix typo s/btyes/bytes/ in comment.
 1.1 17-Dec-2012  matt branches: 1.1.2; 1.1.6; 1.1.14; 1.1.80;
Add preliminary version of a NEON based in_cksum routine.
 1.1.80.1 02-Aug-2025  perseant Sync with HEAD
 1.1.14.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.1.14.1 17-Dec-2012  matt file cpu_in_cksum_neon.c was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 17-Dec-2012  tls file cpu_in_cksum_neon.c was added on branch tls-maxphys on 2013-02-25 00:28:26 +0000
 1.1.2.2 23-Jan-2013  yamt sync with head
 1.1.2.1 17-Dec-2012  yamt file cpu_in_cksum_neon.c was added on branch yamt-pagecache on 2013-01-23 00:05:41 +0000
 1.17 25-Jun-2022  jmcneill Remove GIC_SPLFUNCS.
 1.16 10-Aug-2021  jmcneill Make gic_splfuncs optional and disable it by default until it has had
more testing.
 1.15 10-Aug-2021  jmcneill Use custom spl funcs for GIC and avoid unnecessary pmr register accesses
in splx.
 1.14 29-Sep-2020  jmcneill Collapse all CPU_CORTEXA<n> options into CPU_CORTEX and do runtime
detection instead of ifdefs where required.
 1.13 14-Oct-2019  jmcneill Add support for Amazon's Graviton MSI controller.

Graviton has a GICv3 with a modified GICv2m (!) for MSIs. Instead of
sending messages to a fixed address with the SPI as data, the Graviton's
GICv2m uses a different address for each vector with "don't care" as data.
 1.12 10-Aug-2019  skrll Add a driver for the A5/A9 Private timer.

While here FDTise the Watchdog driver.
 1.11 12-Nov-2018  jmcneill branches: 1.11.4;
Support building kernels with ACPI and no PCI.
 1.10 09-Nov-2018  jmcneill Add support for GICv3 Locality-specific Periphal Interrupts (LPIs) and the
Interrupt Translation Service (ITS).
 1.9 21-Oct-2018  jmcneill Add support for PCI MSI using ARM GICv2m.
 1.8 08-Aug-2018  jmcneill Add GICv3 support.
 1.7 05-Jun-2018  hkenken branches: 1.7.2;
Rename ARM A9 Global Timer driver name to support fdt.

- Rename a9tmr to arma9tmr.
- Add a9tmr_fdt.c based gtmr_fdt.c.
 1.6 28-May-2017  jmcneill branches: 1.6.8;
Move children of armperiph to the "mpcorebus" interface attribute and have
armperiph declare support for it.
 1.5 19-Feb-2014  matt branches: 1.5.6;
Add needs-flag to arml2cc
 1.4 16-Jun-2013  matt branches: 1.4.2; 1.4.6;
Add generic timer support (untested)
 1.3 17-Dec-2012  matt Add preliminary version of a NEON based in_cksum routine.
 1.2 02-Sep-2012  matt branches: 1.2.2; 1.2.4; 1.2.6;
Add driver to attach ARM PL210 L2 Cache Controller
arml2cc0 at armperiph0: ARM PL310 L2 r3p2 Cache Controller
arml2cc0: 256KB/32B 16-way L2 Unified cache
 1.1 01-Sep-2012  matt Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.2.6.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.2.6.1 02-Sep-2012  matt file files.cortex was added on branch matt-nb6-plus on 2012-11-28 22:40:26 +0000
 1.2.4.4 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.2.4.3 23-Jan-2013  yamt sync with head
 1.2.4.2 30-Oct-2012  yamt sync with head
 1.2.4.1 02-Sep-2012  yamt file files.cortex was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.2.2.4 03-Dec-2017  jdolecek update from HEAD
 1.2.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 25-Feb-2013  tls resync with head
 1.4.6.3 19-Feb-2014  matt arml2cc -> needs-flag
 1.4.6.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.4.6.1 16-Jun-2013  matt file files.cortex was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.4.2.1 18-May-2014  rmind sync with head
 1.5.6.1 28-Aug-2017  skrll Sync with HEAD
 1.6.8.3 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.6.8.2 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.6.8.1 25-Jun-2018  pgoyette Sync with HEAD
 1.7.2.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.7.2.1 10-Jun-2019  christos Sync with HEAD
 1.11.4.2 15-Oct-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #334):

sys/arch/arm/cortex/gic_v2m.c: revision 1.7
sys/arch/arm/acpi/gicv3_acpi.c: revision 1.5
sys/arch/arm/acpi/files.acpi: revision 1.8
sys/arch/arm/acpi/gic_acpi.c: revision 1.4
sys/arch/arm/cortex/files.cortex: revision 1.13
sys/arch/arm/acpi/gic_v2m_acpi.c: revision 1.1
sys/arch/arm/acpi/gic_v2m_acpi.h: revision 1.1
sys/arch/arm/cortex/gic_v2m.h: revision 1.2

Add support for Amazon's Graviton MSI controller.

Graviton has a GICv3 with a modified GICv2m (!) for MSIs. Instead of
sending messages to a fixed address with the SPI as data, the Graviton's
GICv2m uses a different address for each vector with "don't care" as data.
 1.11.4.1 15-Aug-2019  martin Pull up following revision(s) (requested by skrll in ticket #55):

sys/arch/arm/cortex/a9wdt.c: revision 1.10
sys/arch/evbarm/conf/HUMMINGBOARD: revision 1.9
sys/arch/evbarm/conf/GENERIC: revision 1.50
sys/arch/evbarm/conf/NITROGEN6X: revision 1.24
sys/arch/arm/cortex/a9tmr_var.h: revision 1.7
sys/arch/arm/fdt/files.fdt: revision 1.29
sys/arch/arm/amlogic/meson_platform.c: revision 1.12
sys/arch/arm/amlogic/meson8b_pinctrl.c: revision 1.2
sys/arch/arm/amlogic/meson_platform.c: revision 1.13
sys/arch/evbarm/conf/BCM5301X: revision 1.34
sys/arch/arm/dts/meson8b.dtsi: revision 1.6
sys/arch/arm/fdt/a9ptmr_fdt.c: revision 1.1
sys/arch/arm/dts/meson8b.dtsi: revision 1.7
sys/arch/arm/cortex/a9ptmr_var.h: revision 1.1
sys/arch/evbarm/conf/PANDABOARD: revision 1.30
sys/arch/evbarm/conf/DUOVERO: revision 1.14
sys/arch/arm/cortex/a9ptmr.c: revision 1.1
sys/arch/arm/cortex/a9ptmr.c: revision 1.2
sys/arch/arm/fdt/a9wdt_fdt.c: revision 1.1
sys/arch/evbarm/conf/BCM56340: revision 1.19
sys/arch/evbarm/conf/CUBOX-I: revision 1.23
sys/arch/arm/amlogic/meson8b_clkc.c: revision 1.4
sys/arch/evbarm/conf/PARALLELLA: revision 1.7
sys/arch/arm/cortex/files.cortex: revision 1.12
sys/arch/arm/dts/meson8b-odroidc1.dts: revision 1.4
sys/arch/arm/cortex/a9wdt.c: revision 1.9
sys/arch/evbarm/conf/ZEDBOARD: revision 1.6

spaces to tab

-

Add a driver for the A5/A9 Private timer.
While here FDTise the Watchdog driver.

-

Update for recent a9wdt changes
-

Trailing whitespace

-
Updates to get Odroid-C1 in better shape since the last DTS import

-

Various fixes / changes
- don't use prescaler
- improve AB_DEBUG output
- fix a9ptmr_delay to work with a decrementing counter!
Thanks to jmcneill@ for proving I'm an idiot

-

Add eth_rxd3 and eth_rxd2 pinctrl groups

-

Catch up to recent mainline dts changes
 1.57 05-Oct-2023  riastradh arm/gic: Check l_blcnt, not l_biglocks.

l_biglocks is a now-defunct temporary storage used only when
sleeping; l_blcnt is the number of kernel locks held by the lwp when
not sleeping.

Should fix arm builds.
 1.56 26-Jun-2022  jmcneill build fix: remove includes of opt_gic.h
 1.55 25-Jun-2022  jmcneill Remove GIC_SPLFUNCS.
 1.54 25-Jun-2022  jmcneill pic: Update ci_cpl in pic_set_priority callback.

Not all ICs need interrupts disabled to update the priority. DAIF accesses
are not cheap, so push the update of ci_cpl from pic_set_priority to the
IC's pic_set_priority callback, and let the IC driver determine whether
or not it needs interrupts disabled.
 1.53 03-Mar-2022  riastradh arm: Use device_set_private for various drivers.
 1.52 02-Jan-2022  riastradh arm: Remove #ifdef DIAGNOSTIC now wrong after KASSERT change.

Objects in question aren't volatile here so access is flushable.
 1.51 21-Oct-2021  skrll Fix some conditionals to match gicv3 and add some comments to describe
what's going on.

Fixes PR port-evbarm/56420
 1.50 26-Sep-2021  jmcneill If an SGI or PPI is established after interrupts are enabled, make sure
we unblock the source on _all_ CPUs and not just the CPU that is
establishing the interrupt.
 1.49 10-Aug-2021  jmcneill Make gic_splfuncs optional and disable it by default until it has had
more testing.
 1.48 10-Aug-2021  jmcneill Use custom spl funcs for GIC and avoid unnecessary pmr register accesses
in splx.
 1.47 28-Mar-2021  skrll Only target the boot cpu for real with SPI interrupts. I tried to do
this back in 2014, but somehow I missed a spot.

This is a quick-and-dirty fix for the USB stack which expects transfer
completions to be in-order. If interrupts happen across the CPUs then
this isn't guaranteed (yet).

kern/55243 panic at usb_transfer_complete() on raspberry pi 4
 1.46 23-Feb-2021  jmcneill branches: 1.46.2;
If we are committing a deferred splhigh() to hardware, no need to continue.
 1.45 21-Feb-2021  jmcneill Apply PMR optimizations from gicv3
 1.44 09-Feb-2021  jakllsch Avoid an extra daif read when dispatching interrupts by using
ENABLE_INTERRUPT() / DISABLE_INTERRUPT() instead of cpsie() / cpsid() macros.
 1.43 03-Dec-2020  skrll Provide and use a sev() macro for the sev instruction.

While here use the correct barrier to ensure completion of memory accesses
before a couple of the sev() calls.
 1.42 26-Sep-2020  skrll branches: 1.42.2;
G/C arm/atomic.h
 1.41 27-Jul-2020  jmcneill Remove CPU ID test in armgic_match. Perfectly normal to have GIC in
non-Cortex cores.
 1.40 12-Jul-2020  skrll Avoid undefined behaviour. Detected by KUBSAN.
 1.39 13-Apr-2020  jmcneill Fix "left shift of 255 by 24 places cannot be represented in type 'int'"
warning from UBSan.
 1.38 16-Nov-2018  jmcneill branches: 1.38.4; 1.38.10;
Use intr_establish_xname
 1.37 10-Sep-2018  jmcneill armgic_ipi_send: use GIC interface number, not CPU index, when setting
the target(s) for an IPI.
 1.36 10-Sep-2018  jmcneill Update sc_mptargets atomically, as PEs will be started up in parallel w/o locking here
 1.35 15-Jul-2018  jmcneill Support pic_set_affinity and pic_get_affinity
 1.34 28-Apr-2018  jakllsch branches: 1.34.2;
Cover all pic_maxsources lines for armgic_cpu_init_priorities() and
armgic_cpu_update_priorities().

Previously only the first 32 lines were covered, which is significantly
less than the 1000-some interrupt lines possible.

Only relevant to MULTIPROCESSOR configurations.
 1.33 01-Apr-2018  ryo Add initial support for ARMv8 (AARCH64) (by nisimura@ and ryo@)

- sys/arch/evbarm64 is gone and integrated into sys/arch/evbarm. (by skrll@)
- add support fdt. evbarm/conf/GENERIC64 fdt (bcm2837,sunxi,tegra) based generic 64bit kernel config. (by skrll@, jmcneill@)
 1.32 07-Feb-2018  jmcneill branches: 1.32.2;
PR# port-evbarm/49468: Cortex GIC assertion triggered on Allwinner A80 SoC

The priority level is changed by writing to GICC_PMR with interrupts
disabled. However, interrupts are enabled/disabled downstream of the GICC
at the CPU. When raising priority level, there is a window between the time
that interrupts are disabled and the GICC_PMR register is written. If an
interrupt occurs at a previously allowed priority before GICC_PMR is
changed, the CPU will receive the signal when interrupts are re-enabled.
At this time, GICC_PMR is now the new priority level, so reads of
GICC_IAR will report a spurious IRQ.

Move the "old_ipl != IPL_HIGH" test until after we have confirmed that
there is at least one pending IRQ.
 1.31 14-Jul-2017  skrll KNF
 1.30 29-Jun-2017  jmcneill ARM Trusted Firmware reserves SGIs 8-15 for secure use. Even without ATF,
U-Boot on some platforms may use SGIs in this range for the PSCI
implementation.

Change ARMGIC_IPI_BASE to 0 from (16 - NIPI) and add a compile-time assert
to ensure that we don't end up with a conflict.
 1.29 28-Jun-2017  skrll Revert the KERNHIST for now it causes problems
 1.28 22-Jun-2017  skrll If we see GICC_IAR_IRQ_SSPURIOUS we should also stop looking for irqs
 1.27 22-Jun-2017  skrll Wrap long line
 1.26 22-Jun-2017  skrll Print the GICC_IIDR when AB_DEBUG
 1.25 22-Jun-2017  skrll Add 'armgichist' KERNHIST for (future) debugging.
 1.24 18-Jun-2017  jmcneill Don't assume that CPU index = GIC CPU interface number. We can determine
the current CPU interface number by reading from the read-only
GICD_ITARGETSR0 through GICD_ITARGETSR7 registers.

This gets interrupts working on Exynos 5422, where the boot processor has
GIC CPU interface #4.
 1.23 05-Jun-2017  skrll Clean out some #if 0'ed or //'ed code
 1.22 04-Jun-2017  skrll Initialise all the SGI/PPI priorities for all CPUs to mask the interrupts
 1.21 30-May-2017  jmcneill branches: 1.21.2;
Use an FDT-based ARM_INTR_IMPL for Tegra.
 1.20 29-Jul-2015  matt Adjust some of IPLs of various IPIs.
 1.19 15-Apr-2015  matt Add separate IPI routines for IPI_AST and IPI_KPREEMPT.
 1.18 11-Apr-2015  matt Add a pic_cpus to the softc which specifies which cpus the pic can send
IPIs to. For GIC, initialize pic_cpus to kcpuset_running since it can handle
all the cpus.
 1.17 09-Apr-2015  matt All SGIs are MPSAFE so establish them as such.
 1.16 20-Mar-2015  skrll Trailing whitespace
 1.15 12-Mar-2015  skrll G/C armgic_last_priority
 1.14 03-Mar-2015  jmcneill in armgic_establish_irq, make sure to write the new value to GICD_ICFGRn when setting irq type (IST_LEVEL/IST_EDGE)
 1.13 02-Mar-2015  jmcneill sc_gic_lines is the total number of valid lines but pic_sources[] is sparse; when initializing mpsafe targets make sure to go all the way to the end (sc_pic.pic_maxsources) instead
 1.12 29-Oct-2014  skrll branches: 1.12.2;
Only target boot cpu for SPIs atm. Fix a couple of bugs in the now
disabled code.
 1.11 29-Oct-2014  skrll Sprinkle #include "opt_multiprocessor.h"
 1.10 19-May-2014  rmind branches: 1.10.2;
Implement MI IPI interface with cross-call support.
 1.9 27-Apr-2014  matt When dealing with the PMR register, only use non-secure priority values.
 1.8 13-Apr-2014  matt Move aprint to print sooner.
 1.7 28-Mar-2014  matt branches: 1.7.2;
Various MP changes.
 1.6 04-Mar-2014  matt Don't byte swap the data, assume the bus_space will do it.
 1.5 17-Dec-2013  joerg branches: 1.5.2;
armgic_priority_to_ipl is only used in #if 0'd code, so apply that as
well.
 1.4 20-Jun-2013  matt branches: 1.4.2;
Pass the offset from CBAR/PERIPHBASE in mpcore_attach_args.
Modify the list of devices to include the offset(s) from PERIPHBASE.
 1.3 16-Sep-2012  rmind branches: 1.3.2; 1.3.4;
Rename kcpuset_copybits() to kcpuset_export_u32() and thus be more specific
about the interface.
 1.2 14-Sep-2012  matt Verify the source isn't a dummy source.
 1.1 01-Sep-2012  matt branches: 1.1.2;
Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.1.2.4 03-Dec-2017  jdolecek update from HEAD
 1.1.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.2.2 23-Jun-2013  tls resync from head
 1.1.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.3.4.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.3.4.1 16-Sep-2012  matt file gic.c was added on branch matt-nb6-plus on 2012-11-28 22:40:26 +0000
 1.3.2.3 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.3.2.2 30-Oct-2012  yamt sync with head
 1.3.2.1 16-Sep-2012  yamt file gic.c was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.4.2.1 18-May-2014  rmind sync with head
 1.5.2.3 26-Mar-2014  matt Let bus_space so the endian conversion if needed
 1.5.2.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.5.2.1 17-Dec-2013  matt file gic.c was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.7.2.1 10-Aug-2014  tls Rebase.
 1.10.2.5 30-Jul-2015  martin Pull up following revision(s) (requested by skrll in ticket #890):
sys/arch/arm/pic/pic.c: revision 1.27-1.32
sys/arch/arm/omap/omap5430_intr.h: revision 1.3
sys/arch/arm/broadcom/bcm2835_obio.c: revision 1.25
sys/arch/arm/cortex/gic.c: revision 1.18
sys/arch/arm/broadcom/bcm2835reg.h: revision 1.15
sys/arch/evbarm/rpi/rpi_machdep.c: revision 1.61
sys/arch/arm/broadcom/bcm2835_intr.h: revision 1.2
sys/arch/arm/marvell/mvsoc_intr.h: revision 1.5
sys/arch/arm/broadcom/bcm2835_intr.c: revision 1.8-1.10
sys/arch/arm/pic/picvar.h: revision 1.12-1.14
sys/arch/arm/omap/omap4430_intr.h: revision 1.3

Don't clear CI_ASTPENDING in exception return, do it in ast() instead.
Add basic support for __HAVE_PREEMPTION.
Use atomic ops for ci_astpending if __HAVE_PREEMPTION is defined.
Use kpreempt_disable/kpreempt_enable
Add __HAVE_PIC_HAVE_PENDING_INTRS and define it if __HAVE_PIC_SET_PRIORITY
is undefined (also define in mvsoc_intr.h since their use of the latter is
peculiar). This new define controls whether the pending interrupt logic is
compiled. The GIC doesn't use pending interrupts since it uses the priority
level on the GIC to control delivery of interrupts, thus there can never
be a pending interrupt. The kernel shrinks about 4KB with the removal of
the pending interupt support,
Only if we __HAVE_PIC_PENDING_INTRS do we need the variables to track them.
Add #define __HAVE_PIC_PENDING_INTRS for the non-GIC PICs.
Add a pic_cpus to the softc which specifies which cpus the pic can send
IPIs to. For GIC, initialize pic_cpus to kcpuset_running since it can handle
all the cpus.
Adapt pic to deal with the BCM2836 interrupts.
Move pic_pending_pics, pic_pending_ipls, and pic_blocked_irqs into a
structure and make then per-cpu. There is no global interrupt state anymore.
Use right kcpuset call.
Don't need pic_ipi_sender anymore.
Don't send IPIs to ourselves if sending to everyone.
RPI2 MP support.
Thanks to Matt Thomas for making this possible with his changes to pic.c
Use a bit per IPI type in local mailbox 0 registers. Ok matt@
IPIs should be IPL_HIGH according to rmind@
Fix bcm2836mp_pic_{un,}block_irqs to handle timer AND mailbox interrupts
if they're both passed. Thanks to nat@ for finding this.
Sprinkle some KASSERTs
 1.10.2.4 21-Mar-2015  snj Pull up following revision(s) (requested by skrll in ticket #627):
sys/arch/arm/cortex/gic.c: revision 1.16
Trailing whitespace
 1.10.2.3 15-Mar-2015  snj Pull up following revision(s) (requested by skrll in ticket #591):
sys/arch/arm/cortex/gic.c: revision 1.15
G/C armgic_last_priority
 1.10.2.2 07-Mar-2015  snj Pull up following revision(s) (requested by jmcneill in ticket #567):
sys/arch/arm/cortex/gic.c: revision 1.13, 1.14
in armgic_establish_irq, make sure to write the new value to GICD_ICFGRn
when setting irq type (IST_LEVEL/IST_EDGE)
--
sc_gic_lines is the total number of valid lines but pic_sources[] is
sparse; when initializing mpsafe targets make sure to go all the way to
the end (sc_pic.pic_maxsources) instead
 1.10.2.1 09-Nov-2014  martin Pull up following revision(s) (requested by skrll in ticket #188):
sys/arch/arm/include/arm32/pmap.h: revision 1.136
sys/arch/arm/include/armreg.h: revision 1.100
sys/arch/arm/cortex/gic.c: revision 1.11
sys/arch/arm/arm32/db_interface.c: revision 1.54
sys/arch/arm/include/armreg.h: revision 1.101
sys/arch/arm/cortex/gic.c: revision 1.12
sys/arch/arm/arm32/arm32_machdep.c: revision 1.107
sys/arch/arm/arm/cpufunc_asm_armv7.S: revision 1.19
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.20
sys/arch/evbarm/conf/BPI: revision 1.5
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.21
sys/arch/arm/arm32/pmap.c: revision 1.306
sys/arch/arm/arm32/db_machdep.c: revision 1.22
sys/arch/arm/arm32/arm32_tlb.c: revision 1.3
sys/arch/arm/arm/undefined.c: revision 1.55
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.22
sys/arch/arm/arm32/pmap.c: revision 1.307
sys/arch/arm/arm32/arm32_tlb.c: revision 1.4
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.23
sys/arch/arm/arm32/arm32_tlb.c: revision 1.5
sys/arch/evbarm/conf/BPI: revision 1.8
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.24
sys/arch/arm/arm32/arm32_tlb.c: revision 1.6
sys/arch/arm/arm32/arm32_tlb.c: revision 1.7
sys/arch/evbarm/conf/CUBIETRUCK: revision 1.5
sys/arch/arm/pic/pic.c: revision 1.23
sys/arch/arm/pic/pic.c: revision 1.24
sys/arch/arm/pic/picvar.h: revision 1.11
sys/arch/arm/arm/cpufunc_asm_armv7.S: revision 1.20
sys/arch/arm/mainbus/cpu_mainbus.c: revision 1.16
sys/arch/arm/arm32/pmap.c: revision 1.298
sys/arch/arm/arm/cpufunc_asm_arm11.S: revision 1.17
sys/arch/arm/arm/cpufunc_asm_pj4b.S: revision 1.5
sys/arch/arm/arm32/pmap.c: revision 1.310
sys/arch/arm/arm32/pmap.c: revision 1.311
sys/arch/arm/arm32/arm32_kvminit.c: revision 1.32
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.19
sys/arch/arm/arm32/arm32_boot.c: revision 1.10
sys/arch/arm/arm/ast.c: revision 1.25
sys/arch/arm/include/armreg.h: revision 1.98
sys/uvm/pmap/pmap_tlb.c: revision 1.10
sys/arch/arm/arm32/arm32_boot.c: revision 1.8
sys/arch/arm/arm32/arm32_boot.c: revision 1.9
sys/arch/arm/arm/arm_machdep.c: revision 1.43
Various ARM MP fixes.
 1.12.2.4 28-Aug-2017  skrll Sync with HEAD
 1.12.2.3 22-Sep-2015  skrll Sync with HEAD
 1.12.2.2 06-Jun-2015  skrll Sync with HEAD
 1.12.2.1 06-Apr-2015  skrll Sync with HEAD
 1.21.2.2 18-Jul-2017  snj Pull up following revision(s) (requested by jmcneill in ticket #114):
sys/arch/arm/samsung/exynos_intr.h: revision 1.3
sys/arch/arm/sunxi/sun8i_h3_ccu.c: revision 1.1
sys/arch/arm/sunxi/sun8i_h3_ccu.c: revision 1.2
sys/arch/arm/sunxi/sun8i_h3_ccu.c: revision 1.3
sys/arch/arm/sunxi/sunxi_gates.c: revision 1.1
distrib/utils/embedded/mkimage: revision 1.66
sys/arch/arm/sunxi/sun8i_h3_ccu.c: revision 1.4
sys/arch/arm/sunxi/sunxi_rsb.c: revision 1.1
sys/arch/arm/sunxi/sun8i_h3_ccu.c: revision 1.5
sys/arch/arm/sunxi/sun8i_h3_ccu.c: revision 1.6
sys/arch/arm/sunxi/sun8i_h3_ccu.c: revision 1.7
sys/dev/gpio/gpio.c: revision 1.59
sys/arch/arm/sunxi/sunxi_ccu_prediv.c: revision 1.1
sys/conf/Makefile.kern.inc: revision 1.257
sys/arch/evbarm/conf/ODROID-XU_INSTALL: file removal
sys/arch/arm/sunxi/sunxi_ccu_prediv.c: revision 1.2
sys/conf/Makefile.kern.inc: revision 1.258
sys/arch/arm/fdt/psci_fdt.h: revision 1.1
sys/arch/arm/sunxi/sunxi_resets.c: revision 1.1
sys/arch/evbarm/conf/files.sunxi: revision 1.1
sys/arch/evbarm/fdt/fdt_machdep.c: revision 1.8
sys/arch/evbarm/fdt/fdt_machdep.c: revision 1.9
sys/arch/arm/samsung/files.exynos: revision 1.22
distrib/utils/embedded/conf/armv7.conf: revision 1.13
sys/arch/arm/samsung/files.exynos: revision 1.23
sys/arch/evbarm/conf/std.tegra: revision 1.15
distrib/utils/embedded/conf/armv7.conf: revision 1.14
sys/arch/arm/samsung/files.exynos: revision 1.24
distrib/utils/embedded/conf/armv7.conf: revision 1.15
sys/arch/evbarm/sunxi/genassym.cf: revision 1.1
sys/arch/arm/samsung/exynos_fdt.c: file removal
sys/dev/fdt/fdt_pinctrl.c: revision 1.4
sys/arch/arm/samsung/exynos_sysmmu.c: revision 1.2
sys/arch/arm/sunxi/sun8i_h3_gpio.c: revision 1.1
sys/arch/arm/sunxi/sunxi_twi.c: revision 1.1
sys/dev/usb/ehci.c: revision 1.255
sys/arch/arm/sunxi/sunxi_twi.c: revision 1.2
sys/arch/arm/sunxi/sun8i_a83t_ccu.h: revision 1.1
sys/dev/ic/dwc_mmc.c: revision 1.11
sys/arch/arm/cortex/gic.c: revision 1.24
distrib/evbarm/instkernel/ramdisk/Makefile: revision 1.17
etc/etc.evbarm/Makefile.inc: revision 1.87
etc/etc.evbarm/Makefile.inc: revision 1.88
sys/arch/arm/fdt/gic_fdt.c: revision 1.5
etc/Makefile: revision 1.429
sys/arch/arm/fdt/gic_fdt.c: revision 1.6
sys/arch/arm/fdt/gic_fdt.c: revision 1.7
sys/arch/arm/sunxi/sunxi_gpio.c: revision 1.1
sys/arch/arm/sunxi/sunxi_gpio.c: revision 1.2
sys/arch/evbarm/conf/std.sunxi: revision 1.1
sys/arch/arm/sunxi/sunxi_gpio.c: revision 1.3
sys/arch/evbarm/conf/std.sunxi: revision 1.2
sys/arch/arm/sunxi/sunxi_gpio.c: revision 1.4
sys/arch/evbarm/conf/std.sunxi: revision 1.3
sys/arch/arm/sunxi/sunxi_gpio.c: revision 1.5
sys/arch/arm/sunxi/sunxi_ccu_div.c: revision 1.1
sys/dev/gpio/gpiovar.h: revision 1.17
sys/arch/arm/sunxi/sunxi_gpio.c: revision 1.6
sys/arch/arm/sunxi/sunxi_gpio.c: revision 1.7
sys/arch/arm/sunxi/sunxi_gpio.c: revision 1.8
sys/arch/arm/sunxi/sunxi_rsb.h: revision 1.1
sys/arch/arm/samsung/exynos_i2c.c: revision 1.12
sys/dev/fdt/fdtvar.h: revision 1.21
sys/arch/evbarm/sunxi/sunxi_start.S: revision 1.1
sys/arch/arm/samsung/exynos_i2c.c: revision 1.13
sys/dev/fdt/fdtvar.h: revision 1.22
sys/arch/evbarm/conf/SUNXI: revision 1.10
sys/dev/fdt/fdtvar.h: revision 1.23
sys/arch/evbarm/conf/SUNXI: revision 1.11
sys/dev/fdt/gpioleds.c: revision 1.1
sys/dev/fdt/fdtvar.h: revision 1.24
sys/arch/evbarm/conf/SUNXI: revision 1.12
sys/arch/evbarm/conf/SUNXI: revision 1.13
sys/arch/arm/cortex/gic.c: revision 1.30
sys/arch/evbarm/conf/SUNXI: revision 1.14
sys/arch/evbarm/conf/SUNXI: revision 1.15
sys/arch/evbarm/conf/SUNXI: revision 1.16
sys/arch/arm/sunxi/sunxi_emac.c: revision 1.1
etc/Makefile: revision 1.430
sys/arch/arm/sunxi/sunxi_emac.c: revision 1.2
etc/Makefile: revision 1.431
sys/arch/evbarm/conf/VEXPRESS_A15: revision 1.17
sys/arch/arm/sunxi/sunxi_emac.c: revision 1.3
sys/arch/arm/sunxi/sunxi_emac.c: revision 1.4
sys/arch/arm/samsung/exynos5422_clock.c: revision 1.6
sys/arch/arm/samsung/exynos_platform.c: revision 1.1
sys/dev/ofw/ofw_subr.c: revision 1.29
sys/arch/arm/samsung/exynos_platform.c: revision 1.2
sys/arch/evbarm/conf/mk.vexpress: revision 1.3
sys/arch/arm/samsung/exynos_platform.c: revision 1.3
sys/arch/evbarm/conf/mk.vexpress: revision 1.4
sys/arch/arm/samsung/exynos_platform.c: revision 1.4
sys/arch/arm/arm/psci.h: revision 1.1
sys/arch/arm/samsung/exynos_platform.c: revision 1.5
sys/arch/arm/samsung/exynos_platform.c: revision 1.6
sys/arch/evbarm/fdt/fdt_machdep.c: revision 1.10
external/bsd/mdocml/bin/mandoc/Makefile: revision 1.12
sys/dev/fdt/files.fdt: revision 1.17
sys/dev/fdt/files.fdt: revision 1.18
sys/dev/fdt/files.fdt: revision 1.19
sys/arch/arm/samsung/exynos_sscom.c: revision 1.8
sys/arch/arm/sunxi/sun8i_a83t_ccu.c: revision 1.1
sys/arch/arm/sunxi/sunxi_mmc.c: revision 1.1
sys/arch/arm/samsung/exynos_sscom.c: revision 1.9
sys/arch/arm/conf/files.arm: revision 1.133
sys/arch/arm/samsung/mct_var.h: revision 1.5
sys/arch/arm/sunxi/sunxi_platform.c: revision 1.1
sys/arch/arm/sunxi/sunxi_platform.c: revision 1.2
sys/arch/evbarm/conf/std.vexpress: revision 1.6
sys/arch/arm/sunxi/sunxi_platform.c: revision 1.3
sys/arch/arm/sunxi/sun6i_a31_gpio.c: revision 1.1
sys/arch/arm/sunxi/sunxi_platform.c: revision 1.4
sys/arch/arm/sunxi/sun6i_a31_gpio.c: revision 1.2
sys/arch/arm/sunxi/files.sunxi: revision 1.1
sys/dev/ofw/ofw_subr.c: revision 1.30
sys/arch/arm/sunxi/files.sunxi: revision 1.2
sys/dev/ofw/openfirm.h: revision 1.35
sys/arch/arm/sunxi/files.sunxi: revision 1.3
sys/dev/ofw/openfirm.h: revision 1.36
sys/arch/arm/sunxi/files.sunxi: revision 1.4
sys/arch/arm/sunxi/files.sunxi: revision 1.5
sys/arch/evbarm/exynos/exynos_machdep.c: file removal
sys/arch/arm/sunxi/sunxi_gpio.h: revision 1.1
sys/arch/arm/samsung/sscom.c: revision 1.9
sys/arch/arm/sunxi/files.sunxi: revision 1.6
sys/dev/fdt/ohci_fdt.c: revision 1.1
sys/arch/arm/sunxi/sunxi_usbphy.c: revision 1.1
sys/arch/arm/sunxi/sunxi_gpio.h: revision 1.2
sys/arch/arm/sunxi/files.sunxi: revision 1.7
sys/arch/arm/sunxi/sunxi_usbphy.c: revision 1.2
sys/arch/arm/sunxi/sunxi_gpio.h: revision 1.3
sys/arch/arm/sunxi/files.sunxi: revision 1.8
sys/arch/arm/sunxi/sunxi_usbphy.c: revision 1.3
sys/arch/arm/sunxi/files.sunxi: revision 1.9
sys/arch/arm/samsung/exynos_sscom.c: revision 1.10
sys/arch/evbarm/conf/mk.tegra: revision 1.5
sys/arch/arm/samsung/exynos_dwcmmc.c: revision 1.4
sys/arch/evbarm/conf/mk.tegra: revision 1.6
sys/arch/evbarm/conf/EXYNOS: revision 1.15
sys/arch/evbarm/conf/EXYNOS: revision 1.16
sys/arch/evbarm/conf/EXYNOS: revision 1.17
sys/arch/arm/sunxi/sunxi_ccu.c: revision 1.1
sys/arch/evbarm/conf/EXYNOS: revision 1.19
sys/arch/arm/sunxi/sunxi_ccu.c: revision 1.2
sys/arch/arm/sunxi/sunxi_ccu.c: revision 1.3
sys/arch/arm/sunxi/sunxi_ccu.c: revision 1.4
sys/arch/arm/sunxi/sunxi_ccu.c: revision 1.5
sys/arch/arm/sunxi/sunxi_emac.h: revision 1.1
sys/arch/evbarm/conf/mk.sunxi: revision 1.1
sys/arch/evbarm/include/bootconfig.h: revision 1.7
sys/arch/evbarm/conf/TEGRA: revision 1.24
sys/arch/arm/arm/psci.c: revision 1.1
sys/dev/led.c: revision 1.1
sys/dev/led.c: revision 1.2
sys/arch/arm/arm/psci_arm.S: revision 1.1
sys/arch/arm/sunxi/sunxi_ccu_gate.c: revision 1.1
sys/arch/arm/sunxi/sunxi_ccu_gate.c: revision 1.2
sys/dev/fdt/ehci_fdt.c: revision 1.1
sys/dev/fdt/ehci_fdt.c: revision 1.2
sys/arch/arm/sunxi/sun6i_a31_ccu.h: revision 1.1
sys/arch/evbarm/conf/EXYNOS: revision 1.21
sys/arch/arm/sunxi/files.sunxi: revision 1.10
sys/arch/arm/sunxi/files.sunxi: revision 1.11
sys/dev/fdt/fdtbus.c: revision 1.14
sys/arch/arm/sunxi/sunxi_mmc.h: revision 1.1
sys/arch/arm/samsung/exynos5422_dma.c: file removal
usr.bin/config/mkmakefile.c: revision 1.69
sys/conf/files: revision 1.1178
sys/arch/arm/sunxi/sunxi_platform.h: revision 1.1
sys/arch/evbarm/exynos/exynos_start.S: revision 1.4
sys/arch/arm/samsung/exynos_pinctrl.c: revision 1.11
sys/arch/arm/samsung/exynos_pinctrl.c: revision 1.12
sys/arch/arm/sunxi/sunxi_rtc.c: revision 1.1
sys/arch/arm/sunxi/sun8i_h3_ccu.h: revision 1.1
sys/arch/arm/samsung/exynos5410_clock.c: revision 1.1
sys/arch/arm/samsung/exynos5410_clock.c: revision 1.2
sys/arch/evbarm/conf/SUNXI: revision 1.1
external/bsd/elftosb/usr.sbin/elftosb/Makefile: revision 1.5
sys/arch/evbarm/conf/SUNXI: revision 1.2
sys/arch/arm/fdt/psci_fdt.c: revision 1.1
sys/arch/evbarm/conf/SUNXI: revision 1.3
sys/arch/evbarm/conf/SUNXI: revision 1.4
sys/arch/evbarm/conf/files.exynos: revision 1.3
sys/arch/evbarm/conf/SUNXI: revision 1.5
sys/arch/evbarm/conf/SUNXI: revision 1.6
sys/arch/arm/sunxi/sunxi_ccu_nm.c: revision 1.1
sys/dev/fdt/fixedfactorclock.c: revision 1.1
sys/dev/fdt/fdt_subr.c: revision 1.14
sys/arch/evbarm/conf/SUNXI: revision 1.7
sys/arch/arm/sunxi/sunxi_ccu_nm.c: revision 1.2
sys/arch/arm/sunxi/sun8i_a83t_gpio.c: revision 1.1
sys/dev/fdt/fdt_subr.c: revision 1.15
sys/arch/evbarm/conf/SUNXI: revision 1.8
sys/arch/arm/sunxi/sunxi_ccu_nm.c: revision 1.3
sys/dev/ic/dwc_mmc_reg.h: revision 1.6
sys/dev/fdt/fdt_subr.c: revision 1.16
sys/arch/evbarm/conf/SUNXI: revision 1.9
usr.bin/config/mkmakefile.c: revision 1.70
sys/dev/fdt/fdt_phy.c: revision 1.1
sys/arch/evbarm/conf/ODROID-XU: file removal
sys/arch/arm/fdt/arm_fdt.c: revision 1.4
sys/arch/arm/samsung/exynos_reg.h: revision 1.14
sys/conf/files: revision 1.1180
sys/arch/arm/samsung/exynos_reg.h: revision 1.15
sys/arch/arm/sunxi/sunxi_ccu.h: revision 1.1
sys/arch/arm/sunxi/sunxi_ccu.h: revision 1.2
sys/arch/arm/sunxi/sunxi_ccu.h: revision 1.3
sys/arch/arm/sunxi/sunxi_ccu.h: revision 1.4
sys/arch/arm/sunxi/sunxi_ccu.h: revision 1.5
sys/arch/arm/sunxi/sunxi_ccu.h: revision 1.6
sys/dev/ic/dwc_mmc_var.h: revision 1.6
sys/arch/arm/samsung/exynos_combiner.c: revision 1.7
sys/arch/evbarm/exynos/platform.h: revision 1.2
sys/arch/arm/fdt/files.fdt: revision 1.12
sys/arch/evbarm/conf/std.exynos: revision 1.2
sys/arch/evbarm/conf/std.exynos: revision 1.3
sys/arch/arm/rockchip/rockchip_dwcmmc.c: revision 1.6
sys/arch/arm/sunxi/sunxi_com.c: revision 1.1
sys/dev/led.h: revision 1.1
sys/arch/evbarm/conf/std.exynos: revision 1.5
sys/arch/arm/sunxi/sunxi_com.c: revision 1.2
sys/arch/evbarm/conf/files.evbarm: revision 1.26
usr.bin/config/defs.h: revision 1.99
sys/arch/arm/fdt/arm_fdtvar.h: revision 1.6
sys/arch/arm/samsung/exynos_soc.c: revision 1.32
sys/arch/arm/sunxi/sun6i_a31_ccu.c: revision 1.1
sys/arch/arm/sunxi/sun6i_a31_ccu.c: revision 1.2
sys/arch/arm/samsung/mct.c: revision 1.11
sys/arch/evbarm/conf/ODROID-U: file removal
sys/arch/arm/samsung/mct.c: revision 1.12
sys/arch/arm/sunxi/sunxi_ccu_nkmp.c: revision 1.1
sys/arch/arm/sunxi/sunxi_ccu_nkmp.c: revision 1.2
sys/arch/arm/sunxi/sunxi_ccu_nkmp.c: revision 1.3
sys/arch/arm/sunxi/sunxi_ccu_nkmp.c: revision 1.4
Get the EXYNOS kernel building again with recent FDT changes. Untested.
Use arm_fdt_cpu_hatch and add mmu entry for DTB
Fix exynos5 devmap, bootstrap, and implement early_putchar.
Calculate UART frequency based on bootloader config.
Fix KERNEL_BASE_PHYS (how did this ever work?)
Avoid divide-by-zero for unconfigured PLLs
Correctly initialize i2cbus attach args.
Add delay and enable mct timecounter.
Fix build w/o VERBOSE_INIT_ARM
Remove ODROID-U and ODROID-XU kernel configs as they no longer work.
- Replace CONSADDR with SSCOM2CONSOLE in example
- Remove gtmr (Exynos5422 uses mct)
- cinclude EXYNOS.local instead of TEGRA.local
Use fdtbus_intr_establish to hook in block interrupts instead of
intr_establish.
Simplify MCT; just enable it and then attach an ARMv7 generic timer.
Add support for building DTB files during kernel build, from christos.
build vexpress-v2p-ca15-tc1.dtb with the kernel
build tegra124-apalis-eval.dtb, tegra124-jetson-tk1.dtb, tegra124-nyan-big.dtb, tegra124-nyan-blaze.dtb, and tegra124-venice2.dtb with the kernel
Allow multiline makeoptions to work by quoting the newline..
Bump for quoting makeoptions with multiple lines.
un-c99
bump required config version for multiline makeoptions feature
Set DTS makeoption in kernel config
Assign DTB files to a variable so we can make -V DTB
put the dtb files with their kernels.
no need for debug printing.
Don't assume that CPU index = GIC CPU interface number. We can determine
the current CPU interface number by reading from the read-only
GICD_ITARGETSR0 through GICD_ITARGETSR7 registers.
This gets interrupts working on Exynos 5422, where the boot processor has
GIC CPU interface #4.
use -v to get the expanded variable.
Use -v to get the expanded variables.
Get baud rate from sclk_uartN instead of uartN. Print IRQ number at attach.
Fix PLL con0 register locations and add uart clocks
Disable exyortc for now, it doesn't work.
More or less a rewrite of dwc_mmc, based on awin_mmc, adding DMA support.
Update for new dwc_mmc driver
Fix dmesg
Add Exynos 5410 clock controller driver.
Fix a few typos in clock parent names for mmc clocks.
From jmcneill@
Update for new dwc_mmc driver
Implement platform reset for exynos5
Attach fdtbus to a /clocks node with no compatible string.
Add support for ARM Power State Coordination Interface (PSCI).
Support interrupt sharing.
Add initial support for Allwinner H3 SoC.
ARM Trusted Firmware reserves SGIs 8-15 for secure use. Even without ATF,
U-Boot on some platforms may use SGIs in this range for the PSCI
implementation.
Change ARMGIC_IPI_BASE to 0 from (16 - NIPI) and add a compile-time assert
to ensure that we don't end up with a conflict.
Add H3 MMC support
SD/MMC clock fixes
Add FDT PHY interface.
Add glue for generic ehci/ohci bindings.
Rename a variable, NFC.
Support parents in different clock domains.
Add USB stuff. Doesn't quite work yet.
Synopsys DesignWare APB UART needs "options COM_AWIN" for now.
Add i2c glue.
Add RTC driver.
PHY registers start at index 1. Now USB works.
Don't allow sharing edge and level triggered interrupts.
Add arm_fdt_memory_dump helper for dumping physical addresses from ddb
Print clocks with aprint_debug
Remove unused defines
Add fdtbus_get_string helper
Add of_search_compatible, which searches an array of compat_data structures
for a matching "compatible" entry matching the supplied OFW node. This
allows us to associate data with compatible strings.
Add driver for Allwinner Gigabit Ethernet (EMAC) as found in sun8i and
later family SoCs.
This is a port of my FreeBSD driver which has been confirmed to work on
Allwinner H3, A83T, and A64 SoCs.
Fix dmesg
Add basic support for Allwinner A31.
Add basic FDT GPIO support.
Fix the pinctrl api to match the spec. A pinctrl config can have more
than one xref, and an xref may have specifier data associated with it.
Enable sunxi pinctrl support
Adjust to new pinctrl API
Add P2WI/RSB driver, based on awin_p2wi.c.
Fix typo in a compat string.
Configure pin defaults at attach
No need to explicitly set pinctrl config 0 now
Fix some register definitions.
Disallow sharing between MPSAFE and non-MPSAFE handlers.
Add of_match_compat_data.
This routine searches an array of compat_data structures for a
matching "compatible" entry matching the supplied OFW node.
Add options __HAVE_CPU_UAREA_ALLOC_IDLELWP
Add support for reserved memory and MEMORY_DISK_DYNAMIC for FDT-based
kernels.
the extent code cannot use the full range of u_long,
so ignore the last page before 4GB too. ok jmcneill@
Copy install ramdisk to releasedir. Provide both a raw ffs and
Legacy U-Boot version of it.
Replace HUMMINGBIRD_A31 with SUNXI kernel on armv7.img and include .dtb
files for SUNXI and TEGRA kernels on the MSDOS partition.
Let the controller provide a default name for pins. This makes pins easier
to locate when we have multiple banks and a variable number of pins per
bank.
Attach gpio(4) to sunxigpio
Test for kernel build directory before reading DTB list
Add support for Allwinner A83T SoC.
Add A83T files
Fixup busdma sync and locking in the RX path. Disable batch RX/TX ints.
Fix AHB2 register definition and explicitly set AHB2 parent to PLL_PERIPH0/2 -- this gives us 50% more bus bandwidth for emac
Restore TX_INTERVAL_DEFAULT to 64
Drop the sunxi_emac_rx_batch feature. It was originally designed to
reduce the amount of mutex unlock/lock cycles during the RX path on
FreeBSD and if_input, but it is not required to drop the lock before
calling if_percpuq_enqueue on NetBSD.
Write back the data value instead of mask in sunxi_gpio_write
Add a helper for exposing LED controls via sysctl.
Add GPIO LED driver.
add gpioleds
Add misc. gates and resets driver, and explicitly enable PIO clocks
at attach.
Add fdtbus_get_string_index helper.
Add driver for fixed-factor clocks.
Add ffclock
Remove the requirement for ehci to attach after companion devices.
"go for it" - skrll@
Remove the hack to find companion devices and just assume 1 companion if
ETTF flag is not set.
Remove pass numbers for ehci/ohci now that the attach order no longer matters
Use unsigned char for ctype functions, suggested by christos
Add : to body of populate_sunxi to appease bash.
port-evbarm/52388: Fix number of args to a debug printf.
 1.21.2.1 05-Jun-2017  snj Pull up following revision(s) (requested by skrll in ticket #8):
sys/arch/arm/cortex/gic.c: revision 1.22
Initialise all the SGI/PPI priorities for all CPUs to mask the interrupts
 1.32.2.5 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.32.2.4 30-Sep-2018  pgoyette Ssync with HEAD
 1.32.2.3 28-Jul-2018  pgoyette Sync with HEAD
 1.32.2.2 02-May-2018  pgoyette Synch with HEAD
 1.32.2.1 07-Apr-2018  pgoyette Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
 1.34.2.2 21-Apr-2020  martin Sync with HEAD
 1.34.2.1 10-Jun-2019  christos Sync with HEAD
 1.38.10.1 20-Apr-2020  bouyer Sync with HEAD
 1.38.4.1 31-Mar-2021  martin Pull up following revision(s) (requested by skrll in ticket #1238):

sys/arch/arm/cortex/gic.c: revision 1.47

Only target the boot cpu for real with SPI interrupts. I tried to do
this back in 2014, but somehow I missed a spot.

This is a quick-and-dirty fix for the USB stack which expects transfer
completions to be in-order. If interrupts happen across the CPUs then
this isn't guaranteed (yet).

kern/55243 panic at usb_transfer_complete() on raspberry pi 4
 1.42.2.2 03-Apr-2021  thorpej Sync with HEAD.
 1.42.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.46.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.3 30-May-2017  jmcneill Use an FDT-based ARM_INTR_IMPL for Tegra.
 1.2 09-Apr-2014  matt branches: 1.2.4;
add helper macros.
 1.1 01-Sep-2012  matt branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.16; 1.1.18;
Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.1.18.1 10-Aug-2014  tls Rebase.
 1.1.16.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.1.16.1 01-Sep-2012  matt file gic_intr.h was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.1.8.1 18-May-2014  rmind sync with head
 1.1.6.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.1.6.1 01-Sep-2012  matt file gic_intr.h was added on branch matt-nb6-plus on 2012-11-28 22:40:26 +0000
 1.1.4.3 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.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 01-Sep-2012  yamt file gic_intr.h was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.1.2.2 03-Dec-2017  jdolecek update from HEAD
 1.1.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.4.1 28-Aug-2017  skrll Sync with HEAD
 1.12 22-Nov-2020  jmcneill Add GICD_CTRL_EnableGrp1S definition.
 1.11 02-May-2019  jmcneill branches: 1.11.10;
Fix definition of GICD_IROUTER; the input to this macro is the INTID,
which can be a value between 32 and 1019.
 1.10 24-Nov-2018  skrll Handle ThunderX errata
 1.9 13-Nov-2018  jmcneill Update GICD_CTLR reg bit definitions to reflect the layout of the register
when either in non-secure state or for a system that only supports a single
state.
 1.8 09-Nov-2018  jmcneill Add support for GICv3 Locality-specific Periphal Interrupts (LPIs) and the
Interrupt Translation Service (ITS).
 1.7 08-Aug-2018  jmcneill Update for GICv3
 1.6 22-Jun-2017  skrll branches: 1.6.4; 1.6.6;
Naming consistency for (as yet) unused register
 1.5 09-Jun-2015  skrll Correct a comment
 1.4 05-Jun-2015  skrll Add an define for spurious interrupt number 1022
 1.3 27-Apr-2014  matt branches: 1.3.4;
When dealing with the PMR register, only use non-secure priority values.
 1.2 28-Mar-2014  matt branches: 1.2.2;
Various MP changes.
 1.1 01-Sep-2012  matt branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.16;
Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.1.16.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.1.16.1 01-Sep-2012  matt file gic_reg.h was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.1.8.1 18-May-2014  rmind sync with head
 1.1.6.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.1.6.1 01-Sep-2012  matt file gic_reg.h was added on branch matt-nb6-plus on 2012-11-28 22:40:27 +0000
 1.1.4.3 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.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 01-Sep-2012  yamt file gic_reg.h was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.1.2.2 03-Dec-2017  jdolecek update from HEAD
 1.1.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.2.1 10-Aug-2014  tls Rebase.
 1.3.4.3 28-Aug-2017  skrll Sync with HEAD
 1.3.4.2 22-Sep-2015  skrll Sync with HEAD
 1.3.4.1 06-Jun-2015  skrll Sync with HEAD
 1.6.6.1 10-Jun-2019  christos Sync with HEAD
 1.6.4.2 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.6.4.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.11.10.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.5 30-Oct-2021  jmcneill Implement gic_splraise and the gic_splx fast path in asm (armv8).
 1.4 26-Sep-2021  jmcneill Add missing insn barrier
 1.3 20-Sep-2021  jmcneill Make _splraise/_spllower/splx functions available to modules again.
 1.2 18-Sep-2021  jmcneill gic_splx: performance optimizations

Avoid any kind of register access (DAIF, PMR, etc), barriers, and atomic
operations in the common case where no interrupt fires between spl being
raised and lowered.

This introduces a per-CPU return address (ci_splx_restart) used by the
vector handler to restart a sequence in splx that compares the new ipl
with the per-CPU hardware priority state stored in ci_hwpl.
 1.1 10-Aug-2021  jmcneill Use custom spl funcs for GIC and avoid unnecessary pmr register accesses
in splx.
 1.1 10-Aug-2021  jmcneill Use custom spl funcs for GIC and avoid unnecessary pmr register accesses
in splx.
 1.3 31-Oct-2021  jmcneill Reload tpidr_el1 into x3 and re-test newipl vs cpl on restart.
 1.2 30-Oct-2021  jmcneill Add __HAVE_PREEMPTION support to gic_splfuncs asm funcs.

"looks right to me" - thorpej
 1.1 30-Oct-2021  jmcneill Implement gic_splraise and the gic_splx fast path in asm (armv8).
 1.11 14-Mar-2021  skrll Remove an unnecessary if statement in gic_v2m_msi_alloc when finding a
'count' that fits the available.
 1.10 11-Dec-2020  jmcneill Preserve ST Lower and Upper fields when clearing Mask bit in the MSI-X
vector control register.
 1.9 07-May-2020  jmcneill branches: 1.9.2;
Do not store a pointer to the passed in struct pci_attach_args
 1.8 02-Dec-2019  msaitoh Use PCI_MSIX_"TBL"BIR_MASK instead of PCI_MSIX_"PBA"BIR_MASK for MSI-X table.
This is not a real bug because both macros have the same value.
 1.7 14-Oct-2019  jmcneill Add support for Amazon's Graviton MSI controller.

Graviton has a GICv3 with a modified GICv2m (!) for MSIs. Instead of
sending messages to a fixed address with the SPI as data, the Graviton's
GICv2m uses a different address for each vector with "don't care" as data.
 1.6 17-Jun-2019  jmcneill branches: 1.6.2;
- Disable MSI/MSI-X when making changes
- MSI: Write the vector count to the Multi Message Enable (MME) field
- MSI: Set DATA to the first LPI number, not the last
 1.5 07-Dec-2018  jakllsch branches: 1.5.4;
fix a paste-o in a panic message
 1.4 16-Nov-2018  jmcneill branches: 1.4.2;
Add intr_establish_xname support to arm and expose it to intrctl
 1.3 31-Oct-2018  jmcneill Add MSI-X support.
 1.2 30-Oct-2018  jmcneill Fail gracefully when an attempt to allocate MSI vectors is made on a device
without MSI capabilities.
 1.1 21-Oct-2018  jmcneill Add support for PCI MSI using ARM GICv2m.
 1.4.2.3 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.4.2.2 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.4.2.1 16-Nov-2018  pgoyette file gic_v2m.c was added on branch pgoyette-compat on 2018-11-26 01:52:18 +0000
 1.5.4.4 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.5.4.3 08-Apr-2020  martin Merge changes from current as of 20200406
 1.5.4.2 10-Jun-2019  christos Sync with HEAD
 1.5.4.1 07-Dec-2018  christos file gic_v2m.c was added on branch phil-wifi on 2019-06-10 22:05:52 +0000
 1.6.2.2 07-May-2020  martin Pull up following revision(s) (requested by jmcneill in ticket #895):

sys/arch/arm/cortex/gic_v2m.h: revision 1.3
sys/arch/arm/cortex/gic_v2m.c: revision 1.9

Do not store a pointer to the passed in struct pci_attach_args
 1.6.2.1 15-Oct-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #334):

sys/arch/arm/cortex/gic_v2m.c: revision 1.7
sys/arch/arm/acpi/gicv3_acpi.c: revision 1.5
sys/arch/arm/acpi/files.acpi: revision 1.8
sys/arch/arm/acpi/gic_acpi.c: revision 1.4
sys/arch/arm/cortex/files.cortex: revision 1.13
sys/arch/arm/acpi/gic_v2m_acpi.c: revision 1.1
sys/arch/arm/acpi/gic_v2m_acpi.h: revision 1.1
sys/arch/arm/cortex/gic_v2m.h: revision 1.2

Add support for Amazon's Graviton MSI controller.

Graviton has a GICv3 with a modified GICv2m (!) for MSIs. Instead of
sending messages to a fixed address with the SPI as data, the Graviton's
GICv2m uses a different address for each vector with "don't care" as data.
 1.9.2.2 03-Apr-2021  thorpej Sync with HEAD.
 1.9.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.3 07-May-2020  jmcneill Do not store a pointer to the passed in struct pci_attach_args
 1.2 14-Oct-2019  jmcneill Add support for Amazon's Graviton MSI controller.

Graviton has a GICv3 with a modified GICv2m (!) for MSIs. Instead of
sending messages to a fixed address with the SPI as data, the Graviton's
GICv2m uses a different address for each vector with "don't care" as data.
 1.1 21-Oct-2018  jmcneill branches: 1.1.2; 1.1.6; 1.1.8;
Add support for PCI MSI using ARM GICv2m.
 1.1.8.2 07-May-2020  martin Pull up following revision(s) (requested by jmcneill in ticket #895):

sys/arch/arm/cortex/gic_v2m.h: revision 1.3
sys/arch/arm/cortex/gic_v2m.c: revision 1.9

Do not store a pointer to the passed in struct pci_attach_args
 1.1.8.1 15-Oct-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #334):

sys/arch/arm/cortex/gic_v2m.c: revision 1.7
sys/arch/arm/acpi/gicv3_acpi.c: revision 1.5
sys/arch/arm/acpi/files.acpi: revision 1.8
sys/arch/arm/acpi/gic_acpi.c: revision 1.4
sys/arch/arm/cortex/files.cortex: revision 1.13
sys/arch/arm/acpi/gic_v2m_acpi.c: revision 1.1
sys/arch/arm/acpi/gic_v2m_acpi.h: revision 1.1
sys/arch/arm/cortex/gic_v2m.h: revision 1.2

Add support for Amazon's Graviton MSI controller.

Graviton has a GICv3 with a modified GICv2m (!) for MSIs. Instead of
sending messages to a fixed address with the SPI as data, the Graviton's
GICv2m uses a different address for each vector with "don't care" as data.
 1.1.6.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.6.2 10-Jun-2019  christos Sync with HEAD
 1.1.6.1 21-Oct-2018  christos file gic_v2m.h was added on branch phil-wifi on 2019-06-10 22:05:52 +0000
 1.1.2.2 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.1.2.1 21-Oct-2018  pgoyette file gic_v2m.h was added on branch pgoyette-compat on 2018-11-26 01:52:18 +0000
 1.56 04-Sep-2025  rin gicv3: Some more left-shift v.s. int fixes

Suggested by msaitoh@, thanks!
 1.55 04-Sep-2025  rin gicv3: Appease KUBSAN, otherwise NFC
 1.54 26-Jun-2022  jmcneill branches: 1.54.4; 1.54.12;
build fix: remove includes of opt_gic.h
 1.53 25-Jun-2022  jmcneill gicv3: Treat all IPLs below IPL_VM as IPL_NONE for hwpl mappings
 1.52 25-Jun-2022  jmcneill Remove GIC_SPLFUNCS.
 1.51 25-Jun-2022  jmcneill pic: Update ci_cpl in pic_set_priority callback.

Not all ICs need interrupts disabled to update the priority. DAIF accesses
are not cheap, so push the update of ci_cpl from pic_set_priority to the
IC's pic_set_priority callback, and let the IC driver determine whether
or not it needs interrupts disabled.
 1.50 28-Mar-2022  riastradh arm/cortex: Use container_of, not bespoke offsetof arithmetic.
 1.49 02-Oct-2021  skrll Trailing whitespace
 1.48 26-Sep-2021  jmcneill If an SGI or PPI is established after interrupts are enabled, make sure
we unblock the source on _all_ CPUs and not just the CPU that is
establishing the interrupt.
 1.47 11-Sep-2021  jmcneill GIC: Support SPI affinity routing before secondary CPUs have hatched.

Instead of reading MPIDR from CPU init to determine a routing target, trust
system configuration data (Devicetree or ACPI) to properly fill in ci_cpuid.
This allows for SPI affinity routing to work before secondary CPUs are
hatched; previously, one of two things would happen:

a) If 1ofN distribution is supported, the SPI could be distributed to any
participating PE.
b) If 1ofN distribution is not supported, the SPI would not be forwarded
and would stay pending.
 1.46 10-Aug-2021  jmcneill Make gic_splfuncs optional and disable it by default until it has had
more testing.
 1.45 10-Aug-2021  jmcneill Use custom spl funcs for GIC and avoid unnecessary pmr register accesses
in splx.
 1.44 28-Mar-2021  jmcneill Disable 1ofN distribution of SPIs by default. This is a workaround for an
issue in the USB stack -- signaling transfer complete on multiple PEs can
cause transfer completions to be processed out of order.
 1.43 23-Feb-2021  jmcneill branches: 1.43.2;
If we are committing a deferred splhigh() to hardware, no need to continue.
 1.42 21-Feb-2021  jmcneill Keep current hardware priority value in struct cpu_info and use it instead
of reading icc_pmr_el1 in gicv3_set_priority.
 1.41 09-Feb-2021  ryo fix build without MULTIPROCESSOR
 1.40 07-Feb-2021  jmcneill Optimize hardware priority updates.

In gicv3_set_priority, read the current priority mask and only update it
if we are lowering the priority. The hardware priority filter is raised
only after taking an interrupt. This makes splfoo/splx without an interrupt
in between considerably cheaper as PMR writes are relatively expensive
compared to reads.

While here, avoid an extra daif read when dispatching interrupts by using
ENABLE_INTERRUPT() / DISABLE_INTERRUPT() instead of cpsie() / cpsid() macros.
 1.39 16-Jan-2021  jmcneill Remove MAXCPUS dependency.
 1.38 22-Dec-2020  jmcneill When lpiconf flushing is required, make sure to flush to PoC and not PoU.
Spotted by nick.
 1.37 11-Dec-2020  jmcneill Fix spelling in comment.
 1.36 04-Dec-2020  jmcneill gicv3: Only use 1 of N SPI distribution when the feature is available.

A GICv3+ implementation is not guaranteed to support 1 of N SPI
distribution. Support for this feature is indicated in GICD_TYPER.No1N.

When No1N=1, route all interrupts to the primary PE by default and only
allow a single CPU target when updating affinity.
 1.35 24-Nov-2020  jmcneill Improve detection of NS vs S views of priorities.

For PMR, write a 0 to bit7 and see if it sticks. This is only possible from
NS EL1 if we have a non-secure view of ICC_PMR_EL1.

For int priorities (GICD/GICR interfaces and LPIs), assume that the
GICD_CTLR.DS bit is telling us the truth.

RK3399 is special here when using the vendor bootloader, so keep the
auto-detection from the previous commit but limit the scope to only run
on RK3399 SOCs.
 1.34 22-Nov-2020  jmcneill Fix interrupt priorities on N1 SDP.

The GICv3 architecture specification is not clear on the NS view of
priority registers, and there doesn't seem to be any consistency in how
these are implemented in both real and emulated environments.

The previous fix for this issue was meant to detect what we thought at the
time was a bug on the Rockchip RK3399. At that time the theory was somehow
EL1 has a secure view of the hardware, and this is causing us to have the
wrong view of IPRIORITYRn based on IHI0069F section 4.8.6 "Software
accesses of interrupt priority". But it turns out that this is not the
full picture. While I was able to confirm that yes, we do have secure
access to the GIC on RK3399 from EL1, the view of IPRIORITYRn differs
depending on whether you are using the Rockchip TF-A as included with
https://github.com/ayufan-rock64/linux-u-boot (shifted view), or mainline
TF-A from pkgsrc (unshifted view).

So to detect this quirk, we need three things: A method to detect if we
have S access to GIC registers, a method to see how many PMR bits are
implemented, and a method to see how many IPRIORITYRn bits are implemented.

To detect S access, we can try to toggle GICD_CTRL.EnableGrp1S. This bit
is either RES0 (security extensions not implemented), RAZ/WI (non-secure
access in two security state systems) or RW (secure access in two security
state systems).

To read the number of PMR and IPRIORITYRn bits supported, we can write all
1s to the register fields and read them back.

For the RK3399 (Rockchip TF-A) quirk, we assume a shifted view of
IPRIORITYRn if we have detected S accesses, and the PMR and IPRIORITYRn
values differ. The S access test is required because some real hardware
implementations (Ampere eMAG) were observed to report different PMR and
IPRIORITYRn masks, but present an unshifted view of IPRIORITYRn.

During testing, I also discovered that QEMU 5.1 requires this shifted view
workaround as well -- as far as I can tell, this is a QEMU bug. We can't
detect it the same way as RK3399 because security is disabled in the
emulated GIC, and the PMR and IPRIORITYRn tests both return 0xff! So now
if the GICv3 driver sees this configuration, it assumes that the shifted
view is required.

Honestly, this feature is so poorly documented that maybe it is better to
give up on HW priorities and preemption and use a single flat model like
Linux and FreeBSD does.

Tested on Arm N1 SDP, ROCKpro64 (RK3399) with Rockchip and pkgsrc TF-A,
Pinebook Pro (RK3399), Lenovo HR330A (Ampere eMAG), QEMU 5.1 (gic-version=3),
AWS EC2 a1.medium (Graviton).
 1.33 21-Nov-2020  jmcneill Add a per-CPU event counter that counts every time an interrupt handler is
preempted by a higher priority interrupt.
 1.32 01-Nov-2020  jmcneill branches: 1.32.2;
sc_enabled_sgippi can be updated from any CPU, so use atomic_or/atomic_and
 1.31 01-Nov-2020  jmcneill Remove unused __HAVE_PIC_FAST_SOFTINTS block. It never would have worked
if enabled..
 1.30 01-Nov-2020  jmcneill Add an isb() barrier after ICC_SGI1R_EL1 write to prevent reordering with
subsequent wfi/wfe instructions. Haven't seen this in practice but I would
rather be safe here.
 1.29 01-Nov-2020  jmcneill gicv3_set_priority: ICC_PMR_EL1 is self-synchronizing so no need for isb()
here.
 1.28 01-Nov-2020  jmcneill gicv3_irq_handler: No need to call gicv3_set_priority if we are already at
the desired ipl.
 1.27 01-Nov-2020  jmcneill gicv3_ipi_send: simplify logic in kcp != NULL case given that we know that
the kcpuset will only ever contain one cpu.
 1.26 30-Oct-2020  skrll Retire arm_[di]sb in favour of the isb() and dsb(sy) macro invocations.
 1.25 13-Apr-2020  jmcneill Apply similar fix from gic.c that fixed "left shift of 255 by 24 places
cannot be represented in type 'int'" warnings from UBSan.
 1.24 13-Feb-2020  jmcneill branches: 1.24.4;
Make intr affinity work with MSIs again
 1.23 13-Feb-2020  jmcneill Since all ITS instances share a common LPI configuration table, used a
shared vmem arena to allocate pic irqs. Idea from FreeBSD.
 1.22 24-Dec-2019  skrll branches: 1.22.2;
Traiing whitespace
 1.21 05-Sep-2019  jmcneill - Use pic_do_pending_ints in intr handler
- Sprinkle isb
- Fix PMR bits detection on eMAG, from OpenBSD
 1.20 30-Jun-2019  jmcneill branches: 1.20.2;
Fix size of LPI pending table allocation and enable caching of LPI conf
and pending tables where possible.
 1.19 26-Jun-2019  jmcneill Change how we detect secure vs non-secure access.

Write 0xff to ICC_PMR_EL1 and read back how many bits are implemented,
then do the same with a GICD_IPRIORITYR<n> priority value field.

If the values differ, assume we have a shifted view of IPRIORITYR.
 1.18 17-Jun-2019  jmcneill Improve priority handling for cases where access is secure, from OpenBSD.
 1.17 12-Jun-2019  mrg revert rev 1.4:
>Adjust priority mappings, NFCI

it has some unintended change that makes nvme hangy. ok @jmcneill.
 1.16 12-Jun-2019  jmcneill Revert "Route all interrupts to the primary PE by default"
 1.15 12-Jun-2019  jmcneill Route all interrupts to the primary PE by default
 1.14 12-Jun-2019  jmcneill Adjust priority mappings, NFCI
 1.13 23-Nov-2018  jmcneill branches: 1.13.4;
Fix LPI pending table size, use correct LPI conf offset in gicv3_lpi_block_irqs, and set bit[7]=1 for G1NS interrupts when writing to the LPI configuration table.
 1.12 21-Nov-2018  jmcneill kcpuset_ffs returns the cpu number plus one, so make sure to subtract it
 1.11 17-Nov-2018  jmcneill Use intr_establish_xname
 1.10 15-Nov-2018  jmcneill Instead of disabling preemption, set the binary point field to the minimum supported value
 1.9 13-Nov-2018  jmcneill Update GICD_CTLR reg bit definitions to reflect the layout of the register
when either in non-secure state or for a system that only supports a single
state.
 1.8 13-Nov-2018  jmcneill Save a few pages by only allocating LPI pending tables for "ncpu" instead of "MAXCPU" CPUs.
 1.7 10-Nov-2018  jmcneill Implement pic_get_affinity/pic_set_affinity for LPIs via ITS
 1.6 10-Nov-2018  jmcneill Implement pic_get_affinity/pic_set_affinity for SPIs
 1.5 09-Nov-2018  jmcneill Add support for GICv3 Locality-specific Periphal Interrupts (LPIs) and the
Interrupt Translation Service (ITS).
 1.4 05-Nov-2018  jmcneill ICC_PMR_EL1 has different encoding than IPRIORITYR. Not 100% sure that this is correct yet, but it works with both RK3399 and QEMU.
 1.3 30-Sep-2018  jmcneill Set NS access bit when writing ICC_PMR_EL1
 1.2 11-Aug-2018  jmcneill branches: 1.2.2;
IPI and priority fixes. My RK3399 board boots multiuser now.
 1.1 08-Aug-2018  jmcneill Add GICv3 support.
 1.2.2.4 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.2.2.3 20-Oct-2018  pgoyette Sync with head
 1.2.2.2 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.2.2.1 11-Aug-2018  pgoyette file gicv3.c was added on branch pgoyette-compat on 2018-09-06 06:55:26 +0000
 1.13.4.5 21-Apr-2020  martin Sync with HEAD
 1.13.4.4 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.13.4.3 08-Apr-2020  martin Merge changes from current as of 20200406
 1.13.4.2 10-Jun-2019  christos Sync with HEAD
 1.13.4.1 23-Nov-2018  christos file gicv3.c was added on branch phil-wifi on 2019-06-10 22:05:52 +0000
 1.20.2.1 22-Sep-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #222):

sys/arch/arm/cortex/gicv3.c: revision 1.21

- Use pic_do_pending_ints in intr handler
- Sprinkle isb
- Fix PMR bits detection on eMAG, from OpenBSD
 1.22.2.1 29-Feb-2020  ad Sync with head.
 1.24.4.1 20-Apr-2020  bouyer Sync with HEAD
 1.32.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.32.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.32.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.43.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.54.12.1 05-Sep-2025  martin Pull up following revision(s) (requested by rin in ticket #25):
sys/arch/arm/cortex/gicv3.c: revision 1.55
sys/arch/arm/cortex/gicv3.c: revision 1.56

gicv3: Appease KUBSAN, otherwise NFC

gicv3: Some more left-shift v.s. int fixes
Suggested by msaitoh@, thanks!
 1.54.4.1 05-Sep-2025  martin Pull up following revision(s) (requested by rin in ticket #1156):
sys/arch/arm/cortex/gicv3.c: revision 1.55
sys/arch/arm/cortex/gicv3.c: revision 1.56

gicv3: Appease KUBSAN, otherwise NFC

gicv3: Some more left-shift v.s. int fixes
Suggested by msaitoh@, thanks!
 1.11 16-Jan-2021  jmcneill Remove MAXCPUS dependency.
 1.10 04-Dec-2020  jmcneill gicv3: Only use 1 of N SPI distribution when the feature is available.

A GICv3+ implementation is not guaranteed to support 1 of N SPI
distribution. Support for this feature is indicated in GICD_TYPER.No1N.

When No1N=1, route all interrupts to the primary PE by default and only
allow a single CPU target when updating affinity.
 1.9 24-Nov-2020  jmcneill Improve detection of NS vs S views of priorities.

For PMR, write a 0 to bit7 and see if it sticks. This is only possible from
NS EL1 if we have a non-secure view of ICC_PMR_EL1.

For int priorities (GICD/GICR interfaces and LPIs), assume that the
GICD_CTLR.DS bit is telling us the truth.

RK3399 is special here when using the vendor bootloader, so keep the
auto-detection from the previous commit but limit the scope to only run
on RK3399 SOCs.
 1.8 13-Feb-2020  jmcneill branches: 1.8.6;
Since all ITS instances share a common LPI configuration table, used a
shared vmem arena to allocate pic irqs. Idea from FreeBSD.
 1.7 30-Jun-2019  jmcneill branches: 1.7.4;
Fix size of LPI pending table allocation and enable caching of LPI conf
and pending tables where possible.
 1.6 26-Jun-2019  jmcneill Remove unused field
 1.5 17-Jun-2019  jmcneill Improve priority handling for cases where access is secure, from OpenBSD.
 1.4 10-Nov-2018  jmcneill branches: 1.4.4;
Implement pic_get_affinity/pic_set_affinity for LPIs via ITS
 1.3 10-Nov-2018  jmcneill Implement pic_get_affinity/pic_set_affinity for SPIs
 1.2 09-Nov-2018  jmcneill Add support for GICv3 Locality-specific Periphal Interrupts (LPIs) and the
Interrupt Translation Service (ITS).
 1.1 08-Aug-2018  jmcneill branches: 1.1.2;
Add GICv3 support.
 1.1.2.3 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.1.2.2 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.1.2.1 08-Aug-2018  pgoyette file gicv3.h was added on branch pgoyette-compat on 2018-09-06 06:55:26 +0000
 1.4.4.4 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.4.4.3 08-Apr-2020  martin Merge changes from current as of 20200406
 1.4.4.2 10-Jun-2019  christos Sync with HEAD
 1.4.4.1 10-Nov-2018  christos file gicv3.h was added on branch phil-wifi on 2019-06-10 22:05:52 +0000
 1.7.4.1 29-Feb-2020  ad Sync with head.
 1.8.6.2 03-Apr-2021  thorpej Sync with HEAD.
 1.8.6.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.41 28-Jan-2025  jmcneill gicv3_its: Fix indirect L2 device table allocation.
 1.40 15-Dec-2024  jmcneill gicv3: its: Fix regression on LX2K.

Page size probing and device ID width changes broke LX2K, revert these
parts of the last set of changes as they are not required on X1E.
 1.39 12-Dec-2024  skrll gicv3: log the ITS command table information
 1.38 10-Dec-2024  jmcneill fixup! Restore a line accidentally removed in my previous change
 1.37 08-Dec-2024  riastradh gicv3_its.c: Do-nothing macros must expand to `__nothing', not empty.

No functional change intended -- unless this was accidentally broken
before.
 1.36 07-Dec-2024  jmcneill gicv3: ITS: Add support for indirect device tables.

When devbits is too large to fit into the first level of device table,
some hardware supports the concept of indirect tables. Add support for
this and use it when supported.

This is required for MSIs to work properly on Snapdragon X Elite platforms
(otherwise, MAPD command fails and stalls the ITS command queue).
 1.35 11-Nov-2023  tnn branches: 1.35.2;
gicv3_its: assorted minor improvements

- KASSERT that the command queue is not stalled due to async error
before issuing more commands.
- implement gits_command_int under #if 0 (useful for troubleshooting)
- protect command queue with its_lock consistently
- KASSERT for 32-bit MSI that upper bits are 0
- KASSERT return value of gicv3_its_msi_alloc_lpi
- KASSERT that safe conditions for writing to CBASER are met
- move CWRITER initialization to before CBASER
- fix alignment of tables for the 16KB page size case
 1.34 31-Oct-2021  skrll Fix non-DIAGNOSTIC builds (hopefully). No idea why this didn't fail to
build for me without DIAGNOSTIC.
 1.33 31-Oct-2021  skrll Rework Arm (32bit and 64bit) AP startup so that cpu_hatch doesn't sleep.

The AP initialisation code in cpu_init_secondary_processor will read and
initialise the required system registers and state for the BP to attach
and report.

Rework the interrupt handler code for this new sequence. Thankfully,
this removes a bunch of code for bcm2836mp.

The VFP detection handler on <= armv7 relies on the global undefined
handler being in place until the BP attaches vfp. That is, after the
APs have been spun up.

gicv3_its.c has a serialisation issue which is protected against in
the gicv3_its_cpu_init, which is called from cpu_hatch, with a spin
lock. The serialisation issue needs addressing more completely.

Tested on RPI3, Apple M1, QEMU, and lx2k

Fixes PR port-arm/56264:
diagnostic assertion "l->l_stat == LSONPROC" failed on RPI3
 1.32 16-Jan-2021  jmcneill Remove MAXCPUS dependency.
 1.31 24-Dec-2020  jmcneill trailing whitespace
 1.30 11-Dec-2020  jmcneill Simplify gits_command by getting rid of the _BYTE_ORDER test and just
always use the loop + htole64 path.
 1.29 11-Dec-2020  jmcneill Preserve ST Lower and Upper fields when clearing Mask bit in the MSI-X
vector control register.
 1.28 24-Sep-2020  ryo branches: 1.28.2;
need to swap on big endian machines.

"The ITS command queue uses a little endian memory order model." (GIC Architecture Specification)
 1.27 13-Feb-2020  jmcneill Make intr affinity work with MSIs again
 1.26 13-Feb-2020  jmcneill Since all ITS instances share a common LPI configuration table, used a
shared vmem arena to allocate pic irqs. Idea from FreeBSD.
 1.25 01-Feb-2020  jmcneill Use kmem_zalloc for its state, fixes possible crash if a driver tries to
set affinity before a CPU is online.
 1.24 17-Jan-2020  jmcneill Set msi_id to its_id
 1.23 24-Dec-2019  skrll branches: 1.23.2;
Traiing whitespace
 1.22 02-Dec-2019  msaitoh Use PCI_MSIX_"TBL"BIR_MASK instead of PCI_MSIX_"PBA"BIR_MASK for MSI-X table.
This is not a real bug because both macros have the same value.
 1.21 30-Jun-2019  jmcneill branches: 1.21.2;
Cleanup ThunderX quirk and print cache / shareability details for ITT tables
 1.20 30-Jun-2019  jmcneill Enable caching of ITS tables when possible
 1.19 29-Jun-2019  jmcneill Restore original size calculation for MAPD and don't disable MSI/MSIX on devices before making changes
 1.18 29-Jun-2019  jmcneill Rename lpi pic to gicv3-its when an ITS is found
 1.17 23-Jun-2019  jmcneill Pass correct EventID to MOVI and INV commands
 1.16 23-Jun-2019  jmcneill Remove unused variable (build fix)
 1.15 23-Jun-2019  jmcneill Ensure that the "size" parameter of MAPD matches the size of the ITT being
mapped and subtract the LPI base from EventID. Fixes multi-vector MSI/MSI-X
on RK3399.
 1.14 16-Jun-2019  jmcneill Pass correct event ID with MOVI commands
 1.13 16-Jun-2019  jmcneill - Disable MSI/MSI-X when making changes
- MSI: Write the vector count to the Multi Message Enable (MME) field
- MSI: Set DATA to the first LPI number, not the last
 1.12 12-Jun-2019  jmcneill Allow set_affinity calls before PEs are brought online. We store the
desired target PE if set_affinity is called early and restore the routes
when the PE comes alive.
 1.11 12-Jun-2019  jmcneill Fail gracefully if gicv3_its_set_affinity is called before a cpu is
brought online.
 1.10 08-Dec-2018  jmcneill branches: 1.10.4;
Add support for decoding PCI ID mappings using IO remapping tables (IORT).
 1.9 28-Nov-2018  jmcneill Allow non-power of 2 counts, and support alloc/release/alloc patterns for a device as long as the ITT size is sufficient
 1.8 24-Nov-2018  skrll branches: 1.8.2;
Handle ThunderX errata
 1.7 23-Nov-2018  jmcneill Only allocate what we need for ITT tables
 1.6 23-Nov-2018  jmcneill Fix ITT size, only need to MAPD once per device.
 1.5 22-Nov-2018  jakllsch use correct interrupt index

fixes intrctl list

from jmcneill@
 1.4 21-Nov-2018  jmcneill kcpuset_ffs returns the cpu number plus one, so make sure to subtract it
 1.3 16-Nov-2018  jmcneill Add intr_establish_xname support to arm and expose it to intrctl
 1.2 10-Nov-2018  jmcneill Implement pic_get_affinity/pic_set_affinity for LPIs via ITS
 1.1 09-Nov-2018  jmcneill Add support for GICv3 Locality-specific Periphal Interrupts (LPIs) and the
Interrupt Translation Service (ITS).
 1.8.2.3 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.8.2.2 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.8.2.1 24-Nov-2018  pgoyette file gicv3_its.c was added on branch pgoyette-compat on 2018-11-26 01:52:18 +0000
 1.10.4.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.10.4.2 10-Jun-2019  christos Sync with HEAD
 1.10.4.1 08-Dec-2018  christos file gicv3_its.c was added on branch phil-wifi on 2019-06-10 22:05:52 +0000
 1.21.2.1 10-Feb-2020  martin Pull up following revision(s) (requested by jmcneill in ticket #680):

sys/arch/arm/cortex/gicv3_its.c: revision 1.25

Use kmem_zalloc for its state, fixes possible crash if a driver tries to
set affinity before a CPU is online.
 1.23.2.2 29-Feb-2020  ad Sync with head.
 1.23.2.1 17-Jan-2020  ad Sync with head.
 1.28.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.28.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.28.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.35.2.1 02-Aug-2025  perseant Sync with HEAD
 1.10 28-Jan-2025  jmcneill gicv3_its: rename pt_dev_id to pt_index
 1.9 07-Dec-2024  jmcneill gicv3: ITS: Add support for indirect device tables.

When devbits is too large to fit into the first level of device table,
some hardware supports the concept of indirect tables. Add support for
this and use it when supported.

This is required for MSIs to work properly on Snapdragon X Elite platforms
(otherwise, MAPD command fails and stalls the ITS command queue).
 1.8 31-Oct-2021  skrll branches: 1.8.10;
Rework Arm (32bit and 64bit) AP startup so that cpu_hatch doesn't sleep.

The AP initialisation code in cpu_init_secondary_processor will read and
initialise the required system registers and state for the BP to attach
and report.

Rework the interrupt handler code for this new sequence. Thankfully,
this removes a bunch of code for bcm2836mp.

The VFP detection handler on <= armv7 relies on the global undefined
handler being in place until the BP attaches vfp. That is, after the
APs have been spun up.

gicv3_its.c has a serialisation issue which is protected against in
the gicv3_its_cpu_init, which is called from cpu_hatch, with a spin
lock. The serialisation issue needs addressing more completely.

Tested on RPI3, Apple M1, QEMU, and lx2k

Fixes PR port-arm/56264:
diagnostic assertion "l->l_stat == LSONPROC" failed on RPI3
 1.7 16-Jan-2021  jmcneill Remove MAXCPUS dependency.
 1.6 12-Jun-2019  jmcneill branches: 1.6.10;
Allow set_affinity calls before PEs are brought online. We store the
desired target PE if set_affinity is called early and restore the routes
when the PE comes alive.
 1.5 12-Jun-2019  jmcneill Fail gracefully if gicv3_its_set_affinity is called before a cpu is
brought online.
 1.4 28-Nov-2018  jmcneill branches: 1.4.4;
Allow non-power of 2 counts, and support alloc/release/alloc patterns for a device as long as the ITT size is sufficient
 1.3 24-Nov-2018  jakllsch branches: 1.3.2;
include dev/pci/pcivar.h, we use pci_attach_args directly
 1.2 10-Nov-2018  jmcneill Implement pic_get_affinity/pic_set_affinity for LPIs via ITS
 1.1 09-Nov-2018  jmcneill Add support for GICv3 Locality-specific Periphal Interrupts (LPIs) and the
Interrupt Translation Service (ITS).
 1.3.2.3 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.3.2.2 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.3.2.1 24-Nov-2018  pgoyette file gicv3_its.h was added on branch pgoyette-compat on 2018-11-26 01:52:18 +0000
 1.4.4.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.4.4.2 10-Jun-2019  christos Sync with HEAD
 1.4.4.1 28-Nov-2018  christos file gicv3_its.h was added on branch phil-wifi on 2019-06-10 22:05:52 +0000
 1.6.10.1 03-Apr-2021  thorpej Sync with HEAD.
 1.8.10.1 02-Aug-2025  perseant Sync with HEAD
 1.50 09-Jan-2025  rin gtmr_delay: Put SPINLOCK_BACKOFF_HOOK in busy loop

It is expanded as a `yield` instruction for aarch64.

This slightly improves peak performance for some drivers on
MP environments, as tested by msaitoh@ (thanks!).

XXX
This is what OpenBSD does, while FreeBSD just busy-spins.

However, unfortunately, benefits from `yield` should be limited,
as we still read count register quite frequently.

For long-duration delays, Linux uses `wfit` and `wfet` insns if
provided, and falls back to `wfe` otherwise:

https://github.com/torvalds/linux/blob/master/arch/arm64/lib/delay.c#L26-L51

Event streams should be configured for this purpose.
 1.49 03-Mar-2022  riastradh branches: 1.49.10;
arm: Use device_set_private for various drivers.
 1.48 13-Nov-2021  jakllsch fix aarch64 build
 1.47 12-Nov-2021  jmcneill gtmr: Add support for arm,cpu-registers-not-fw-configured property.

On armv7, arm,cpu-registers-not-fw-configured means that firmware hasn't
bothered to configure any generic timer registers and we need to
initialize cntfrq ourselves.
 1.46 31-Oct-2021  skrll Rework Arm (32bit and 64bit) AP startup so that cpu_hatch doesn't sleep.

The AP initialisation code in cpu_init_secondary_processor will read and
initialise the required system registers and state for the BP to attach
and report.

Rework the interrupt handler code for this new sequence. Thankfully,
this removes a bunch of code for bcm2836mp.

The VFP detection handler on <= armv7 relies on the global undefined
handler being in place until the BP attaches vfp. That is, after the
APs have been spun up.

gicv3_its.c has a serialisation issue which is protected against in
the gicv3_its_cpu_init, which is called from cpu_hatch, with a spin
lock. The serialisation issue needs addressing more completely.

Tested on RPI3, Apple M1, QEMU, and lx2k

Fixes PR port-arm/56264:
diagnostic assertion "l->l_stat == LSONPROC" failed on RPI3
 1.45 09-Sep-2021  jmcneill If we get a spurious interrupt, log a debug message and ignore it.

Otherwise we risk tripping an assertion later on due to an interrupt
firing before it is scheduled.
 1.44 30-Aug-2021  jmcneill - Add an isb before cnt[pv]_ctl read
- cntk_ctl is 64-bits
- Do not toggle CNTCTL_IMASK in intr handler, as this may be needed
elsewhere.
 1.43 18-Jan-2021  jmcneill Fix a comment
 1.42 30-Oct-2020  skrll branches: 1.42.2;
Retire arm_[di]sb in favour of the isb() and dsb(sy) macro invocations.
 1.41 12-Aug-2019  jmcneill Add support for physical timers and sprinkle isb where needed.
 1.40 16-Jun-2019  jmcneill branches: 1.40.2;
Disable counter before updating cval/tval
 1.39 30-Jan-2019  jmcneill Fix bitmask in A64 errata workaround and write cval instead of tval on A64
 1.38 15-Nov-2018  jmcneill A64 timer errata can cause the timer to fire too soon, so skip KASSERT here too.
 1.37 30-Oct-2018  jmcneill Disable diagnostic assertions around timer jitter on Allwinner A64. It
seems the instability of CNTVCT can cause issues with the compare value,
and rather than applying a heavy workaround just skip the panics.
 1.36 30-Sep-2018  skrll If we're going to allow pl0 to access virtual and physical counters then
we should allow it from all CPUs.

kern/53630 (openssl fallout on arm)
 1.35 16-Sep-2018  jmcneill port-evbarm/53308: evbarm-earmv7hf performance regression under qemu

Revert gtmr.c r1.27 and apply a workaround for Allwinner A64 SoCs based
on analysis of the issue from LKML: https://lkml.org/lkml/2018/5/10/774

Since this bug is specific to the Allwinner A64 SoC, only apply the
workaround when the root ("/") node of the device tree is compatible
with "allwinner,sun50i-a64".
 1.34 10-Sep-2018  skrll Typo in comment from Joerg's gtmr diff
 1.33 01-Sep-2018  tnn fix non-DIAGNOSTIC build
 1.32 30-Jun-2018  jmcneill ARM ARM refers to this as "ARM Generic Timer", so adjust printf at attach
to match.
 1.31 24-Jun-2018  ryo branches: 1.31.2;
fixed a case of gtmr_cntvct_stable_read() is returning the same value as before.
 1.30 17-Jun-2018  jmcneill Simplify gtmr_delay and don't mix and match usage of the physical and
virtual timers (always use the virtual timer).
 1.29 09-Jun-2018  jakllsch Avoid unnecessarily touching CNTP_CTL.

We may not have the privilege of accessing CNTP_CTL if running as a
virtualized guest, and we're not using the Physical Timer for interupt
generation anyway.
 1.28 21-May-2018  jmcneill Replace stable_read/write debug printfs with event counters
 1.27 14-May-2018  joerg Workaround A-008585 errata in GTMR.

Register reads and writes may provide unstable results if the counter
hardware is active at the same time. This results in non-monotonic
counters seen by both the gtmr interrupt and time counter.

The loops are currently applied unconditionally, restricting them to
appropiate FDT markers can be applied later.
 1.26 14-May-2018  joerg Remove a number of debug #if 0s.
 1.25 14-May-2018  joerg Remove unused gtmr_bootdelay.
 1.24 01-Apr-2018  ryo Add initial support for ARMv8 (AARCH64) (by nisimura@ and ryo@)

- sys/arch/evbarm64 is gone and integrated into sys/arch/evbarm. (by skrll@)
- add support fdt. evbarm/conf/GENERIC64 fdt (bcm2837,sunxi,tegra) based generic 64bit kernel config. (by skrll@, jmcneill@)
 1.23 30-Nov-2017  skrll branches: 1.23.2;
When attaching gtmr at fdt use fdtbus_intr_establish to establish the
gtmr interrupt.
 1.22 25-Oct-2017  skrll Improve delay to be better than 1.3 innaccurate by default and handle the
unlikely wrap
 1.21 25-Oct-2017  skrll Trailing whitespace
 1.20 09-Sep-2017  jmcneill gtmr_intr: If the ISTATUS bit is 0, timer condition is not met. In this
case, just return 0.
 1.19 24-Aug-2017  jmcneill Add __HAVE_GENERIC_CPU_INITCLOCKS option. If set, don't export
cpu_initclocks from device drivers as common code (in this case FDT) will
provide its own copy.
 1.18 17-Jun-2017  jmcneill Interrupts are enabled before the timer is configured. Ensure that the
timer is disabled when attaching so it doesn't go crazy between the time
interrupts are enabled and clocks are initialized. My RPI3 makes it
multi-user now.
 1.17 28-May-2017  jmcneill branches: 1.17.2;
If the "frequency" property is not specified, try to use the value in
CNTFRQ. Firmware should have already set this for us.
 1.16 20-Apr-2015  matt Use physical timer for gtmr_delay();
 1.15 12-Apr-2015  matt Don't adjust interval if we are too far into the next tick.
 1.14 27-Mar-2015  skrll Whitespace
 1.13 26-Mar-2015  skrll Trailing whitespace.
 1.12 24-Mar-2015  matt Move isb's to before reading count. Change interrupt to level.
 1.11 24-Mar-2015  matt Sprinkle some arm_isb() to force execution of the mcrr instructions to get
more accurate values. (Given that the generic timer is usually running at
a 64th or less of the cpu clock, this only settle to a tick or so.)
 1.10 23-Mar-2015  jmcneill port-arm/49737: armgtmr0 timer broken

Use physical timer instead of virtual timer for timecounter. For platforms
that implement virtualization extensions, the CNTVOFF register defines a
virtual offset between the physical count and virtual count. Unfortunately,
the CNTVOFF register is only accessible in secure mode and the value is
per-CPU, so we may end up in a scenario where virtual count reads from
CPU A -> B -> A are not monotonic. No offset applied to physical timer,
so physical count reads are guaranteed to be monotonic.
 1.9 28-Feb-2015  skrll Initial RPI2 support - it doesn't work yet. The generic timer gets messed
up somehow.

This commit changes the KVA layout of the RPI.
 1.8 11-Jun-2014  matt branches: 1.8.2; 1.8.4;
Add a KASSERT to make sure the counter is running.
 1.7 13-Apr-2014  matt branches: 1.7.2;
Make sure freq is not 0.
 1.6 28-Mar-2014  matt branches: 1.6.2;
Add gtmr_bootdelay. rename clockhandler to gtmr_intr
 1.5 17-Dec-2013  joerg branches: 1.5.2;
delta can't be negative. Wrapped value is seen as large positive, so
covered already.
 1.4 12-Sep-2013  matt Cleanup some diagnostic code.
 1.3 07-Sep-2013  matt Fix some bugs.
 1.2 20-Jun-2013  matt branches: 1.2.2; 1.2.4;
Pass the offset from CBAR/PERIPHBASE in mpcore_attach_args.
Modify the list of devices to include the offset(s) from PERIPHBASE.
 1.1 16-Jun-2013  matt Add generic timer support (untested)
 1.2.4.1 18-May-2014  rmind sync with head
 1.2.2.4 03-Dec-2017  jdolecek update from HEAD
 1.2.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 20-Jun-2013  tls file gtmr.c was added on branch tls-maxphys on 2013-06-23 06:20:00 +0000
 1.5.2.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.5.2.1 17-Dec-2013  matt file gtmr.c was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.6.2.1 10-Aug-2014  tls Rebase.
 1.7.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.7.2.1 13-Apr-2014  yamt file gtmr.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.8.4.3 28-Aug-2017  skrll Sync with HEAD
 1.8.4.2 06-Jun-2015  skrll Sync with HEAD
 1.8.4.1 06-Apr-2015  skrll Sync with HEAD
 1.8.2.3 26-Jul-2017  snj Pull up following revision(s) (requested by jmcneill in ticket #1435):
sys/arch/arm/arm32/cpu.c: 1.113 via patch
sys/arch/arm/broadcom/bcm2835_bsc.c: 1.6 via patch
sys/arch/arm/broadcom/bcm2835_plcom.c: 1.4 via patch
sys/arch/arm/cortex/gtmr.c: 1.18 via patch
sys/arch/arm/include/armreg.h: 1.110 via patch
sys/arch/arm/include/vfpreg.h: 1.15 via patch
sys/arch/arm/vfp/vfp_init.c: 1.50 via patch
sys/arch/evbarm/rpi/rpi_machdep.c: 1.59, 1.70-1.72 via patch
sys/arch/evbarm/rpi/vcprop.h: 1.16
Get the RPI3 working (in aarch32 mode) by recognising Cortex A53 CPUs.
While I'm here add some A57/A72 info as well.
My RPI3 works with FB console - the uart needs some help with its clocks.
--
Do invalidate the cache as RPI2 build with Clang can't fetch the memory
config otherwise.
--
Use the VC property mailbox to request the UART clock rate and use it
appropriately
Newer firmwares use 48MHz
--
Disable BSC0 on Raspberry Pi 3 and Zero W boards.
--
Interrupts are enabled before the timer is configured. Ensure that the
timer is disabled when attaching so it doesn't go crazy between the time
interrupts are enabled and clocks are initialized. My RPI3 makes it
multi-user now.
--
Enable UART0 (PL011) on GPIO header for Raspberry Pi 3 / Zero W
 1.8.2.2 06-Apr-2015  snj Pull up following revision(s) (requested by skrll in ticket #662):
sys/arch/arm/cortex/gtmr.c: revision 1.10-1.14
port-arm/49737: armgtmr0 timer broken
Use physical timer instead of virtual timer for timecounter. For platforms
that implement virtualization extensions, the CNTVOFF register defines a
virtual offset between the physical count and virtual count. Unfortunately,
the CNTVOFF register is only accessible in secure mode and the value is
per-CPU, so we may end up in a scenario where virtual count reads from
CPU A -> B -> A are not monotonic. No offset applied to physical timer,
so physical count reads are guaranteed to be monotonic.
--
Sprinkle some arm_isb() to force execution of the mcrr instructions to get
more accurate values. (Given that the generic timer is usually running at
a 64th or less of the cpu clock, this only settle to a tick or so.)
--
Move isb's to before reading count. Change interrupt to level.
--
Trailing whitespace.
--
Whitespace
 1.8.2.1 11-Mar-2015  snj Pull up following revision(s) (requested by skrll in ticket #582):
distrib/utils/embedded/conf/rpi.conf: revision 1.27
etc/etc.evbarm/Makefile.inc: revision 1.70
sys/arch/arm/broadcom/bcm2835_intr.c: revision 1.5-1.7
sys/arch/arm/broadcom/bcm2835_obio.c: revision 1.23, 1.24
sys/arch/arm/broadcom/bcm2835_space.c: revision 1.8
sys/arch/arm/broadcom/bcm2835reg.h: revision 1.14
sys/arch/arm/broadcom/bcm2835var.h: revision 1.2
sys/arch/arm/broadcom/files.bcm2835: revision 1.24
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.30
sys/arch/arm/cortex/armperiph.c: revision 1.8, 1.9
sys/arch/arm/cortex/gtmr.c: revision 1.9
sys/arch/arm/cortex/gtmr_var.h: revision 1.5
sys/arch/arm/cortex/mpcore_var.h: revision 1.3
sys/arch/arm/include/cpu.h: revision 1.84
sys/arch/evbarm/conf/RPI2: revision 1.1, 1.2
sys/arch/evbarm/conf/RPI2_INSTALL: revision 1.1
sys/arch/evbarm/conf/RPI: revision 1.59, 1.60
sys/arch/evbarm/conf/mk.rpi: revision 1.4
sys/arch/evbarm/conf/std.rpi: revisions 1.16-1.19 via patch
sys/arch/evbarm/rpi/genassym.cf: revision 1.2
sys/arch/evbarm/rpi/rpi.h: revision 1.4
sys/arch/evbarm/rpi/rpi2_start.S: revision 1.1
sys/arch/evbarm/rpi/rpi_machdep.c: revision 1.57, 1.58 via patch
sys/arch/evbarm/rpi/rpi_start.S: revision 1.13
Move some options into std.rpi
--
Add __HAVE_MM_MD_CACHE_ALIASING
Pull up following revision(s) (requested by skrll in ticket #582):
Fix TPIDRPRW_IS_CURLWP builds.
--
A MULTIPROCESSOR kernel requires TPIDRPRW_IS_CURCPU.
--
Use TPIDRPRW_IS_CURLWP as it's a slight code reduction and performance
improvement.
Initial RPI2 support - it doesn't work yet. The generic timer gets messed
up somehow.
This commit changes the KVA layout of the RPI.
--
Make this compile where gtmr isn't used.
--
Spin up the non-boot CPUs, but don't allow cpu_boot_secondary_processors
to see them for now.
RPI2 nows works well with only the boot cpu.
--
Appease a KASSERT - will be remove when MULTIPROCESSOR RPI2 is fixed.
--
Add RPI2 to kernels build for both earmv[67].
Use the earmv6 built kernels to create an image that can be used on both
RPI and RPI2
--
Add an RPI2_INSTALL
 1.17.2.2 11-Sep-2017  snj Pull up following revision(s) (requested by jmcneill in ticket #271):
sys/arch/arm/cortex/gtmr.c: revision 1.20
gtmr_intr: If the ISTATUS bit is 0, timer condition is not met. In this
case, just return 0.
 1.17.2.1 21-Jun-2017  snj Pull up following revision(s) (requested by jmcneill in ticket #45):
sys/arch/arm/cortex/gtmr.c: revision 1.18
Interrupts are enabled before the timer is configured. Ensure that the
timer is disabled when attaching so it doesn't go crazy between the time
interrupts are enabled and clocks are initialized. My RPI3 makes it
multi-user now.
 1.23.2.8 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.23.2.7 20-Oct-2018  pgoyette Sync with head
 1.23.2.6 30-Sep-2018  pgoyette Ssync with HEAD
 1.23.2.5 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.23.2.4 28-Jul-2018  pgoyette Sync with HEAD
 1.23.2.3 25-Jun-2018  pgoyette Sync with HEAD
 1.23.2.2 21-May-2018  pgoyette Sync with HEAD
 1.23.2.1 07-Apr-2018  pgoyette Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
 1.31.2.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.31.2.1 10-Jun-2019  christos Sync with HEAD
 1.40.2.1 13-Aug-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #54):

sys/arch/aarch64/include/armreg.h: revision 1.26
sys/arch/arm/cortex/gtmr.c: revision 1.41
sys/arch/arm/include/armreg.h: revision 1.128
sys/arch/arm/cortex/gtmr_var.h: revision 1.12

Add support for physical timers and sprinkle isb where needed.
 1.42.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.49.10.1 02-Aug-2025  perseant Sync with HEAD
 1.1 16-Jun-2013  matt branches: 1.1.2; 1.1.8; 1.1.12;
Add generic timer support (untested)
 1.1.12.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.1.12.1 16-Jun-2013  yamt file gtmr_intr.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.8.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.1.8.1 16-Jun-2013  matt file gtmr_intr.h was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.1.2.2 23-Jun-2013  tls resync from head
 1.1.2.1 16-Jun-2013  tls file gtmr_intr.h was added on branch tls-maxphys on 2013-06-23 06:20:00 +0000
 1.16 19-Nov-2022  skrll G/C gtmr_init function declaration
 1.15 12-Nov-2021  jmcneill gtmr: Add support for arm,cpu-registers-not-fw-configured property.

On armv7, arm,cpu-registers-not-fw-configured means that firmware hasn't
bothered to configure any generic timer registers and we need to
initialize cntfrq ourselves.
 1.14 05-Mar-2020  riastradh Revert "Include opt_diagnostic.h for DIAGNOSTIC."

This did not do what I thought it did. opt_diagnostic.h is only for
the unused _DIAGNOSTIC, which seems like an abortive attempt to
incrementally convert DIAGNOSTIC to an opt_*.h option rather than a
command-line option.
 1.13 05-Mar-2020  riastradh Include opt_diagnostic.h for DIAGNOSTIC.

...at least, in header files, which may not have already included
libkern.h.
 1.12 12-Aug-2019  jmcneill Add support for physical timers and sprinkle isb where needed.
 1.11 16-Sep-2018  jmcneill branches: 1.11.4;
port-evbarm/53308: evbarm-earmv7hf performance regression under qemu

Revert gtmr.c r1.27 and apply a workaround for Allwinner A64 SoCs based
on analysis of the issue from LKML: https://lkml.org/lkml/2018/5/10/774

Since this bug is specific to the Allwinner A64 SoC, only apply the
workaround when the root ("/") node of the device tree is compatible
with "allwinner,sun50i-a64".
 1.10 14-May-2018  joerg branches: 1.10.2;
Remove unused gtmr_bootdelay.
 1.9 30-Nov-2017  skrll branches: 1.9.2;
When attaching gtmr at fdt use fdtbus_intr_establish to establish the
gtmr interrupt.
 1.8 09-Nov-2017  skrll Trailing whitespace
 1.7 24-Aug-2017  jmcneill Add __HAVE_GENERIC_CPU_INITCLOCKS option. If set, don't export
cpu_initclocks from device drivers as common code (in this case FDT) will
provide its own copy.
 1.6 02-Apr-2015  matt #include <sys/percpu.h>
 1.5 28-Feb-2015  skrll Initial RPI2 support - it doesn't work yet. The generic timer gets messed
up somehow.

This commit changes the KVA layout of the RPI.
 1.4 28-Mar-2014  matt branches: 1.4.4; 1.4.6; 1.4.8;
Add gtmr_bootdelay. rename clockhandler to gtmr_intr
 1.3 12-Sep-2013  matt branches: 1.3.2;
Cleanup some diagnostic code.
 1.2 20-Jun-2013  matt branches: 1.2.2; 1.2.4;
Pass the offset from CBAR/PERIPHBASE in mpcore_attach_args.
Modify the list of devices to include the offset(s) from PERIPHBASE.
 1.1 16-Jun-2013  matt Add generic timer support (untested)
 1.2.4.1 18-May-2014  rmind sync with head
 1.2.2.4 03-Dec-2017  jdolecek update from HEAD
 1.2.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 20-Jun-2013  tls file gtmr_var.h was added on branch tls-maxphys on 2013-06-23 06:20:00 +0000
 1.3.2.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.3.2.1 12-Sep-2013  matt file gtmr_var.h was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.4.8.2 28-Aug-2017  skrll Sync with HEAD
 1.4.8.1 06-Apr-2015  skrll Sync with HEAD
 1.4.6.1 11-Mar-2015  snj Pull up following revision(s) (requested by skrll in ticket #582):
distrib/utils/embedded/conf/rpi.conf: revision 1.27
etc/etc.evbarm/Makefile.inc: revision 1.70
sys/arch/arm/broadcom/bcm2835_intr.c: revision 1.5-1.7
sys/arch/arm/broadcom/bcm2835_obio.c: revision 1.23, 1.24
sys/arch/arm/broadcom/bcm2835_space.c: revision 1.8
sys/arch/arm/broadcom/bcm2835reg.h: revision 1.14
sys/arch/arm/broadcom/bcm2835var.h: revision 1.2
sys/arch/arm/broadcom/files.bcm2835: revision 1.24
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.30
sys/arch/arm/cortex/armperiph.c: revision 1.8, 1.9
sys/arch/arm/cortex/gtmr.c: revision 1.9
sys/arch/arm/cortex/gtmr_var.h: revision 1.5
sys/arch/arm/cortex/mpcore_var.h: revision 1.3
sys/arch/arm/include/cpu.h: revision 1.84
sys/arch/evbarm/conf/RPI2: revision 1.1, 1.2
sys/arch/evbarm/conf/RPI2_INSTALL: revision 1.1
sys/arch/evbarm/conf/RPI: revision 1.59, 1.60
sys/arch/evbarm/conf/mk.rpi: revision 1.4
sys/arch/evbarm/conf/std.rpi: revisions 1.16-1.19 via patch
sys/arch/evbarm/rpi/genassym.cf: revision 1.2
sys/arch/evbarm/rpi/rpi.h: revision 1.4
sys/arch/evbarm/rpi/rpi2_start.S: revision 1.1
sys/arch/evbarm/rpi/rpi_machdep.c: revision 1.57, 1.58 via patch
sys/arch/evbarm/rpi/rpi_start.S: revision 1.13
Move some options into std.rpi
--
Add __HAVE_MM_MD_CACHE_ALIASING
Pull up following revision(s) (requested by skrll in ticket #582):
Fix TPIDRPRW_IS_CURLWP builds.
--
A MULTIPROCESSOR kernel requires TPIDRPRW_IS_CURCPU.
--
Use TPIDRPRW_IS_CURLWP as it's a slight code reduction and performance
improvement.
Initial RPI2 support - it doesn't work yet. The generic timer gets messed
up somehow.
This commit changes the KVA layout of the RPI.
--
Make this compile where gtmr isn't used.
--
Spin up the non-boot CPUs, but don't allow cpu_boot_secondary_processors
to see them for now.
RPI2 nows works well with only the boot cpu.
--
Appease a KASSERT - will be remove when MULTIPROCESSOR RPI2 is fixed.
--
Add RPI2 to kernels build for both earmv[67].
Use the earmv6 built kernels to create an image that can be used on both
RPI and RPI2
--
Add an RPI2_INSTALL
 1.4.4.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.4.4.1 28-Mar-2014  yamt file gtmr_var.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.9.2.2 30-Sep-2018  pgoyette Ssync with HEAD
 1.9.2.1 21-May-2018  pgoyette Sync with HEAD
 1.10.2.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.10.2.1 10-Jun-2019  christos Sync with HEAD
 1.11.4.1 13-Aug-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #54):

sys/arch/aarch64/include/armreg.h: revision 1.26
sys/arch/arm/cortex/gtmr.c: revision 1.41
sys/arch/arm/include/armreg.h: revision 1.128
sys/arch/arm/cortex/gtmr_var.h: revision 1.12

Add support for physical timers and sprinkle isb where needed.
 1.3 28-Feb-2015  skrll Initial RPI2 support - it doesn't work yet. The generic timer gets messed
up somehow.

This commit changes the KVA layout of the RPI.
 1.2 20-Jun-2013  matt branches: 1.2.6; 1.2.10; 1.2.12;
Pass the offset from CBAR/PERIPHBASE in mpcore_attach_args.
Modify the list of devices to include the offset(s) from PERIPHBASE.
 1.1 01-Sep-2012  matt branches: 1.1.2; 1.1.4; 1.1.6;
Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.1.6.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.1.6.1 01-Sep-2012  matt file mpcore_var.h was added on branch matt-nb6-plus on 2012-11-28 22:40:27 +0000
 1.1.4.3 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.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 01-Sep-2012  yamt file mpcore_var.h was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.1.2.2 03-Dec-2017  jdolecek update from HEAD
 1.1.2.1 23-Jun-2013  tls resync from head
 1.2.12.1 06-Apr-2015  skrll Sync with HEAD
 1.2.10.1 11-Mar-2015  snj Pull up following revision(s) (requested by skrll in ticket #582):
distrib/utils/embedded/conf/rpi.conf: revision 1.27
etc/etc.evbarm/Makefile.inc: revision 1.70
sys/arch/arm/broadcom/bcm2835_intr.c: revision 1.5-1.7
sys/arch/arm/broadcom/bcm2835_obio.c: revision 1.23, 1.24
sys/arch/arm/broadcom/bcm2835_space.c: revision 1.8
sys/arch/arm/broadcom/bcm2835reg.h: revision 1.14
sys/arch/arm/broadcom/bcm2835var.h: revision 1.2
sys/arch/arm/broadcom/files.bcm2835: revision 1.24
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.30
sys/arch/arm/cortex/armperiph.c: revision 1.8, 1.9
sys/arch/arm/cortex/gtmr.c: revision 1.9
sys/arch/arm/cortex/gtmr_var.h: revision 1.5
sys/arch/arm/cortex/mpcore_var.h: revision 1.3
sys/arch/arm/include/cpu.h: revision 1.84
sys/arch/evbarm/conf/RPI2: revision 1.1, 1.2
sys/arch/evbarm/conf/RPI2_INSTALL: revision 1.1
sys/arch/evbarm/conf/RPI: revision 1.59, 1.60
sys/arch/evbarm/conf/mk.rpi: revision 1.4
sys/arch/evbarm/conf/std.rpi: revisions 1.16-1.19 via patch
sys/arch/evbarm/rpi/genassym.cf: revision 1.2
sys/arch/evbarm/rpi/rpi.h: revision 1.4
sys/arch/evbarm/rpi/rpi2_start.S: revision 1.1
sys/arch/evbarm/rpi/rpi_machdep.c: revision 1.57, 1.58 via patch
sys/arch/evbarm/rpi/rpi_start.S: revision 1.13
Move some options into std.rpi
--
Add __HAVE_MM_MD_CACHE_ALIASING
Pull up following revision(s) (requested by skrll in ticket #582):
Fix TPIDRPRW_IS_CURLWP builds.
--
A MULTIPROCESSOR kernel requires TPIDRPRW_IS_CURCPU.
--
Use TPIDRPRW_IS_CURLWP as it's a slight code reduction and performance
improvement.
Initial RPI2 support - it doesn't work yet. The generic timer gets messed
up somehow.
This commit changes the KVA layout of the RPI.
--
Make this compile where gtmr isn't used.
--
Spin up the non-boot CPUs, but don't allow cpu_boot_secondary_processors
to see them for now.
RPI2 nows works well with only the boot cpu.
--
Appease a KASSERT - will be remove when MULTIPROCESSOR RPI2 is fixed.
--
Add RPI2 to kernels build for both earmv[67].
Use the earmv6 built kernels to create an image that can be used on both
RPI and RPI2
--
Add an RPI2_INSTALL
 1.2.6.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.2.6.1 20-Jun-2013  matt file mpcore_var.h was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.20 02-Oct-2021  skrll Trailing whitespace
 1.19 19-Jan-2019  jmcneill Remove hard requirement for "offset" property on Cortex-A5. This is not required w/ FDT.
 1.18 20-Jun-2018  hkenken branches: 1.18.2;
Add l2cc support.
 1.17 27-Feb-2015  jmcneill branches: 1.17.16;
allow arml2cc to be used on Cortex-A5 if the "offset" property is specified
 1.16 01-Dec-2014  matt clean the a9 l2 cache before turning it on.
 1.15 16-Apr-2014  matt branches: 1.15.2; 1.15.4;
Allow l2cc base to gotten from device properties.
 1.14 20-Mar-2014  matt branches: 1.14.2;
pl310 cache is PIPT
 1.13 23-Feb-2014  matt #include <arm/locore.h>
 1.12 17-Jun-2013  matt branches: 1.12.2; 1.12.6;
KASSERT -> KASSERTMSG
 1.11 13-Feb-2013  matt simplify cache range op
 1.10 22-Jan-2013  matt Don't "sync" atomic ops.
Do sync after each range op.
 1.9 28-Nov-2012  matt Make these compile with gcc4.1 and binutils 2.16
 1.8 01-Nov-2012  matt branches: 1.8.2;
Invalidate the L2 cache before enabling it.
 1.7 17-Oct-2012  matt branches: 1.7.2;
Add a missing mutex exit.
 1.6 22-Sep-2012  matt Don't use an asm in pmap_activate to update the TTBR, use cpu_setttb instead
but add a second argument to it to indicate whether the TLB/caches need to be
flushed. Default cortex to pmap_needs_fixup = 1. But check the MMFR3 field
to see if the fixed can be skipped.
Use a cf_flag bit 0 to indicate whether the A9 L2 cache should disable (bit 0 = 1)
or enabeld (bit = 0).

With these changes, the A9 MMU can use traverse caches to do MMU tablewalks
Also, make sure all memory has the shareable bit for the A9.
 1.5 14-Sep-2012  matt Add L2 cache flush routines. (not yet enabled).
 1.4 07-Sep-2012  matt branches: 1.4.2;
Don't disable the L2C is it isn't enabled.
 1.3 07-Sep-2012  matt Switch cortex_a9 back to need_ptesync = 1
Add code to disable the L2 cache on cortex-a9 (for now).
Add evcnt for all the fault types.
Move cache info in a structure and have one for the pcache and one for scache.
Probe L1/L2 caches properly for ARMv7
 1.2 02-Sep-2012  matt Add "write-back" before Unified
 1.1 02-Sep-2012  matt Add driver to attach ARM PL210 L2 Cache Controller
arml2cc0 at armperiph0: ARM PL310 L2 r3p2 Cache Controller
arml2cc0: 256KB/32B 16-way L2 Unified cache
 1.4.2.5 03-Dec-2017  jdolecek update from HEAD
 1.4.2.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.2.3 23-Jun-2013  tls resync from head
 1.4.2.2 25-Feb-2013  tls resync with head
 1.4.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.7.2.5 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.7.2.4 23-Jan-2013  yamt sync with head
 1.7.2.3 16-Jan-2013  yamt sync with (a bit old) head
 1.7.2.2 30-Oct-2012  yamt sync with head
 1.7.2.1 17-Oct-2012  yamt file pl310.c was added on branch yamt-pagecache on 2012-10-30 17:19:00 +0000
 1.8.2.3 07-Feb-2013  matt Sync with HEAD
 1.8.2.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.8.2.1 01-Nov-2012  matt file pl310.c was added on branch matt-nb6-plus on 2012-11-28 22:40:27 +0000
 1.12.6.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.12.6.1 17-Jun-2013  matt file pl310.c was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.12.2.1 18-May-2014  rmind sync with head
 1.14.2.1 10-Aug-2014  tls Rebase.
 1.15.4.1 06-Apr-2015  skrll Sync with HEAD
 1.15.2.1 21-Mar-2015  snj Pull up following revision(s) (requested by jmcneill in ticket #598):
sys/arch/arm/amlogic/amlogic_board.c: up to revision 1.9
sys/arch/arm/amlogic/amlogic_canvasreg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_com.c: up to revision 1.4
sys/arch/arm/amlogic/amlogic_comreg.h: up to revision 1.3
sys/arch/arm/amlogic/amlogic_comvar.h: revision 1.1
sys/arch/arm/amlogic/amlogic_cpufreq.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_crureg.h: up to revision 1.7
sys/arch/arm/amlogic/amlogic_dwctwo.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_genfb.c: revision 1.1
sys/arch/arm/amlogic/amlogic_gmac.c: up to revision 1.2
sys/arch/arm/amlogic/amlogic_hdmireg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_intr.h: up to revision 1.5
sys/arch/arm/amlogic/amlogic_io.c: up to revision 1.7
sys/arch/arm/amlogic/amlogic_reg.h: up to revision 1.9
sys/arch/arm/amlogic/amlogic_rng.c: revision 1.1
sys/arch/arm/amlogic/amlogic_sdhc.c: up to revision 1.3
sys/arch/arm/amlogic/amlogic_sdhcreg.h: revision 1.1
sys/arch/arm/amlogic/amlogic_space.c: revision 1.1
sys/arch/arm/amlogic/amlogic_var.h: up to revision 1.8
sys/arch/arm/amlogic/amlogic_vpureg.h: revision 1.1
sys/arch/arm/arm/bootconfig.c: revisions 1.7-1.8
sys/arch/arm/conf/files.arm: revision 1.129
sys/arch/arm/cortex/pl310.c: revisions 1.16-1.17
sys/arch/arm/cortex/a9_mpsubr.S: revisions 1.25-1.29
sys/arch/arm/cortex/a9tmr.c: revisions 1.8-1.12
sys/arch/arm/cortex/a9tmr_var.h: revision 1.4
sys/arch/arm/cortex/a9wdt.c: revisions 1.3-1.4
sys/arch/arm/cortex/armperiph.c: revisions 1.5-1.7
sys/arch/arm/arm/cpufunc.c: revision 1.151
sys/arch/arm/include/bootconfig.h: revision 1.7
sys/arch/arm/include/locore.h: revision 1.19
sys/arch/evbarm/amlogic/amlogic_machdep.c: up to revision 1.17
sys/arch/evbarm/amlogic/amlogic_start.S: up to revision 1.2
sys/arch/evbarm/amlogic/genassym.cf: revision 1.1
sys/arch/evbarm/amlogic/platform.h: revision 1.1
sys/arch/evbarm/conf/files.amlogic: up to revision 1.8
sys/arch/evbarm/conf/std.amlogic: up to revision 1.2
sys/arch/evbarm/conf/mk.amlogic: revision 1.1
sys/arch/evbarm/conf/ODROID-C1: up to revision 1.12
sys/arch/evarm/conf/ODROID-C1_INSTALL: revision 1.1
Don't use not as a variable since it's reserved in C++.
--
clean the a9 l2 cache before turning it on.
--
Add Cortex-A17 support
--
Fix CORTEXA17 support
--
Let the "cbar" device property override the cbar value, to work around
broken bootloaders
--
add a helper to update a9tmr frequency
--
detach and re-attach timecounter when updating freq, and reinit timer on
each cpu
--
fix typo
--
add BOOTOPT_TYPE_MACADDR for parsing mac address parameters
--
make sure we set ACTLR.SMP=1 for CPU_CORTEXA5 in !MP case, ok matt@
--
According to the Cortex-A5 TRM, the CBAR register is not implemented and
always reads as 0x00000000. Add ARM_CBAR option to set this in kernel
config.
--
skip a TLBIALL on Cortex-A5 that stops my odroid-c1 from booting, ok matt
--
match on Cortex-A5
--
match on Cortex-A5
--
allow arml2cc to be used on Cortex-A5 if the "offset" property is specified
--
print "A5" instead of "A9" at attach time if running on a Cortex-A5
--
Improve inline asm around dsb/dmb/isb:
- always use volatile and mark them as memory barrier
- use the common version from locore.h in all places not included from
userland
--
Work-in-progress Odroid-C1 support.
--
no need to override ARM_CBAR, remove unused COM_16750 option
--
Add basic serial console support.
--
add dwctwo and usb devices
--
ODROID-C1 SMP support.
--
auto-detect RAM size
--
ODROID-C1 onboard ethernet support.
--
add amlogicrng, add commented-out genfb placeholder
--
enable amlogicsdhc
--
add ODROID-C1 install kernel
--
Add CPUFREQ option to set boot CPU frequency. ODROID-C1 is advertised
as quad-core 1.5GHz but boots up at 1.2GHz; add CPUFREQ=1512 to config
and make sure to set the correct speed before attaching CPUs.
The speed can still be scaled down with machdep.cpu sysctls.
--
disable DEBUG, LOCKDEBUG, VERBOSE_INIT_ARM
--
Basic framebuffer console support. Work in progress.
 1.17.16.2 26-Jan-2019  pgoyette Sync with HEAD
 1.17.16.1 25-Jun-2018  pgoyette Sync with HEAD
 1.18.2.1 10-Jun-2019  christos Sync with HEAD
 1.4 22-Mar-2014  reinoud Add constant for a reserved bit 31 for the L2C_AUXCTL register for use in
masks
 1.3 22-Mar-2014  reinoud Add defines for the PL310's L2C_PREFETCH_CTL and L2C_POWER_CTL registers as
per r3p2 spec.
 1.2 07-Sep-2012  matt branches: 1.2.2; 1.2.4; 1.2.6; 1.2.8; 1.2.16;
Switch cortex_a9 back to need_ptesync = 1
Add code to disable the L2 cache on cortex-a9 (for now).
Add evcnt for all the fault types.
Move cache info in a structure and have one for the pcache and one for scache.
Probe L1/L2 caches properly for ARMv7
 1.1 02-Sep-2012  matt Add driver to attach ARM PL210 L2 Cache Controller
arml2cc0 at armperiph0: ARM PL310 L2 r3p2 Cache Controller
arml2cc0: 256KB/32B 16-way L2 Unified cache
 1.2.16.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.2.16.1 07-Sep-2012  matt file pl310_reg.h was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.2.8.1 18-May-2014  rmind sync with head
 1.2.6.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.2.6.1 07-Sep-2012  matt file pl310_reg.h was added on branch matt-nb6-plus on 2012-11-28 22:40:27 +0000
 1.2.4.3 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.2.4.2 30-Oct-2012  yamt sync with head
 1.2.4.1 07-Sep-2012  yamt file pl310_reg.h was added on branch yamt-pagecache on 2012-10-30 17:19:01 +0000
 1.2.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1 07-Sep-2012  matt branches: 1.1.4; 1.1.6; 1.1.16;
Switch cortex_a9 back to need_ptesync = 1
Add code to disable the L2 cache on cortex-a9 (for now).
Add evcnt for all the fault types.
Move cache info in a structure and have one for the pcache and one for scache.
Probe L1/L2 caches properly for ARMv7
 1.1.16.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.1.16.1 07-Sep-2012  matt file pl310_var.h was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.1.6.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.1.6.1 07-Sep-2012  matt file pl310_var.h was added on branch matt-nb6-plus on 2012-11-28 22:40:27 +0000
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 07-Sep-2012  yamt file pl310_var.h was added on branch yamt-pagecache on 2012-10-30 17:19:01 +0000
 1.3 16-Dec-2018  skrll Move register definiton to header
 1.2 04-Oct-2016  kiyohara branches: 1.2.14; 1.2.16;
Add SCU_SIZE.
 1.1 01-Sep-2012  matt branches: 1.1.2; 1.1.4; 1.1.6; 1.1.16; 1.1.22; 1.1.26;
Add Cortex-A9 support including the ARM Generic Interrupt Controller
and the A9 Global Timer / Watchdog.
 1.1.26.1 04-Nov-2016  pgoyette Sync with HEAD
 1.1.22.1 05-Dec-2016  skrll Sync with HEAD
 1.1.16.2 15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.1.16.1 01-Sep-2012  matt file scu_reg.h was added on branch matt-nb5-mips64 on 2014-02-15 16:18:36 +0000
 1.1.6.2 28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.1.6.1 01-Sep-2012  matt file scu_reg.h was added on branch matt-nb6-plus on 2012-11-28 22:40:27 +0000
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 01-Sep-2012  yamt file scu_reg.h was added on branch yamt-pagecache on 2012-10-30 17:19:01 +0000
 1.1.2.1 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 10-Jun-2019  christos Sync with HEAD
 1.2.14.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts

RSS XML Feed