History log of /netbsd-current/sys/arch/arm/conf/files.arm
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.168 20-Apr-2023 skrll

Provide a shared pmap_devmap implementation and convert all pmap_devmap
arrays to use DEVMAP_ENTRY{,_END}


Revision tags: netbsd-10-base
# 1.167 28-Oct-2022 skrll

MI PMAP EFI_RUNTIME support


Revision tags: bouyer-sunxi-drm-base
# 1.166 02-Apr-2022 skrll

Update to support EFI runtime outside the kernel virtual address space
by creating an EFI RT pmap that can be activated / deactivated when
required.

Adds support for EFI RT to ARM_MMU_EXTENDED (ASID) 32-bit Arm machines.

On Arm64 the usage of pmapboot_enter is reduced and the mappings are
created much later in the boot process -- now in cpu_startup_hook.
Backward compatiblity for KVA mapped RT from old bootaa64.efi is
maintained.

Adding support to other platforms should be easier as a result.


Revision tags: thorpej-i2c-spi-conf2-base
# 1.165 06-Aug-2021 jmcneill

Arm: Add support for SMC Calling Convention

Arm DEN0028 defines a calling mechanism used with Secure Monitor Call (SMC)
and Hypervisor Call (HVC) instructions. To discover SMCCC, we must:

1) Find the PSCI conduit (either via ACPI FADT, or Device Tree)
2) Use PSCI_VERSION to determine whether PSCI_FEATURES is supported
3) Call PSCI_FEATURES with SMCCC_VERSION to determine the implementation
version.


Revision tags: thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
# 1.164 21-Oct-2020 christos

make process_machdep.c included always since it provides register i/o used by
sys_process_getlwpstatus.c which is always included.


# 1.163 20-Oct-2020 christos

harmonize process_machdep.c inclusion.


# 1.162 29-Sep-2020 jmcneill

Collapse all CPU_CORTEXA<n> options into CPU_CORTEX and do runtime
detection instead of ifdefs where required.


# 1.161 02-Aug-2020 maxv

Add support for Privileged Access Never (ARMv8.1-PAN).

PAN provides the same functionality as SMAP on x86: it forbids kernel
access to userland pages when PSTATE.PAN=1, and allows such accesses when
PSTATE.PAN=0.

We clear SCTLR_SPAN, to guarantee that PAN=1 each time the kernel is
entered. We catch PAN faults and panic right away without further
processing. In copyin, copyout, etc, we temporarily authorize access to
userland pages.

PAN is a very useful exploit mitigation. Reviewed by ryo@, thanks. Tested
on Qemu. Enabled by default.


# 1.160 27-Jul-2020 riastradh

Enable ChaCha NEON code on armv7 too.

The 4-blocks-at-a-time assembly helper is disabled for now; adapting
it to armv7 is going to be a little annoying with only 16 128-bit
vector registers.

(Should also do a fifth block in the integer registers for 320 bytes
at a time.)


# 1.159 27-Jul-2020 riastradh

Fix outdated comment.


# 1.158 29-Jun-2020 riastradh

New permutation-based AES implementation using ARM NEON.

Also derived from Mike Hamburg's public-domain vpaes code.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
# 1.157 18-Apr-2020 skrll

PMAP_DEBUG has been deleted on arm


# 1.156 13-Apr-2020 maxv

Add KASAN-DMA support on aarch64, same as amd64. Discussed with skrll@.


# 1.155 13-Apr-2020 maxv

Add support for Branch Target Identification (BTI).

On the executable pages that have the GP (Guarded Page) bit, the semantic
of the "br" and "blr" instructions is changed: the CPU expects the first
instruction of the jump/call target to be "bti", and faults if it isn't.

We add the GP bit on the kernel .text pages (and incidentally the .rodata
pages, but we don't care). The compiler adds a "bti c" instruction at the
beginning of each C function. We modify the ENTRY() macros to manually add
"bti c" in the asm functions.

cpuswitch.S needs a specific change: with "br x27" the CPU expects "bti j",
which is bad because the functions begin with "bti c"; switch to "br x16",
for the CPU to accept "bti c".

BTI helps defend against JOP/COP. Tested on Qemu.


# 1.154 12-Apr-2020 maxv

Add support for Pointer Authentication (PAC).

We use the "pac-ret" option, to sign the return instruction pointer on
function entry, and authenticate it on function exit. This acts as a
mitigation against ROP.

The authentication uses a per-lwp (secret) I-A key stored in the 128bit
APIAKey register and part of the lwp context. During lwp creation, the
kernel generates a random key, and during context switches, it installs
the key of the target lwp on the CPU.

Userland cannot read the APIAKey register directly. However, it can sign
its pointers with it, because the register is architecturally shared
between userland and the kernel. Although part of the CPU design, it is
a bit of an undesired behavior, because it allows to forge valid kernel
pointers from userland. To avoid that, we don't share the key with
userland, and rather switch it in EL0<->EL1 transitions. This means that
when userland executes, a different key is loaded in APIAKey than the one
the kernel uses. For now the userland key is a fixed 128bit zero value.

The DDB stack unwinder is changed to strip the authentication code from
the pointers in lr.

Two problems are known:

* Currently the idlelwps' keys are not really secret. This is because
the RNG is not yet available when we spawn these lwps. Not overly
important, but would be nice to fix with UEFI RNG.
* The key switching in EL0<->EL1 transitions is not the most optimized
code on the planet. Instead of checking aarch64_pac_enabled, it would
be better to hot-patch the code at boot time, but there currently is
no hot-patch support on aarch64.

Tested on Qemu.


Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
# 1.153 15-Feb-2020 skrll

branches: 1.153.4;
Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.167 28-Oct-2022 skrll

MI PMAP EFI_RUNTIME support


Revision tags: bouyer-sunxi-drm-base
# 1.166 02-Apr-2022 skrll

Update to support EFI runtime outside the kernel virtual address space
by creating an EFI RT pmap that can be activated / deactivated when
required.

Adds support for EFI RT to ARM_MMU_EXTENDED (ASID) 32-bit Arm machines.

On Arm64 the usage of pmapboot_enter is reduced and the mappings are
created much later in the boot process -- now in cpu_startup_hook.
Backward compatiblity for KVA mapped RT from old bootaa64.efi is
maintained.

Adding support to other platforms should be easier as a result.


Revision tags: thorpej-i2c-spi-conf2-base
# 1.165 06-Aug-2021 jmcneill

Arm: Add support for SMC Calling Convention

Arm DEN0028 defines a calling mechanism used with Secure Monitor Call (SMC)
and Hypervisor Call (HVC) instructions. To discover SMCCC, we must:

1) Find the PSCI conduit (either via ACPI FADT, or Device Tree)
2) Use PSCI_VERSION to determine whether PSCI_FEATURES is supported
3) Call PSCI_FEATURES with SMCCC_VERSION to determine the implementation
version.


Revision tags: thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
# 1.164 21-Oct-2020 christos

make process_machdep.c included always since it provides register i/o used by
sys_process_getlwpstatus.c which is always included.


# 1.163 20-Oct-2020 christos

harmonize process_machdep.c inclusion.


# 1.162 29-Sep-2020 jmcneill

Collapse all CPU_CORTEXA<n> options into CPU_CORTEX and do runtime
detection instead of ifdefs where required.


# 1.161 02-Aug-2020 maxv

Add support for Privileged Access Never (ARMv8.1-PAN).

PAN provides the same functionality as SMAP on x86: it forbids kernel
access to userland pages when PSTATE.PAN=1, and allows such accesses when
PSTATE.PAN=0.

We clear SCTLR_SPAN, to guarantee that PAN=1 each time the kernel is
entered. We catch PAN faults and panic right away without further
processing. In copyin, copyout, etc, we temporarily authorize access to
userland pages.

PAN is a very useful exploit mitigation. Reviewed by ryo@, thanks. Tested
on Qemu. Enabled by default.


# 1.160 27-Jul-2020 riastradh

Enable ChaCha NEON code on armv7 too.

The 4-blocks-at-a-time assembly helper is disabled for now; adapting
it to armv7 is going to be a little annoying with only 16 128-bit
vector registers.

(Should also do a fifth block in the integer registers for 320 bytes
at a time.)


# 1.159 27-Jul-2020 riastradh

Fix outdated comment.


# 1.158 29-Jun-2020 riastradh

New permutation-based AES implementation using ARM NEON.

Also derived from Mike Hamburg's public-domain vpaes code.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
# 1.157 18-Apr-2020 skrll

PMAP_DEBUG has been deleted on arm


# 1.156 13-Apr-2020 maxv

Add KASAN-DMA support on aarch64, same as amd64. Discussed with skrll@.


# 1.155 13-Apr-2020 maxv

Add support for Branch Target Identification (BTI).

On the executable pages that have the GP (Guarded Page) bit, the semantic
of the "br" and "blr" instructions is changed: the CPU expects the first
instruction of the jump/call target to be "bti", and faults if it isn't.

We add the GP bit on the kernel .text pages (and incidentally the .rodata
pages, but we don't care). The compiler adds a "bti c" instruction at the
beginning of each C function. We modify the ENTRY() macros to manually add
"bti c" in the asm functions.

cpuswitch.S needs a specific change: with "br x27" the CPU expects "bti j",
which is bad because the functions begin with "bti c"; switch to "br x16",
for the CPU to accept "bti c".

BTI helps defend against JOP/COP. Tested on Qemu.


# 1.154 12-Apr-2020 maxv

Add support for Pointer Authentication (PAC).

We use the "pac-ret" option, to sign the return instruction pointer on
function entry, and authenticate it on function exit. This acts as a
mitigation against ROP.

The authentication uses a per-lwp (secret) I-A key stored in the 128bit
APIAKey register and part of the lwp context. During lwp creation, the
kernel generates a random key, and during context switches, it installs
the key of the target lwp on the CPU.

Userland cannot read the APIAKey register directly. However, it can sign
its pointers with it, because the register is architecturally shared
between userland and the kernel. Although part of the CPU design, it is
a bit of an undesired behavior, because it allows to forge valid kernel
pointers from userland. To avoid that, we don't share the key with
userland, and rather switch it in EL0<->EL1 transitions. This means that
when userland executes, a different key is loaded in APIAKey than the one
the kernel uses. For now the userland key is a fixed 128bit zero value.

The DDB stack unwinder is changed to strip the authentication code from
the pointers in lr.

Two problems are known:

* Currently the idlelwps' keys are not really secret. This is because
the RNG is not yet available when we spawn these lwps. Not overly
important, but would be nice to fix with UEFI RNG.
* The key switching in EL0<->EL1 transitions is not the most optimized
code on the planet. Instead of checking aarch64_pac_enabled, it would
be better to hot-patch the code at boot time, but there currently is
no hot-patch support on aarch64.

Tested on Qemu.


Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
# 1.153 15-Feb-2020 skrll

branches: 1.153.4;
Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.166 02-Apr-2022 skrll

Update to support EFI runtime outside the kernel virtual address space
by creating an EFI RT pmap that can be activated / deactivated when
required.

Adds support for EFI RT to ARM_MMU_EXTENDED (ASID) 32-bit Arm machines.

On Arm64 the usage of pmapboot_enter is reduced and the mappings are
created much later in the boot process -- now in cpu_startup_hook.
Backward compatiblity for KVA mapped RT from old bootaa64.efi is
maintained.

Adding support to other platforms should be easier as a result.


Revision tags: thorpej-i2c-spi-conf2-base
# 1.165 06-Aug-2021 jmcneill

Arm: Add support for SMC Calling Convention

Arm DEN0028 defines a calling mechanism used with Secure Monitor Call (SMC)
and Hypervisor Call (HVC) instructions. To discover SMCCC, we must:

1) Find the PSCI conduit (either via ACPI FADT, or Device Tree)
2) Use PSCI_VERSION to determine whether PSCI_FEATURES is supported
3) Call PSCI_FEATURES with SMCCC_VERSION to determine the implementation
version.


Revision tags: thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
# 1.164 21-Oct-2020 christos

make process_machdep.c included always since it provides register i/o used by
sys_process_getlwpstatus.c which is always included.


# 1.163 20-Oct-2020 christos

harmonize process_machdep.c inclusion.


# 1.162 29-Sep-2020 jmcneill

Collapse all CPU_CORTEXA<n> options into CPU_CORTEX and do runtime
detection instead of ifdefs where required.


# 1.161 02-Aug-2020 maxv

Add support for Privileged Access Never (ARMv8.1-PAN).

PAN provides the same functionality as SMAP on x86: it forbids kernel
access to userland pages when PSTATE.PAN=1, and allows such accesses when
PSTATE.PAN=0.

We clear SCTLR_SPAN, to guarantee that PAN=1 each time the kernel is
entered. We catch PAN faults and panic right away without further
processing. In copyin, copyout, etc, we temporarily authorize access to
userland pages.

PAN is a very useful exploit mitigation. Reviewed by ryo@, thanks. Tested
on Qemu. Enabled by default.


# 1.160 27-Jul-2020 riastradh

Enable ChaCha NEON code on armv7 too.

The 4-blocks-at-a-time assembly helper is disabled for now; adapting
it to armv7 is going to be a little annoying with only 16 128-bit
vector registers.

(Should also do a fifth block in the integer registers for 320 bytes
at a time.)


# 1.159 27-Jul-2020 riastradh

Fix outdated comment.


# 1.158 29-Jun-2020 riastradh

New permutation-based AES implementation using ARM NEON.

Also derived from Mike Hamburg's public-domain vpaes code.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
# 1.157 18-Apr-2020 skrll

PMAP_DEBUG has been deleted on arm


# 1.156 13-Apr-2020 maxv

Add KASAN-DMA support on aarch64, same as amd64. Discussed with skrll@.


# 1.155 13-Apr-2020 maxv

Add support for Branch Target Identification (BTI).

On the executable pages that have the GP (Guarded Page) bit, the semantic
of the "br" and "blr" instructions is changed: the CPU expects the first
instruction of the jump/call target to be "bti", and faults if it isn't.

We add the GP bit on the kernel .text pages (and incidentally the .rodata
pages, but we don't care). The compiler adds a "bti c" instruction at the
beginning of each C function. We modify the ENTRY() macros to manually add
"bti c" in the asm functions.

cpuswitch.S needs a specific change: with "br x27" the CPU expects "bti j",
which is bad because the functions begin with "bti c"; switch to "br x16",
for the CPU to accept "bti c".

BTI helps defend against JOP/COP. Tested on Qemu.


# 1.154 12-Apr-2020 maxv

Add support for Pointer Authentication (PAC).

We use the "pac-ret" option, to sign the return instruction pointer on
function entry, and authenticate it on function exit. This acts as a
mitigation against ROP.

The authentication uses a per-lwp (secret) I-A key stored in the 128bit
APIAKey register and part of the lwp context. During lwp creation, the
kernel generates a random key, and during context switches, it installs
the key of the target lwp on the CPU.

Userland cannot read the APIAKey register directly. However, it can sign
its pointers with it, because the register is architecturally shared
between userland and the kernel. Although part of the CPU design, it is
a bit of an undesired behavior, because it allows to forge valid kernel
pointers from userland. To avoid that, we don't share the key with
userland, and rather switch it in EL0<->EL1 transitions. This means that
when userland executes, a different key is loaded in APIAKey than the one
the kernel uses. For now the userland key is a fixed 128bit zero value.

The DDB stack unwinder is changed to strip the authentication code from
the pointers in lr.

Two problems are known:

* Currently the idlelwps' keys are not really secret. This is because
the RNG is not yet available when we spawn these lwps. Not overly
important, but would be nice to fix with UEFI RNG.
* The key switching in EL0<->EL1 transitions is not the most optimized
code on the planet. Instead of checking aarch64_pac_enabled, it would
be better to hot-patch the code at boot time, but there currently is
no hot-patch support on aarch64.

Tested on Qemu.


Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
# 1.153 15-Feb-2020 skrll

branches: 1.153.4;
Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.165 06-Aug-2021 jmcneill

Arm: Add support for SMC Calling Convention

Arm DEN0028 defines a calling mechanism used with Secure Monitor Call (SMC)
and Hypervisor Call (HVC) instructions. To discover SMCCC, we must:

1) Find the PSCI conduit (either via ACPI FADT, or Device Tree)
2) Use PSCI_VERSION to determine whether PSCI_FEATURES is supported
3) Call PSCI_FEATURES with SMCCC_VERSION to determine the implementation
version.


Revision tags: thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
# 1.164 21-Oct-2020 christos

make process_machdep.c included always since it provides register i/o used by
sys_process_getlwpstatus.c which is always included.


# 1.163 20-Oct-2020 christos

harmonize process_machdep.c inclusion.


# 1.162 29-Sep-2020 jmcneill

Collapse all CPU_CORTEXA<n> options into CPU_CORTEX and do runtime
detection instead of ifdefs where required.


# 1.161 02-Aug-2020 maxv

Add support for Privileged Access Never (ARMv8.1-PAN).

PAN provides the same functionality as SMAP on x86: it forbids kernel
access to userland pages when PSTATE.PAN=1, and allows such accesses when
PSTATE.PAN=0.

We clear SCTLR_SPAN, to guarantee that PAN=1 each time the kernel is
entered. We catch PAN faults and panic right away without further
processing. In copyin, copyout, etc, we temporarily authorize access to
userland pages.

PAN is a very useful exploit mitigation. Reviewed by ryo@, thanks. Tested
on Qemu. Enabled by default.


# 1.160 27-Jul-2020 riastradh

Enable ChaCha NEON code on armv7 too.

The 4-blocks-at-a-time assembly helper is disabled for now; adapting
it to armv7 is going to be a little annoying with only 16 128-bit
vector registers.

(Should also do a fifth block in the integer registers for 320 bytes
at a time.)


# 1.159 27-Jul-2020 riastradh

Fix outdated comment.


# 1.158 29-Jun-2020 riastradh

New permutation-based AES implementation using ARM NEON.

Also derived from Mike Hamburg's public-domain vpaes code.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
# 1.157 18-Apr-2020 skrll

PMAP_DEBUG has been deleted on arm


# 1.156 13-Apr-2020 maxv

Add KASAN-DMA support on aarch64, same as amd64. Discussed with skrll@.


# 1.155 13-Apr-2020 maxv

Add support for Branch Target Identification (BTI).

On the executable pages that have the GP (Guarded Page) bit, the semantic
of the "br" and "blr" instructions is changed: the CPU expects the first
instruction of the jump/call target to be "bti", and faults if it isn't.

We add the GP bit on the kernel .text pages (and incidentally the .rodata
pages, but we don't care). The compiler adds a "bti c" instruction at the
beginning of each C function. We modify the ENTRY() macros to manually add
"bti c" in the asm functions.

cpuswitch.S needs a specific change: with "br x27" the CPU expects "bti j",
which is bad because the functions begin with "bti c"; switch to "br x16",
for the CPU to accept "bti c".

BTI helps defend against JOP/COP. Tested on Qemu.


# 1.154 12-Apr-2020 maxv

Add support for Pointer Authentication (PAC).

We use the "pac-ret" option, to sign the return instruction pointer on
function entry, and authenticate it on function exit. This acts as a
mitigation against ROP.

The authentication uses a per-lwp (secret) I-A key stored in the 128bit
APIAKey register and part of the lwp context. During lwp creation, the
kernel generates a random key, and during context switches, it installs
the key of the target lwp on the CPU.

Userland cannot read the APIAKey register directly. However, it can sign
its pointers with it, because the register is architecturally shared
between userland and the kernel. Although part of the CPU design, it is
a bit of an undesired behavior, because it allows to forge valid kernel
pointers from userland. To avoid that, we don't share the key with
userland, and rather switch it in EL0<->EL1 transitions. This means that
when userland executes, a different key is loaded in APIAKey than the one
the kernel uses. For now the userland key is a fixed 128bit zero value.

The DDB stack unwinder is changed to strip the authentication code from
the pointers in lr.

Two problems are known:

* Currently the idlelwps' keys are not really secret. This is because
the RNG is not yet available when we spawn these lwps. Not overly
important, but would be nice to fix with UEFI RNG.
* The key switching in EL0<->EL1 transitions is not the most optimized
code on the planet. Instead of checking aarch64_pac_enabled, it would
be better to hot-patch the code at boot time, but there currently is
no hot-patch support on aarch64.

Tested on Qemu.


Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
# 1.153 15-Feb-2020 skrll

branches: 1.153.4;
Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.164 21-Oct-2020 christos

make process_machdep.c included always since it provides register i/o used by
sys_process_getlwpstatus.c which is always included.


# 1.163 20-Oct-2020 christos

harmonize process_machdep.c inclusion.


# 1.162 29-Sep-2020 jmcneill

Collapse all CPU_CORTEXA<n> options into CPU_CORTEX and do runtime
detection instead of ifdefs where required.


# 1.161 02-Aug-2020 maxv

Add support for Privileged Access Never (ARMv8.1-PAN).

PAN provides the same functionality as SMAP on x86: it forbids kernel
access to userland pages when PSTATE.PAN=1, and allows such accesses when
PSTATE.PAN=0.

We clear SCTLR_SPAN, to guarantee that PAN=1 each time the kernel is
entered. We catch PAN faults and panic right away without further
processing. In copyin, copyout, etc, we temporarily authorize access to
userland pages.

PAN is a very useful exploit mitigation. Reviewed by ryo@, thanks. Tested
on Qemu. Enabled by default.


# 1.160 27-Jul-2020 riastradh

Enable ChaCha NEON code on armv7 too.

The 4-blocks-at-a-time assembly helper is disabled for now; adapting
it to armv7 is going to be a little annoying with only 16 128-bit
vector registers.

(Should also do a fifth block in the integer registers for 320 bytes
at a time.)


# 1.159 27-Jul-2020 riastradh

Fix outdated comment.


# 1.158 29-Jun-2020 riastradh

New permutation-based AES implementation using ARM NEON.

Also derived from Mike Hamburg's public-domain vpaes code.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
# 1.157 18-Apr-2020 skrll

PMAP_DEBUG has been deleted on arm


# 1.156 13-Apr-2020 maxv

Add KASAN-DMA support on aarch64, same as amd64. Discussed with skrll@.


# 1.155 13-Apr-2020 maxv

Add support for Branch Target Identification (BTI).

On the executable pages that have the GP (Guarded Page) bit, the semantic
of the "br" and "blr" instructions is changed: the CPU expects the first
instruction of the jump/call target to be "bti", and faults if it isn't.

We add the GP bit on the kernel .text pages (and incidentally the .rodata
pages, but we don't care). The compiler adds a "bti c" instruction at the
beginning of each C function. We modify the ENTRY() macros to manually add
"bti c" in the asm functions.

cpuswitch.S needs a specific change: with "br x27" the CPU expects "bti j",
which is bad because the functions begin with "bti c"; switch to "br x16",
for the CPU to accept "bti c".

BTI helps defend against JOP/COP. Tested on Qemu.


# 1.154 12-Apr-2020 maxv

Add support for Pointer Authentication (PAC).

We use the "pac-ret" option, to sign the return instruction pointer on
function entry, and authenticate it on function exit. This acts as a
mitigation against ROP.

The authentication uses a per-lwp (secret) I-A key stored in the 128bit
APIAKey register and part of the lwp context. During lwp creation, the
kernel generates a random key, and during context switches, it installs
the key of the target lwp on the CPU.

Userland cannot read the APIAKey register directly. However, it can sign
its pointers with it, because the register is architecturally shared
between userland and the kernel. Although part of the CPU design, it is
a bit of an undesired behavior, because it allows to forge valid kernel
pointers from userland. To avoid that, we don't share the key with
userland, and rather switch it in EL0<->EL1 transitions. This means that
when userland executes, a different key is loaded in APIAKey than the one
the kernel uses. For now the userland key is a fixed 128bit zero value.

The DDB stack unwinder is changed to strip the authentication code from
the pointers in lr.

Two problems are known:

* Currently the idlelwps' keys are not really secret. This is because
the RNG is not yet available when we spawn these lwps. Not overly
important, but would be nice to fix with UEFI RNG.
* The key switching in EL0<->EL1 transitions is not the most optimized
code on the planet. Instead of checking aarch64_pac_enabled, it would
be better to hot-patch the code at boot time, but there currently is
no hot-patch support on aarch64.

Tested on Qemu.


Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
# 1.153 15-Feb-2020 skrll

branches: 1.153.4;
Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.162 29-Sep-2020 jmcneill

Collapse all CPU_CORTEXA<n> options into CPU_CORTEX and do runtime
detection instead of ifdefs where required.


# 1.161 02-Aug-2020 maxv

Add support for Privileged Access Never (ARMv8.1-PAN).

PAN provides the same functionality as SMAP on x86: it forbids kernel
access to userland pages when PSTATE.PAN=1, and allows such accesses when
PSTATE.PAN=0.

We clear SCTLR_SPAN, to guarantee that PAN=1 each time the kernel is
entered. We catch PAN faults and panic right away without further
processing. In copyin, copyout, etc, we temporarily authorize access to
userland pages.

PAN is a very useful exploit mitigation. Reviewed by ryo@, thanks. Tested
on Qemu. Enabled by default.


# 1.160 27-Jul-2020 riastradh

Enable ChaCha NEON code on armv7 too.

The 4-blocks-at-a-time assembly helper is disabled for now; adapting
it to armv7 is going to be a little annoying with only 16 128-bit
vector registers.

(Should also do a fifth block in the integer registers for 320 bytes
at a time.)


# 1.159 27-Jul-2020 riastradh

Fix outdated comment.


# 1.158 29-Jun-2020 riastradh

New permutation-based AES implementation using ARM NEON.

Also derived from Mike Hamburg's public-domain vpaes code.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
# 1.157 18-Apr-2020 skrll

PMAP_DEBUG has been deleted on arm


# 1.156 13-Apr-2020 maxv

Add KASAN-DMA support on aarch64, same as amd64. Discussed with skrll@.


# 1.155 13-Apr-2020 maxv

Add support for Branch Target Identification (BTI).

On the executable pages that have the GP (Guarded Page) bit, the semantic
of the "br" and "blr" instructions is changed: the CPU expects the first
instruction of the jump/call target to be "bti", and faults if it isn't.

We add the GP bit on the kernel .text pages (and incidentally the .rodata
pages, but we don't care). The compiler adds a "bti c" instruction at the
beginning of each C function. We modify the ENTRY() macros to manually add
"bti c" in the asm functions.

cpuswitch.S needs a specific change: with "br x27" the CPU expects "bti j",
which is bad because the functions begin with "bti c"; switch to "br x16",
for the CPU to accept "bti c".

BTI helps defend against JOP/COP. Tested on Qemu.


# 1.154 12-Apr-2020 maxv

Add support for Pointer Authentication (PAC).

We use the "pac-ret" option, to sign the return instruction pointer on
function entry, and authenticate it on function exit. This acts as a
mitigation against ROP.

The authentication uses a per-lwp (secret) I-A key stored in the 128bit
APIAKey register and part of the lwp context. During lwp creation, the
kernel generates a random key, and during context switches, it installs
the key of the target lwp on the CPU.

Userland cannot read the APIAKey register directly. However, it can sign
its pointers with it, because the register is architecturally shared
between userland and the kernel. Although part of the CPU design, it is
a bit of an undesired behavior, because it allows to forge valid kernel
pointers from userland. To avoid that, we don't share the key with
userland, and rather switch it in EL0<->EL1 transitions. This means that
when userland executes, a different key is loaded in APIAKey than the one
the kernel uses. For now the userland key is a fixed 128bit zero value.

The DDB stack unwinder is changed to strip the authentication code from
the pointers in lr.

Two problems are known:

* Currently the idlelwps' keys are not really secret. This is because
the RNG is not yet available when we spawn these lwps. Not overly
important, but would be nice to fix with UEFI RNG.
* The key switching in EL0<->EL1 transitions is not the most optimized
code on the planet. Instead of checking aarch64_pac_enabled, it would
be better to hot-patch the code at boot time, but there currently is
no hot-patch support on aarch64.

Tested on Qemu.


Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
# 1.153 15-Feb-2020 skrll

branches: 1.153.4;
Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.161 02-Aug-2020 maxv

Add support for Privileged Access Never (ARMv8.1-PAN).

PAN provides the same functionality as SMAP on x86: it forbids kernel
access to userland pages when PSTATE.PAN=1, and allows such accesses when
PSTATE.PAN=0.

We clear SCTLR_SPAN, to guarantee that PAN=1 each time the kernel is
entered. We catch PAN faults and panic right away without further
processing. In copyin, copyout, etc, we temporarily authorize access to
userland pages.

PAN is a very useful exploit mitigation. Reviewed by ryo@, thanks. Tested
on Qemu. Enabled by default.


# 1.160 27-Jul-2020 riastradh

Enable ChaCha NEON code on armv7 too.

The 4-blocks-at-a-time assembly helper is disabled for now; adapting
it to armv7 is going to be a little annoying with only 16 128-bit
vector registers.

(Should also do a fifth block in the integer registers for 320 bytes
at a time.)


# 1.159 27-Jul-2020 riastradh

Fix outdated comment.


# 1.158 29-Jun-2020 riastradh

New permutation-based AES implementation using ARM NEON.

Also derived from Mike Hamburg's public-domain vpaes code.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
# 1.157 18-Apr-2020 skrll

PMAP_DEBUG has been deleted on arm


# 1.156 13-Apr-2020 maxv

Add KASAN-DMA support on aarch64, same as amd64. Discussed with skrll@.


# 1.155 13-Apr-2020 maxv

Add support for Branch Target Identification (BTI).

On the executable pages that have the GP (Guarded Page) bit, the semantic
of the "br" and "blr" instructions is changed: the CPU expects the first
instruction of the jump/call target to be "bti", and faults if it isn't.

We add the GP bit on the kernel .text pages (and incidentally the .rodata
pages, but we don't care). The compiler adds a "bti c" instruction at the
beginning of each C function. We modify the ENTRY() macros to manually add
"bti c" in the asm functions.

cpuswitch.S needs a specific change: with "br x27" the CPU expects "bti j",
which is bad because the functions begin with "bti c"; switch to "br x16",
for the CPU to accept "bti c".

BTI helps defend against JOP/COP. Tested on Qemu.


# 1.154 12-Apr-2020 maxv

Add support for Pointer Authentication (PAC).

We use the "pac-ret" option, to sign the return instruction pointer on
function entry, and authenticate it on function exit. This acts as a
mitigation against ROP.

The authentication uses a per-lwp (secret) I-A key stored in the 128bit
APIAKey register and part of the lwp context. During lwp creation, the
kernel generates a random key, and during context switches, it installs
the key of the target lwp on the CPU.

Userland cannot read the APIAKey register directly. However, it can sign
its pointers with it, because the register is architecturally shared
between userland and the kernel. Although part of the CPU design, it is
a bit of an undesired behavior, because it allows to forge valid kernel
pointers from userland. To avoid that, we don't share the key with
userland, and rather switch it in EL0<->EL1 transitions. This means that
when userland executes, a different key is loaded in APIAKey than the one
the kernel uses. For now the userland key is a fixed 128bit zero value.

The DDB stack unwinder is changed to strip the authentication code from
the pointers in lr.

Two problems are known:

* Currently the idlelwps' keys are not really secret. This is because
the RNG is not yet available when we spawn these lwps. Not overly
important, but would be nice to fix with UEFI RNG.
* The key switching in EL0<->EL1 transitions is not the most optimized
code on the planet. Instead of checking aarch64_pac_enabled, it would
be better to hot-patch the code at boot time, but there currently is
no hot-patch support on aarch64.

Tested on Qemu.


Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
# 1.153 15-Feb-2020 skrll

branches: 1.153.4;
Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.160 27-Jul-2020 riastradh

Enable ChaCha NEON code on armv7 too.

The 4-blocks-at-a-time assembly helper is disabled for now; adapting
it to armv7 is going to be a little annoying with only 16 128-bit
vector registers.

(Should also do a fifth block in the integer registers for 320 bytes
at a time.)


# 1.159 27-Jul-2020 riastradh

Fix outdated comment.


# 1.158 29-Jun-2020 riastradh

New permutation-based AES implementation using ARM NEON.

Also derived from Mike Hamburg's public-domain vpaes code.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
# 1.157 18-Apr-2020 skrll

PMAP_DEBUG has been deleted on arm


# 1.156 13-Apr-2020 maxv

Add KASAN-DMA support on aarch64, same as amd64. Discussed with skrll@.


# 1.155 13-Apr-2020 maxv

Add support for Branch Target Identification (BTI).

On the executable pages that have the GP (Guarded Page) bit, the semantic
of the "br" and "blr" instructions is changed: the CPU expects the first
instruction of the jump/call target to be "bti", and faults if it isn't.

We add the GP bit on the kernel .text pages (and incidentally the .rodata
pages, but we don't care). The compiler adds a "bti c" instruction at the
beginning of each C function. We modify the ENTRY() macros to manually add
"bti c" in the asm functions.

cpuswitch.S needs a specific change: with "br x27" the CPU expects "bti j",
which is bad because the functions begin with "bti c"; switch to "br x16",
for the CPU to accept "bti c".

BTI helps defend against JOP/COP. Tested on Qemu.


# 1.154 12-Apr-2020 maxv

Add support for Pointer Authentication (PAC).

We use the "pac-ret" option, to sign the return instruction pointer on
function entry, and authenticate it on function exit. This acts as a
mitigation against ROP.

The authentication uses a per-lwp (secret) I-A key stored in the 128bit
APIAKey register and part of the lwp context. During lwp creation, the
kernel generates a random key, and during context switches, it installs
the key of the target lwp on the CPU.

Userland cannot read the APIAKey register directly. However, it can sign
its pointers with it, because the register is architecturally shared
between userland and the kernel. Although part of the CPU design, it is
a bit of an undesired behavior, because it allows to forge valid kernel
pointers from userland. To avoid that, we don't share the key with
userland, and rather switch it in EL0<->EL1 transitions. This means that
when userland executes, a different key is loaded in APIAKey than the one
the kernel uses. For now the userland key is a fixed 128bit zero value.

The DDB stack unwinder is changed to strip the authentication code from
the pointers in lr.

Two problems are known:

* Currently the idlelwps' keys are not really secret. This is because
the RNG is not yet available when we spawn these lwps. Not overly
important, but would be nice to fix with UEFI RNG.
* The key switching in EL0<->EL1 transitions is not the most optimized
code on the planet. Instead of checking aarch64_pac_enabled, it would
be better to hot-patch the code at boot time, but there currently is
no hot-patch support on aarch64.

Tested on Qemu.


Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
# 1.153 15-Feb-2020 skrll

branches: 1.153.4;
Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.158 29-Jun-2020 riastradh

New permutation-based AES implementation using ARM NEON.

Also derived from Mike Hamburg's public-domain vpaes code.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
# 1.157 18-Apr-2020 skrll

PMAP_DEBUG has been deleted on arm


# 1.156 13-Apr-2020 maxv

Add KASAN-DMA support on aarch64, same as amd64. Discussed with skrll@.


# 1.155 13-Apr-2020 maxv

Add support for Branch Target Identification (BTI).

On the executable pages that have the GP (Guarded Page) bit, the semantic
of the "br" and "blr" instructions is changed: the CPU expects the first
instruction of the jump/call target to be "bti", and faults if it isn't.

We add the GP bit on the kernel .text pages (and incidentally the .rodata
pages, but we don't care). The compiler adds a "bti c" instruction at the
beginning of each C function. We modify the ENTRY() macros to manually add
"bti c" in the asm functions.

cpuswitch.S needs a specific change: with "br x27" the CPU expects "bti j",
which is bad because the functions begin with "bti c"; switch to "br x16",
for the CPU to accept "bti c".

BTI helps defend against JOP/COP. Tested on Qemu.


# 1.154 12-Apr-2020 maxv

Add support for Pointer Authentication (PAC).

We use the "pac-ret" option, to sign the return instruction pointer on
function entry, and authenticate it on function exit. This acts as a
mitigation against ROP.

The authentication uses a per-lwp (secret) I-A key stored in the 128bit
APIAKey register and part of the lwp context. During lwp creation, the
kernel generates a random key, and during context switches, it installs
the key of the target lwp on the CPU.

Userland cannot read the APIAKey register directly. However, it can sign
its pointers with it, because the register is architecturally shared
between userland and the kernel. Although part of the CPU design, it is
a bit of an undesired behavior, because it allows to forge valid kernel
pointers from userland. To avoid that, we don't share the key with
userland, and rather switch it in EL0<->EL1 transitions. This means that
when userland executes, a different key is loaded in APIAKey than the one
the kernel uses. For now the userland key is a fixed 128bit zero value.

The DDB stack unwinder is changed to strip the authentication code from
the pointers in lr.

Two problems are known:

* Currently the idlelwps' keys are not really secret. This is because
the RNG is not yet available when we spawn these lwps. Not overly
important, but would be nice to fix with UEFI RNG.
* The key switching in EL0<->EL1 transitions is not the most optimized
code on the planet. Instead of checking aarch64_pac_enabled, it would
be better to hot-patch the code at boot time, but there currently is
no hot-patch support on aarch64.

Tested on Qemu.


Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
# 1.153 15-Feb-2020 skrll

branches: 1.153.4;
Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.157 18-Apr-2020 skrll

PMAP_DEBUG has been deleted on arm


# 1.156 13-Apr-2020 maxv

Add KASAN-DMA support on aarch64, same as amd64. Discussed with skrll@.


# 1.155 13-Apr-2020 maxv

Add support for Branch Target Identification (BTI).

On the executable pages that have the GP (Guarded Page) bit, the semantic
of the "br" and "blr" instructions is changed: the CPU expects the first
instruction of the jump/call target to be "bti", and faults if it isn't.

We add the GP bit on the kernel .text pages (and incidentally the .rodata
pages, but we don't care). The compiler adds a "bti c" instruction at the
beginning of each C function. We modify the ENTRY() macros to manually add
"bti c" in the asm functions.

cpuswitch.S needs a specific change: with "br x27" the CPU expects "bti j",
which is bad because the functions begin with "bti c"; switch to "br x16",
for the CPU to accept "bti c".

BTI helps defend against JOP/COP. Tested on Qemu.


# 1.154 12-Apr-2020 maxv

Add support for Pointer Authentication (PAC).

We use the "pac-ret" option, to sign the return instruction pointer on
function entry, and authenticate it on function exit. This acts as a
mitigation against ROP.

The authentication uses a per-lwp (secret) I-A key stored in the 128bit
APIAKey register and part of the lwp context. During lwp creation, the
kernel generates a random key, and during context switches, it installs
the key of the target lwp on the CPU.

Userland cannot read the APIAKey register directly. However, it can sign
its pointers with it, because the register is architecturally shared
between userland and the kernel. Although part of the CPU design, it is
a bit of an undesired behavior, because it allows to forge valid kernel
pointers from userland. To avoid that, we don't share the key with
userland, and rather switch it in EL0<->EL1 transitions. This means that
when userland executes, a different key is loaded in APIAKey than the one
the kernel uses. For now the userland key is a fixed 128bit zero value.

The DDB stack unwinder is changed to strip the authentication code from
the pointers in lr.

Two problems are known:

* Currently the idlelwps' keys are not really secret. This is because
the RNG is not yet available when we spawn these lwps. Not overly
important, but would be nice to fix with UEFI RNG.
* The key switching in EL0<->EL1 transitions is not the most optimized
code on the planet. Instead of checking aarch64_pac_enabled, it would
be better to hot-patch the code at boot time, but there currently is
no hot-patch support on aarch64.

Tested on Qemu.


Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
# 1.153 15-Feb-2020 skrll

Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.156 13-Apr-2020 maxv

Add KASAN-DMA support on aarch64, same as amd64. Discussed with skrll@.


# 1.155 13-Apr-2020 maxv

Add support for Branch Target Identification (BTI).

On the executable pages that have the GP (Guarded Page) bit, the semantic
of the "br" and "blr" instructions is changed: the CPU expects the first
instruction of the jump/call target to be "bti", and faults if it isn't.

We add the GP bit on the kernel .text pages (and incidentally the .rodata
pages, but we don't care). The compiler adds a "bti c" instruction at the
beginning of each C function. We modify the ENTRY() macros to manually add
"bti c" in the asm functions.

cpuswitch.S needs a specific change: with "br x27" the CPU expects "bti j",
which is bad because the functions begin with "bti c"; switch to "br x16",
for the CPU to accept "bti c".

BTI helps defend against JOP/COP. Tested on Qemu.


# 1.154 12-Apr-2020 maxv

Add support for Pointer Authentication (PAC).

We use the "pac-ret" option, to sign the return instruction pointer on
function entry, and authenticate it on function exit. This acts as a
mitigation against ROP.

The authentication uses a per-lwp (secret) I-A key stored in the 128bit
APIAKey register and part of the lwp context. During lwp creation, the
kernel generates a random key, and during context switches, it installs
the key of the target lwp on the CPU.

Userland cannot read the APIAKey register directly. However, it can sign
its pointers with it, because the register is architecturally shared
between userland and the kernel. Although part of the CPU design, it is
a bit of an undesired behavior, because it allows to forge valid kernel
pointers from userland. To avoid that, we don't share the key with
userland, and rather switch it in EL0<->EL1 transitions. This means that
when userland executes, a different key is loaded in APIAKey than the one
the kernel uses. For now the userland key is a fixed 128bit zero value.

The DDB stack unwinder is changed to strip the authentication code from
the pointers in lr.

Two problems are known:

* Currently the idlelwps' keys are not really secret. This is because
the RNG is not yet available when we spawn these lwps. Not overly
important, but would be nice to fix with UEFI RNG.
* The key switching in EL0<->EL1 transitions is not the most optimized
code on the planet. Instead of checking aarch64_pac_enabled, it would
be better to hot-patch the code at boot time, but there currently is
no hot-patch support on aarch64.

Tested on Qemu.


Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
# 1.153 15-Feb-2020 skrll

Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.154 12-Apr-2020 maxv

Add support for Pointer Authentication (PAC).

We use the "pac-ret" option, to sign the return instruction pointer on
function entry, and authenticate it on function exit. This acts as a
mitigation against ROP.

The authentication uses a per-lwp (secret) I-A key stored in the 128bit
APIAKey register and part of the lwp context. During lwp creation, the
kernel generates a random key, and during context switches, it installs
the key of the target lwp on the CPU.

Userland cannot read the APIAKey register directly. However, it can sign
its pointers with it, because the register is architecturally shared
between userland and the kernel. Although part of the CPU design, it is
a bit of an undesired behavior, because it allows to forge valid kernel
pointers from userland. To avoid that, we don't share the key with
userland, and rather switch it in EL0<->EL1 transitions. This means that
when userland executes, a different key is loaded in APIAKey than the one
the kernel uses. For now the userland key is a fixed 128bit zero value.

The DDB stack unwinder is changed to strip the authentication code from
the pointers in lr.

Two problems are known:

* Currently the idlelwps' keys are not really secret. This is because
the RNG is not yet available when we spawn these lwps. Not overly
important, but would be nice to fix with UEFI RNG.
* The key switching in EL0<->EL1 transitions is not the most optimized
code on the planet. Instead of checking aarch64_pac_enabled, it would
be better to hot-patch the code at boot time, but there currently is
no hot-patch support on aarch64.

Tested on Qemu.


Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
# 1.153 15-Feb-2020 skrll

Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.153 15-Feb-2020 skrll

Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}


Revision tags: ad-namecache-base2
# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.152 21-Jan-2020 skrll

Sort a bit


# 1.151 21-Jan-2020 skrll

Trailing whitespace


Revision tags: ad-namecache-base1
# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

branches: 1.149.2;
Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.150 15-Jan-2020 mrg

port the arm64 cpu topology setup for big.little to arm.

rename arm64 cpu_do_topology() to arm_cpu_do_topology() and
call it from both arm cpu_attach().

replace both aarch64_set_topology() inline code in arm
cpu_attach() with new arm_cpu_do_topology(), which is called
by the arm64 locore as well (possibly not needed, which would
allow it to become static.)

not yet tested on a real big.little armv7 system. tested
on rockpro64 and pinebook pro.


Revision tags: ad-namecache-base
# 1.149 20-Nov-2019 pgoyette

Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.149 20-Nov-2019 pgoyette

Move all non-emulation-specific coredump code into the coredump module,
and remove all #ifdef COREDUMP conditional compilation. Now, the
coredump module is completely separated from the emulation modules, and
they can all be independently loaded and unloaded.

Welcome to 9.99.18 !


Revision tags: phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 01-Apr-2018 ryo

branches: 1.139.2;
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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


Revision tags: isaki-audio2-base
# 1.148 27-Jan-2019 pgoyette

Merge the [pgoyette-compat] branch


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.147 05-Dec-2018 jmcneill

Split armv7/armv8 tprof backend config logic from the fdt bus glue.


Revision tags: pgoyette-compat-1126
# 1.146 28-Oct-2018 jmcneill

Add support for EFI runtime services on aarch64.


Revision tags: pgoyette-compat-1020
# 1.145 18-Oct-2018 skrll

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively


# 1.144 06-Oct-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0930
# 1.143 21-Sep-2018 skrll

Centralise defparam CONSADDR, CONSPEED, CONMODE and CONADDR into
opt_console.h and adjust.


# 1.142 16-Sep-2018 skrll

Whitespace


Revision tags: pgoyette-compat-0906
# 1.141 10-Aug-2018 maxv

remove reference to CPU_ARMV2, suggested by jmcneill@


# 1.140 10-Aug-2018 maxv

Retire CPU_ARM2, CPU_ARM250 and CPU_ARM3, they are all leftovers of
acorn26.

ok jmcneill@ skrll@


Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
# 1.139 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@)


Revision tags: pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.138 24-Jan-2018 skrll

branches: 1.138.2;
Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.138 24-Jan-2018 skrll

Remove port-acorn26

OK core@


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.137 17-Jan-2018 skrll

G/C ARM32_NEW_VM_LAYOUT


Revision tags: tls-maxphys-base-20171202
# 1.136 10-Nov-2017 matt

Add CPU_CORTEXA35


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.135 08-Oct-2017 jmcneill

defflag CPU_CORTEXA53


Revision tags: nick-nhusb-base-20170825
# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.134 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.


Revision tags: perseant-stdc-iso10646-base
# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

branches: 1.132.2;
Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.133 28-Jun-2017 jmcneill

Add support for ARM Power State Coordination Interface (PSCI).


Revision tags: netbsd-8-base
# 1.132 26-May-2017 jmcneill

Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


# 1.132 26-May-2017 jmcneill

Recognize Cortex-A57 FPU, GIC, and Generic Timer.


Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.


Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
# 1.131 11-Nov-2015 skrll

Support pmap_pv_track and friends


Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
# 1.130 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.129 01-Dec-2014 matt

Add CPU_CORTEXA17


Revision tags: nick-nhusb-base
# 1.128 26-Nov-2014 matt

branches: 1.128.2;
Add option ARM_HAS_LPAE


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
# 1.127 14-Apr-2014 matt

branches: 1.127.2;
Support (untested) SHEEVA_L2_CACHE and SHEEVA_L2_CACHE_WT options.
Move prototypes out to <arm/cpufunc.h> to their own file.
Add sdcache routines to cpufunc_asm_sheeva.S
Add code sheeve_setup to init the sdcache and sdcache info.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.126 30-Mar-2014 matt

branches: 1.126.2;
Make the ARM pmap use ASIDs, split TTBRs, and MP safe. This only happens for
ARMv6 or later CPUs. This means that on context switch that the TLBs and
caches no longer to cleaned/flushed. Also, eXecute Never (XN) protection has
been added so non-exec pages can not be run. Change the page size for ARMv6+
to be 8KB while allows a L1PT to be a normal page. This means that the L1PT
is not special. Use the XN support to only sync pages that are executed from.


# 1.125 18-Mar-2014 matt

defflag VERBOSE_INIT_ARM


Revision tags: riastradh-drm2-base3
# 1.124 20-Feb-2014 matt

cpu_cortex doesn't need the arm11 cpufuncs any more


# 1.123 12-Nov-2013 matt

CPU_ARMV[67] imply ARM32_DISABLE_ALIGNMENT_FAULTS
Make it explicit.


# 1.122 17-Aug-2013 matt

Nuke atomic.S since we have MI defined atomic ops


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.121 02-Jul-2013 matt

Rework to have CPU_PREARMV6, CPU_ARMV6, as well as CPU_ARMV7


# 1.120 22-Jun-2013 matt

branches: 1.120.2;
File VBAR option


# 1.119 12-Jun-2013 matt

Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)


# 1.118 12-Jun-2013 matt

Add CPU_ARMV7 and make CPU_PJ4B and CPU_CORTEX instantiate it.


# 1.117 19-May-2013 rkujawa

Make PJ4B support code compilable.

Obtained from Marvell, Semihalf.


Revision tags: agc-symver-base
# 1.116 14-Feb-2013 matt

Add BUSDMA_COUNTERS option


# 1.115 28-Jan-2013 matt

Disable bzero_page_vfp and bcopy_page_vfp since it really isn't any faster
than memcpy.


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7
# 1.114 10-Dec-2012 matt

Add code to use VFP(or Neon) instructions to zero or copy a page via
pmap_zero_page and pmap_copy_page. (Not hooked into vfp_init yet).
Requires FPU_VFP


# 1.113 05-Dec-2012 matt

ARMFPE hasn't compiled since NetBSD 4. Remove it.
Complete support for FPU_VFP.
fpregs now contains vfpreg.
XXX vfpreg only has space for 16 64-bit FP registers though VFPv3 and later
have 32 64-bit FP registers.


Revision tags: yamt-pagecache-base6
# 1.112 17-Oct-2012 matt

Add a PMAP_NEEDS_ALLOC_POOLPAGE / PMAP_ALLOC_POOLPAGE hook so systems can
allocate pool pages from a specific VM freelist.


# 1.111 18-Sep-2012 matt

add _ARM32_NEED_BUS_DMA_BOUNCE to opt_arm_bus_space.h (It's not really a
bus_space option but it's close enough).


# 1.110 29-Aug-2012 matt

branches: 1.110.2;
Add core locator to mainbus. Add support for attaching multiple CPUs


# 1.109 29-Aug-2012 matt

Rename ARM options PROCESS_ID_IS_CUR{CPU,LWP} to TPIDRPRW_IS_CUR{CPU,LWP}
since TPIDRPRW is the cp15 register name.
Initialize it early in start along with CI_ARM_CPUID.
Remove other initializations.
We alays have ci_curlwp.
Enable TIPRPRW_IS_CURCPU in std.beagle.
[tested on a beaglboard (cortex-a8)]


# 1.108 12-Aug-2012 matt

Rework VFP support to use PCU.
Add emulation of instruction which save/restore the VFP FPSCR.
Add a sysarch hook to VFP FPSCR manipulation.

[The emulation will be used by libc to store/fetch exception modes and
rounding mode on a per-thread basis.]


# 1.107 03-Aug-2012 matt

COMPAT_NETBSD32 support for ARM. Which is strange since ARM is already
32-bits. But the newer ARM ABI AAPCS changes the alignment of 64-bit
fields so structures need to copied in and out to deal with the alignment
change. This is a kludge but makes debugging of AAPCS support much easier.


# 1.106 21-Jul-2012 skrll

Add support for the ARM1176JZS


# 1.105 14-Jul-2012 matt

Add intrbase locator to mainbus.


# 1.104 13-Jul-2012 matt

Begin support for Cortex A5, A7, A15 and expand A8 and A9 definitions.
Instead of testing all possible CPUids for a cortex, we know what range
a cortex will be so mask out the insignificant parts and do a single test.


Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.103 11-Dec-2011 kiyohara

branches: 1.103.2;
Require arm3_cache_flush for ARM2/ARM250.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.102 12-Jun-2011 rmind

branches: 1.102.2; 1.102.6;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.


Revision tags: rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
# 1.101 10-Mar-2011 bsh

branches: 1.101.2;
Preliminary ARM11 MPCore support.

I have confirmed this commit doesn't affect existing evbarm kernels by
comparing binaries.


Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
# 1.100 02-Oct-2010 kiyohara

branches: 1.100.2;
Add support Marvell Sheeva Core and SoC. (Orion/Kirkwood)
Discovery Innovation not yet.


Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.99 19-Jun-2010 matt

Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.98 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt


Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
# 1.97 27-Dec-2009 uebayasi

branches: 1.97.2; 1.97.4;
Add write-through cache work-around for ARM11 as well as ARM9/ARM10. Analyzed
& tested on i.MX35 with help from Tsubai Masanari.


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base
# 1.96 18-Jan-2009 bjh21

Adapt the arm32 fusu implementation for use on PROG26 configurations
and use it on acorn26.


# 1.95 18-Jan-2009 bjh21

Move arch/arm/arm32/fusu.S to arch/arm/arm/fusu.S in preparation for making
it usable on acorn26 as well.


Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
# 1.94 19-Nov-2008 ad

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
# 1.93 14-Oct-2008 matt

branches: 1.93.2; 1.93.8;
Add FA526 support (compile tested only)


Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.92 27-Aug-2008 matt

Add CPU_CORTEXA8


Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
# 1.91 27-Apr-2008 matt

branches: 1.91.2; 1.91.6;
Merge kernel changes in matt-armv6 to HEAD.


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
# 1.90 15-Mar-2008 rearnsha

branches: 1.90.2; 1.90.4;
VFP support.


Revision tags: nick-net80211-sync-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 mjf-devfs-base hpcarm-cleanup-base
# 1.89 26-Jan-2008 chris

branches: 1.89.2; 1.89.6;
Add arm version of cpu_in_cksum. Based on previous in_cksum4 code.

In fact it's mostly the same code, with a different stub on it.

On a cats the regress/sys/net/in_cksum tests show that it takes around
50-60% of the time the C version takes. In some cases it takes as low as
20%.


# 1.88 25-Jan-2008 joerg

Refactor in_cksum/in4_cksum/in6_cksum implementations:
- All three functions are included in the kernel by default.
They call a backend function cpu_in_cksum after possibly
computing the checksum of the pseudo header.
- cpu_in_cksum is the core to implement the one-complement sum.
The default implementation is moderate fast on most platforms
and provides a 32bit accumulator with 16bit addends for L32 platforms
and a 64bit accumulator with 32bit addends for L64 platforms.
It handles edge cases like very large mbuf chains (could happen with
native IPv6 in the future) and provides a good base for new native
implementations.
- Modify i386 and amd64 assembly to use the new interface.

This disables the MD implementations on !x86 until the conversion is
done. For Alpha, the portable version is faster.


Revision tags: chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
# 1.87 06-Jan-2008 ad

Add MODULAR option. Include kernel linker stuff if MODULAR.


Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
# 1.86 17-Oct-2007 garbled

branches: 1.86.2; 1.86.8;
Merge the ppcoea-renovation branch to HEAD.

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

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

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.


Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base ppcoea-renovation-base mjf-ufs-trans-base vmlocking-base
# 1.85 07-Jul-2007 tsutsui

branches: 1.85.6; 1.85.10; 1.85.12;
Remove leftover netns stuff.


# 1.84 17-May-2007 yamt

merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.


Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
# 1.83 09-Mar-2007 thorpej

branches: 1.83.2; 1.83.4; 1.83.8; 1.83.10;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.


Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.82 06-Jan-2007 christos

branches: 1.82.2;
Scott Allan in http://mail-index.netbsd.org/port-arm/2006/07/31/0000.html
Patch to add support for ARM9E


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.81 11-Dec-2005 christos

branches: 1.81.20; 1.81.24;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.80 13-Sep-2005 christos

split compat_16 functions to their own file and make this compile again.


# 1.79 04-Jul-2005 bsh

branches: 1.79.2;
The first step to support Intel PXA270.

kernel config option CPU_XSCALE_PXA2X0 is now obsoleted by
CPU_XSCALE_PXA250 and CPU_XSCALE_PXA270. If both of them are defined,
CPU is determined run-time.


# 1.78 03-Jun-2005 rearnsha

Very basic support for the ARM1136.

This code takes no advantage of any 'new' features provided by
architecture 6 devices (such as physically tagged caches or new
MMU features), and basically runs the chip in a 'legacy v5' mode.


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
# 1.77 03-Apr-2004 bsh

add an option to force ARM9 dcache to write-through mode.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.76 05-Nov-2003 scw

Add "options ARM32_DISABLE_ALIGNMENT_FAULTS" to forcibly disable
alignment fault checking if necessary.

This option gets the acorn32 port working again.

XXX: Richard Earnshaw suggested enabling alignment faults for
XXX: userland only on acorn32. Need to investigate this.


# 1.75 23-Oct-2003 scw

Add a defflag for __BUS_SPACE_HAS_STREAM_METHODS, and add the
appropriate glue in bus.h, contingent on the option being defined.

This allows stream methods to be available on a port-by-port basis.


# 1.74 11-Sep-2003 scw

Hand-optimised in_cksum/in4_cksum for ARM and XSCALE.
Contributed by Wasabi Systems, with input from Chris Gilbert,
Richard Earnshaw and David Laight.


# 1.73 06-Sep-2003 rearnsha

Add build-system support for ARM10.


# 1.72 23-May-2003 ichiro

branches: 1.72.2;
support IXP425 Intel Network Processor
running on BigEndian


# 1.71 21-May-2003 thorpej

Move the new pmap from arm32/pmap_new.c to arm32/pmap.c, fully replacing
the old.


# 1.70 03-May-2003 thorpej

ARM32_PMAP_NEEDS_PTE_SYNC no longer exists.


# 1.69 28-Apr-2003 briggs

Add arm32 machine-specific remote kgdb support. Largely
from PR port-arm/15530 by bsh@, but with some updates from
me, including a fresh arm32/kgdb_machdep.c--ported from pc532.


# 1.68 21-Apr-2003 thorpej

Defflag XSCALE_CACHE_READ_WRITE_ALLOCATE and XSCALE_NO_COALESCE_WRITES.


# 1.67 18-Apr-2003 scw

Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.


# 1.66 29-Mar-2003 bsh

put options XSCALE_CACHE_WRITE_THROUGH into opt_cpuoptions.h.
add XSCALE_CACHE_WRITE_BACK.


Revision tags: nathanw_sa_before_merge nathanw_sa_base
# 1.65 02-Jan-2003 thorpej

Clean up evbarm interrupt support a little:
* Define an ARM_INTR_IMPL option, which specifies a header file
describing the interrupt implementation for the platform. Use
this instead of the list of EVBARM_BOARDTYPE checks.
* Make the s3c2xx0 interrupt dispatch code a bit more generic, and move
it to a generic location so that other platforms can use it.

This eliminates all uses of the EVBARM_BOARDTYPE stuff, so delete it.


Revision tags: fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
# 1.64 19-Oct-2002 bsh

make atomic_{set,clear}_bit() inline for arm32 ports, and
add <machine/atomic.h> for them.


Revision tags: gehenna-devsw-base kqueue-base
# 1.63 11-Aug-2002 bjh21

branches: 1.63.2;
Move the arm32 copystr.S from arch/arm/arm32 to arch/arm/arm and add support
for 26-bit modes (basically saving R14 when we might get a page fault).
Use it on all ARM architectures now.


# 1.62 11-Aug-2002 bjh21

New, improved version of copyin(), copyout(), and kcopy() by Allen Briggs.
This version works on both 26-bit and 32-bit machines. For large copies,
it's up to three times as fast as the old arm32 version and five times as
fast as the old arm26 version. For small copies it seems to be even faster
(getrusage() is apparently over ten times faster on an ARM610).

Hooray for Allen!


# 1.61 15-Jul-2002 ichiro

add support for ixp12x0


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.60 03-May-2002 rjs

branches: 1.60.2; 1.60.4;
Add correct use of cpu types for SA1100 and SA1110.


# 1.59 03-May-2002 thorpej

Add the CPU_XSCALE_PXA2X0 option. From Hiroyuki Bessho, PR 16617.


# 1.58 12-Apr-2002 thorpej

Add some generic bus_space ops, which are pulled in by the
"bus_space_generic" configuration attribute.


# 1.57 12-Apr-2002 thorpej

Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel. What
you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
on which ARM architecture versions are configured (based on CPU_*
options). Also defines ARM_NARCH to determins how many architecture
versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.


# 1.56 26-Mar-2002 thorpej

Restructure a few things in order to support other XScale core
I/O processors:
* The i80200 and the i80321 have the same CPU ID, so split the
CPU_XSCALE option into CPU_XSCALE_80200 and CPU_XSCALE_80321
options, and don't let them both be defined at the same time.
XXX May want to revisit this in the future.
* Split some registers common between the i80200 and i80321 into
<arm/xscale/xscalereg.h>.
* Rename a few existing functions.


# 1.55 24-Mar-2002 bjh21

arm26->acorn26 transition.


Revision tags: eeh-devprop-base newlock-base ifpoll-base
# 1.54 30-Jan-2002 thorpej

Add a sleep routine for the SA-11x0.


# 1.53 24-Jan-2002 briggs

Two changes for XScale:
1) Add defparam XSCALE_CCLKCFG to define a parameter for the
CCLKCFG register. Default it to '9' on the IQ80310.
2) Add a sleep call to the xscale CPU function vector (replacing
the nullop) which should drop the CPU into "idle" mode when
cpu_switch finds nothing on the run queues.


# 1.52 17-Jan-2002 bjh21

Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.


# 1.51 14-Jan-2002 bjh21

Crude first cut at ARMLinux binary compatibility. Successfully runs
"/emul/linux/bin/echo hello, world", dynamically linked.


# 1.50 12-Jan-2002 bjh21

Combined syscall handler for all ARM ports. This is basically the arm32
version, made readable and compatible with arm26. In addition, this adds
support for NetBSD/arm's newly allocated SWI range.


# 1.49 07-Jan-2002 bjh21

On arm26, vectors.S needs to be at the start of the kernel text, so that it's
on a page boundary and can be mapped straight into zero page. This means it
has to be in MD_SFILES on arm26, and not in SFILES.

This probably leaves kernel_text in the wrong place, but it at least leaves the system bootable.


# 1.48 21-Dec-2001 bjh21

Merge ast() and userret() between arm32 and arm26. The implementation used
is the arm32 one.


# 1.47 20-Dec-2001 thorpej

* Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.


# 1.46 28-Nov-2001 lukem

- convert usage of "defopt" to "defflag" where the relevant option does
not support a value (e.g., it's to be used as "options FOO" instead of
"options FOO=xxx"). options that take a value were converted to
defparam recently.
- minor whitespace & formatting cleanups


# 1.45 26-Nov-2001 thorpej

Move the interrupt-related file declarations into port-specific
config descriptions so that each port choose whether or not to
use it.


# 1.44 24-Nov-2001 thorpej

Make the ARM, Ltd. floating point emulator work w/ ELF.


# 1.43 24-Nov-2001 thorpej

Move the ARM, Ltd. floating point emulator to arch/arm.


# 1.42 22-Nov-2001 thorpej

Add 26-bit and 32-bit types.h files, which indicate the programming
model in use for a given platform (__PROG26 vs __PROG32), then pulls
in <arm/types.h>. Change each ARM port to pull in <arm/arm26/types.h>
or <arm/arm32/types.h> as appropriate. Change all references to PROG26
and PROG32 to __PROG26 and __PROG32. Eliminate the opt_progmode.h
header file.


# 1.41 20-Nov-2001 lukem

cleanup:
options SPACE TAB
makeoptions TAB
psuedo-device TAB
remove trailing whitespace
replace multiple spaces -> tabs
options "FOO" -> options FOO
options "FOO=bar" -> options FOO=bar
options "FOO=\"bar\"" -> options FOO="\"bar\""


Revision tags: thorpej-mips-cache-base
# 1.40 10-Nov-2001 thorpej

branches: 1.40.2;
Split all the model/version-specific cpufuncs into separate files
corresponding to the model/version.


# 1.39 18-Oct-2001 rearnsha

branches: 1.39.2;
Add CPU_ARM9 to opt_cputypes.h


Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
# 1.38 05-Sep-2001 matt

Don't compile SPL/INTR stuff if NEWINTR is defined.


# 1.37 05-Aug-2001 chris

Share procfs_machdep.c across arm.


# 1.36 31-Jul-2001 matt

Add a CPU_XSCALE defopt (for eventual support).


# 1.35 28-Jul-2001 chris

Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.


# 1.34 10-Jul-2001 bjh21

Purge CPU_ARM7500. Thanks to Reinoud's work, it's no longer needed.


# 1.33 08-Jul-2001 rjs

branches: 1.33.2;
Initial copy of SA11x0 support from hpcarm.


# 1.32 18-Jun-2001 bjh21

Merge arm32/dev/bus_space_notimpl.S and hpcarm/hpcarm/bus_space_notimpl.S
into arm/arm/bus_space_notimpl.S. They were identical anyway.

This file has no excuse for being in assembler, but I'll leave that for another
day.


# 1.31 05-Jun-2001 bjh21

Replace arm/arm32/db_trace.c and arm26/arm26/db_trace.c with a unified version
in arm/arm. This version is based on the arm26 version, and includes dumping
the contents of stack frames, with automatic determination of the save code
pointer offset.


# 1.30 03-Jun-2001 chris

Add support for ARM7TDMI, as provided in a patch from John Fremlin to port-arm32.

Shouldn't effect any currently in tree ports.


# 1.29 29-May-2001 bjh21

Move blockio.S from sys/arch/arm32/arm32 to sys/arch/arm/arm, since I want to
start using it on arm26.

hpcarm gets to keep its own version, since it's not identical and I haven't
got an hpcarm box to test.


# 1.28 23-May-2001 chris

Create an asm based version of in4_cksum based on the sparc version.

Also don't compute psuedo header for nxt == 0


# 1.27 13-May-2001 bjh21

strstr() is no longer used in the kernel. G/C it.


# 1.26 13-May-2001 bjh21

Move get_bootconf_option() into a new file, sys/arch/arm/arm/bootconfig.c,
since it's in no way machine-dependent. It's not really ARM-specific either,
but I don't think it's useful enough to be made part of the MI kernel.


# 1.25 06-May-2001 bjh21

Move "defopt PMAP_DEBUG" into files.arm, since it's used by code in arch/arm.


# 1.24 06-May-2001 bjh21

Move cpufunc stuff from arm32/arm32 to arm/arm. The only change involved is
to add recognition of the SA-1100 and SA-1110 for compatibility with hpcarm
(which is now using this code as well).


Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.23 20-Apr-2001 matt

Split cpu from mainbus so that cpu can attached to other buses (like ofbus).


# 1.22 14-Mar-2001 toshii

Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.


# 1.21 11-Mar-2001 bjh21

"needs-flag" for cpu is no longer needed.


# 1.20 08-Mar-2001 bjh21

Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.


# 1.19 06-Mar-2001 matt

Move arm32/arm32/ast.c to arm/arm32/ast.c


# 1.18 05-Mar-2001 bjh21

Move undefined.c from sys/arch/{arm32/arm32,hpcarm/hpcarm} to sys/arch/arm/arm
in preparation for making it usable on arm26 as well.


# 1.17 04-Mar-2001 bjh21

branches: 1.17.2;
Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.


# 1.16 04-Mar-2001 bjh21

Make compat_13_sys_sigreturn() work on arm26, and move it from
arch/arm/arm32/compat_13_machdep.c to arch/arm/arm/compat_13_machdep.c.


# 1.15 04-Mar-2001 matt

Move compat_13_machdep.c, strstr.c, copystr.S, bcopyinout.S, and
bcopy_page.S to arm/arm32 and remove port-local copies.


# 1.14 04-Mar-2001 matt

disksubr*.c are now shared. Start moving files from ../../arm32/arm32


# 1.13 27-Feb-2001 bjh21

Move "options ARMFPE" to files.arm, so generic ARM files can use it.


# 1.12 25-Feb-2001 bjh21

Add PROG32 and PROG26 options.

These are intended to indicate what size of program space is in use, and hence
how to get at the PSR bits. They're currently set automatically by the CPU
type options.


# 1.11 25-Feb-2001 bjh21

Allow "cpu" to have children. In the long term, this may be the best way to
handle co-processors. In the short term, it's a necessary hack to get arm26
kernels to configure.


# 1.10 24-Feb-2001 reinoud

Moved the mainbus files to the arm/conf/file.arm from the arm32 and the
hpcarm/conf/files.hpcarm


# 1.9 23-Feb-2001 reinoud

Big patch for merging common include files of the new hpcarm tree and the old arm32
tree into the new arm substree. All moved files are relinked with a stub that included
the file from the new location; this might be done better later.


# 1.8 13-Feb-2001 bjh21

Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.


# 1.7 13-Feb-2001 bjh21

Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.


# 1.6 11-Feb-2001 bjh21

branches: 1.6.2;
Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it. This should
reduce code size a little.


# 1.5 13-Jan-2001 bjh21

Separate out sigcode into its own file, since it's shared by arm26 and arm32.


# 1.4 12-Jan-2001 bjh21

Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.


# 1.3 12-Jan-2001 bjh21

Move the generic ARM disassembler from arm32/arm32 to arm/arm.


# 1.2 11-Jan-2001 bjh21

Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.


# 1.1 10-Jan-2001 bjh21

Empty file to keep config happy.