1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-16 15:11:52 +00:00
freebsd/sys/arm
Ian Lepore b07d0cbce3 Add cpu_l2cache_drain_writebuf(), use it to implement generic_bs_barrier().
On modern ARM SoCs the L2 cache controller sits between the CPU and the
AXI bus, and most on-chip memory-mapped devices are on the AXI bus.  We
map the device registers using the 'Device' memory attribute, which means
the memory is not cached, but writes to it are buffered.  Ensuring that a
write has made it all the way to a device may require that the L2
controller take some action.

There is currently only one implementation of the new function, for the
PL310 cache controller.  It invokes a function that the controller
manual calls "cache sync" but it actually has nothing to do with cache at
all, it triggers a drain of all pending store buffer writes and it blocks
until they complete.

The sheeva and xscale L2 controllers (which predate the concept of Device
memory) don't seem to have a corresponding function.  It appears that the
standard armv5 drain_writebuf function includes draining all the way
through the L2 controller.
2014-05-11 04:24:57 +00:00
..
allwinner Switch to my freebsd.org emal address in copyright. 2014-03-25 08:31:47 +00:00
arm Add cpu_l2cache_drain_writebuf(), use it to implement generic_bs_barrier(). 2014-05-11 04:24:57 +00:00
at91 When mapping device memory, use PTE_DEVICE rather than PTE_NOCACHE. 2014-05-10 20:03:03 +00:00
broadcom/bcm2835 Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c 2014-03-10 18:10:09 +00:00
cavium/cns11xx When mapping device memory, use PTE_DEVICE rather than PTE_NOCACHE. 2014-05-10 20:03:03 +00:00
conf Enable SMP for Exynos-based platforms (i.e. Chromebook) 2014-05-11 04:18:51 +00:00
freescale Enable PL310 power-saving modes and tune the cache ram latencies for imx6. 2014-05-06 14:26:24 +00:00
include Add cpu_l2cache_drain_writebuf(), use it to implement generic_bs_barrier(). 2014-05-11 04:24:57 +00:00
lpc Rename platform_gpio_init to be SoC specific 2014-05-10 21:30:19 +00:00
mv Rename platform_gpio_init to be platform specific, and make it static as 2014-05-10 20:31:05 +00:00
rockchip Rename platform_gpio_init to be SoC specific, and make it static as it's 2014-05-10 20:26:49 +00:00
s3c2xx0 When mapping device memory, use PTE_DEVICE rather than PTE_NOCACHE. 2014-05-10 20:03:03 +00:00
samsung/exynos Correct the end address of the video frame buffer. 2014-04-05 16:38:27 +00:00
tegra Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c 2014-03-10 18:10:09 +00:00
ti Move duplicated code to print l2 cache config into the common code. 2014-04-27 23:47:38 +00:00
versatile Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c 2014-03-10 18:10:09 +00:00
xilinx Use edge-triggered interrupts rather than polling loops to avoid missing 2014-05-08 17:20:45 +00:00
xscale When mapping device memory, use PTE_DEVICE rather than PTE_NOCACHE. 2014-05-10 20:03:03 +00:00