freebsd-dev/sys/arm/include
Alan Cox 2bf8cb3804 Add support for pmap_enter(..., psind=1) to the armv6 pmap. In other words,
add support for explicitly requesting that pmap_enter() create a 1 MB page
mapping.  (Essentially, this feature allows the machine-independent layer
to create superpage mappings preemptively, and not wait for automatic
promotion to occur.)

Export pmap_ps_enabled() to the machine-independent layer.

Add a flag to pmap_pv_insert_pte1() that specifies whether it should fail
or reclaim a PV entry when one is not available.

Refactor pmap_enter_pte1() into two functions, one by the same name, that
is a general-purpose function for creating pte1 mappings, and another,
pmap_enter_1mpage(), that is used to prefault 1 MB read- and/or execute-
only mappings for execve(2), mmap(2), and shmat(2).

In addition, as an optimization to pmap_enter(..., psind=0), eliminate the
use of pte2_is_managed() from pmap_enter().  Unlike the x86 pmap
implementations, armv6 does not have a managed bit defined within the PTE.
So, pte2_is_managed() is actually a call to PHYS_TO_VM_PAGE(), which is O(n)
in the number of vm_phys_segs[].  All but one call to PHYS_TO_VM_PAGE() in
pmap_enter() can be avoided.

Reviewed by:	kib, markj, mmel
Tested by:	mmel
MFC after:	6 weeks
Differential Revision:	https://reviews.freebsd.org/D16555
2018-08-08 16:55:01 +00:00
..
_align.h spdx: initial adoption of licensing ID tags. 2017-11-18 14:26:50 +00:00
_bus.h Remove 'All Rights Reserved.' from all of my Copyrights in sys/arm and 2018-05-01 16:21:01 +00:00
_inttypes.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
_limits.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
_stdint.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
_types.h Do not include float interfaces when using libsa. 2018-02-23 04:04:25 +00:00
acle-compat.h
armreg.h Revert r336773: it removed too much. 2018-07-27 21:25:01 +00:00
asm.h Also check if __ARM_ARCH_6KZ__ is defined when detecting when to use ARMv6 2018-07-18 09:17:37 +00:00
asmacros.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
atags.h Remove 'All Rights Reserved.' from all of my Copyrights in sys/arm and 2018-05-01 16:21:01 +00:00
atomic-v4.h Implement atomic_swap_64(9). 2018-08-07 18:56:01 +00:00
atomic-v6.h Fix some harmless type mismatches in the ARM atomic_cmpset implementations. 2018-04-23 16:50:37 +00:00
atomic.h Remove arm-specific implementations of atomic_load/store_xxx() now that 2017-12-20 20:41:51 +00:00
blockio.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
board.h Remove 'All Rights Reserved.' from all of my Copyrights in sys/arm and 2018-05-01 16:21:01 +00:00
bus_dma.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
bus.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
clock.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
counter.h Back pcpu zone with domain correct pages 2018-07-06 02:06:03 +00:00
cpu-v4.h Revert r336773: it removed too much. 2018-07-27 21:25:01 +00:00
cpu-v6.h All CP15 registers are bit fields or counters, don't use signed type 2017-11-05 16:52:54 +00:00
cpu.h Include machine/acle-compat.h in cdefs.h on arm if the compiler doesn't 2016-05-25 19:44:26 +00:00
cpufunc.h Use the cp15 functions to read cp15 registers rather than using assembly 2018-07-28 17:21:34 +00:00
cpuinfo.h Implement mitigation for Spectre version 2 attacks on ARMv7. 2018-01-27 11:19:41 +00:00
db_machdep.h No need to force md code to define a macro that's the same as 2018-04-16 13:52:23 +00:00
debug_monitor.h Improve ARM debug_monitor for SMP machines 2016-05-29 17:35:38 +00:00
disassem.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
dump.h
efi.h Fix building on i386 and arm. But 'public domain' headers on the files 2016-10-13 06:56:23 +00:00
elf.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
endian.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
exec.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
fdt.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
fiq.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
float.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
floatingpoint.h spdx: initial adoption of licensing ID tags. 2017-11-18 14:26:50 +00:00
frame.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
gdb_machdep.h amd64: Protect the kernel text, data, and BSS by setting the RW/NX bits 2018-03-06 14:28:37 +00:00
ieee.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ieeefp.h
in_cksum.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
intr.h Revert r336773: it removed too much. 2018-07-27 21:25:01 +00:00
kdb.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
limits.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
machdep.h Save VFP state in getcontext(3) on ARM. 2017-10-16 12:53:54 +00:00
md_var.h Revert r336773: it removed too much. 2018-07-27 21:25:01 +00:00
memdev.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
metadata.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
minidump.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
ofw_machdep.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
param.h spdx: initial adoption of licensing ID tags. 2017-11-18 14:26:50 +00:00
pcb.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
pcpu.h arm: Implement cpu_est_clockrate for armv[67] 2018-07-19 11:27:11 +00:00
physmem.h Allow us to read the physmap data into our own array and use this to build 2018-05-24 15:32:49 +00:00
pl310.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
platform.h
platformvar.h Add external PLATFORM access on arm, and use it in the pl310 driver. 2017-07-11 16:30:16 +00:00
pmap_var.h
pmap-v4.h Revert r336773: it removed too much. 2018-07-27 21:25:01 +00:00
pmap-v6.h Add support for pmap_enter(..., psind=1) to the armv6 pmap. In other words, 2018-08-08 16:55:01 +00:00
pmap.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
pmc_mdep.h Revert r336773: it removed too much. 2018-07-27 21:25:01 +00:00
proc.h spdx: initial adoption of licensing ID tags. 2017-11-18 14:26:50 +00:00
profile.h spdx: initial adoption of licensing ID tags. 2017-11-18 14:26:50 +00:00
psl.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
pte-v4.h Revert r336773: it removed too much. 2018-07-27 21:25:01 +00:00
pte-v6.h Fix TEX index acquisition using L2 attributes 2017-07-27 23:14:17 +00:00
ptrace.h Add ptrace operations to fetch and store VFP registers. 2017-09-14 15:03:43 +00:00
reg.h Cleanup structures related to VFP and/or mcontext_t. 2017-03-24 11:46:49 +00:00
reloc.h spdx: initial adoption of licensing ID tags. 2017-11-18 14:26:50 +00:00
resource.h
runq.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
sc_machdep.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
setjmp.h
sf_buf.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
sigframe.h
signal.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
smp.h Only support INTRNG in the SMP code on arm. We already require INTRNG on 2018-07-28 07:54:21 +00:00
stack.h
stdarg.h Introduce an architecture-agnostic <sys/_stdarg.h> to reduce 2017-12-25 20:54:00 +00:00
swi.h
sysarch.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
sysreg.h Add the virtualisation special register definitions. 2017-12-14 13:19:43 +00:00
trap.h
ucontext.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
undefined.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
utrap.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
vdso.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
vfp.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
vm.h sys/arm: further adoption of SPDX licensing ID tags. 2017-11-27 15:04:10 +00:00
vmparam.h Define PHYS_TO_DMAP() and DMAP_TO_PHYS() as panics on the architectures 2018-01-19 22:17:13 +00:00