]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Support RISC-V implementations that do not manage the A and D bits
authorRuslan Bukin <br@FreeBSD.org>
Thu, 18 Oct 2018 15:08:14 +0000 (15:08 +0000)
committerRuslan Bukin <br@FreeBSD.org>
Thu, 18 Oct 2018 15:08:14 +0000 (15:08 +0000)
commit53c6ad1d6262c24bb263f5509183b167132e0970
treeed1fe0d8a97e5e9658a37086e75ceff626dbf2fa
parent4520f617c9ad43622b21925c17ad6ae1f04718d0
Support RISC-V implementations that do not manage the A and D bits
(e.g. RocketChip, lowRISC and derivatives).

RISC-V page table entries support A (accessed) and D (dirty) bits. The
spec makes hardware support for these bits optional. Implementations that
do not manage these bits in hardware raise page faults for accesses to a
valid page without A set and writes to a writable page without D set.
Check for these types of faults when handling a page fault and fixup the
PTE without calling vm_fault if they occur.

Reviewed by: jhb, markj
Approved by: re (gjb)
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D17424
sys/arm/arm/pl310.c
sys/arm/conf/GENERIC
sys/arm/conf/GENERIC-MMCCAM
sys/arm/conf/SOCDK
sys/dts/arm/socfpga_arria10_socdk_sdmmc.dts
sys/riscv/include/pmap.h
sys/riscv/include/pte.h
sys/riscv/riscv/locore.S
sys/riscv/riscv/pmap.c
sys/riscv/riscv/trap.c