opnsense-src/sys/arm/include
Ian Lepore 686450c898 Import ARM_INTRNG, the "next generation" interrupt architecture for arm
and armv6 architecures.  The primary enhancement over the old design is
support for hierarchical interrupt controllers (such as a gpio driver
which can receive interrupts from a root PIC and act as a PIC itself for
clients interested in handling a change of gpio pin state as an
interrupt).  The new code also provides an infrastructure for mapping
interrupts described in metadata in the form of a "controller reference
plus interrupt number" tuple into the simple "0-n" flat numeric space
understood by rman and the bus resource mechanisms.

Use of the new code is enabled by setting the ARM_INTRNG option, and by
making a few simple changes to the platform's support code.  In addition
each existing PIC driver needs changes to be ready for INTRNG; this commit
contains the changes for the arm/gic driver, which most armv6 SoCs use, but
it does not enable the new code yet on any platform.

This project has been many years in the making, starting as a GSoC project
by Jakub Klama (jceel@) in 2012.  That didn't get committed right away and
the source base evolved out from under it to some degree.  In 2014 I rebased
the diffs to then -current and did some enhancements in the area of mapping
interrupt numbers and storing associated fdt data, then the project went
cold again for a while.  Eventually Svata Kraus took that work in progress
and did another big round of work on it, removing most of the remaining
rough edges.  Finally I took that and made one more pass through it, mostly
disabling the "INTR_SOLO" feature for now, pending further design
discussions on how to most efficiently dispatch a pending interrupt through
more than one layer of PIC.  The current code with the INTR_SOLO feature
disabled uses approximate 100 extra cpu cycles for each cascaded PIC the
interrupt has to be passed to, so what's left to do is about efficiency, not
correct operation.

Differential Revision:	https://reviews.freebsd.org/D2047
2015-10-18 18:26:19 +00:00
..
_align.h Get rid of the _NO_NAMESPACE_POLLUTION kludge by creating an 2009-09-08 20:45:40 +00:00
_bus.h Remove errant % in license comment. 2008-02-26 11:45:32 +00:00
_inttypes.h The NetBSD Foundation has granted permission to remove clauses 3 and 4. 2010-02-16 21:59:17 +00:00
_limits.h Fix types of some values in machine/_limits.h. 2011-01-08 11:13:34 +00:00
_stdint.h Make the wchar_t type machine dependent. 2012-06-24 04:15:58 +00:00
_types.h We only support the ARM EABI in head, remove the check on __ARM_EABI__. 2015-05-31 10:51:06 +00:00
acle-compat.h From https://sourceware.org/ml/newlib/2014/msg00113.html 2014-08-14 04:20:13 +00:00
armreg.h The Broadcom BCM56060 chip has a Cortex-A9R4 core. 2015-08-13 14:50:11 +00:00
asm.h Add missing stack unwind information to several assembly functions on 2015-10-04 09:39:40 +00:00
asmacros.h opt_global.h is included automatically in the build. No need to 2014-11-18 17:06:56 +00:00
at91_gpio.h Add userland access to at91 gpio functionality via ioctl calls. Also, 2013-03-29 19:52:57 +00:00
atags.h Defines for parsing linux ATAGs lists. 2012-06-14 14:38:55 +00:00
atomic-v4.h FreeBSD does not support SMP on ARMv5. Since processor is always 2015-10-02 13:21:08 +00:00
atomic-v6.h FreeBSD does not support SMP on ARMv5. Since processor is always 2015-10-02 13:21:08 +00:00
atomic.h FreeBSD does not support SMP on ARMv5. Since processor is always 2015-10-02 13:21:08 +00:00
blockio.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
board.h Create a generic way to support multiple boards within an 2012-07-07 05:02:39 +00:00
bus.h Micro-optimize the new arm inline bus_space implementation by grouping all 2015-01-21 20:12:35 +00:00
bus_dma.h The NetBSD Foundation has granted permission to remove clauses 3 and 4. 2010-02-16 21:59:17 +00:00
clock.h First part of a little cleanup in the calendar/timezone/RTC handling. 2006-10-02 12:59:59 +00:00
counter.h Use atomic_load/store_64() in the arm implementation of counter(9), and 2014-08-01 23:06:38 +00:00
cpu-v6.h Add more cp15_ functions, and use them in cpufunc.c where possible. 2015-05-24 12:12:01 +00:00
cpu.h Move the inclusion of cpu-v6.h inside the #ifdef _KERNEL block, so that 2015-01-08 03:59:03 +00:00
cpuconf.h Remove support for CPU_XSCALE_80200. None of our configs support it, and 2015-03-30 09:29:45 +00:00
cpufunc.h It appears to be armv7_sleep is a duplication of armv7_cpu_sleep. 2015-05-15 00:39:51 +00:00
cpuinfo.h Add minimum cache line sizes to struct cpuinfo, use them in the new cache 2015-03-09 14:46:10 +00:00
db_machdep.h Cleanup up ARM *frame structures... 2014-12-24 18:54:31 +00:00
devmap.h Fix a comment s/initarm_/platform_/ 2014-05-17 11:29:44 +00:00
disassem.h Catchup with new prototype for db_printf(). 2010-05-14 00:00:19 +00:00
dump.h Factor out duplicated code from dumpsys() on each architecture into generic 2015-01-07 01:01:39 +00:00
elf.h Export the eflags field from the elf header. This allows better 2015-05-22 20:50:35 +00:00
endian.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
exec.h
fdt.h Import ARM_INTRNG, the "next generation" interrupt architecture for arm 2015-10-18 18:26:19 +00:00
fiq.h
float.h Rationalize BSD license on sys/*/include/float.h 2015-08-05 17:05:35 +00:00
floatingpoint.h
fp.h VFP fixes/cleanups for ARM11: 2014-03-29 14:35:36 +00:00
frame.h Cleanup up ARM *frame structures... 2014-12-24 18:54:31 +00:00
gdb_machdep.h Add remote GDB bits for arm. 2006-07-14 00:50:51 +00:00
ieee.h On ARM EABI double precision floating point values are stored in the 2013-09-07 14:04:10 +00:00
ieeefp.h People porting FreeBSD to new architectures ought not have to 2011-10-21 06:41:46 +00:00
in_cksum.h Delete stray clause 3 and renumber. 2015-03-13 02:49:55 +00:00
intr.h Import ARM_INTRNG, the "next generation" interrupt architecture for arm 2015-10-18 18:26:19 +00:00
katelib.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
kdb.h Remove cpu_idcache_wbinv_all() from kdb_cpu_trap(), it's no longer needed. 2014-04-27 18:12:55 +00:00
limits.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
machdep.h New pmap code for armv6. Disabled by default, option ARM_NEW_PMAP enables it. 2015-03-26 21:13:53 +00:00
md_var.h A follow-up to r288492. In fact, revert the mentioned commit for 2015-10-07 09:12:49 +00:00
memdev.h Add reader/writer lock around mem_range_attr_get() and mem_range_attr_set(). 2011-01-17 22:58:28 +00:00
metadata.h Add support to the efi boot1 and loader for 32-bit ARM. This will be used 2015-04-06 15:50:20 +00:00
minidump.h Support kernel crash mini dumps on ARM architecture. 2008-11-06 16:20:27 +00:00
ofw_machdep.h Retire machine/fdt.h as a header used by MI code, as its function is now 2014-01-05 18:46:58 +00:00
param.h ARM userspace accessors, e.g. {s,f}uword(9), copy{in,out}(9), 2015-10-15 17:40:39 +00:00
pcb.h New pmap code for armv6. Disabled by default, option ARM_NEW_PMAP enables it. 2015-03-26 21:13:53 +00:00
pcpu.h Add two new pmap functions: 2015-08-04 19:46:13 +00:00
physmem.h Give the fdt helper routines static linkage since no global definition 2014-02-17 20:04:57 +00:00
pl310.h Correct PL310_POWER_CTRL offset 2015-05-07 16:56:20 +00:00
platform.h When the initarm_* routines were renamed to platform_* and moved to their 2014-08-17 02:56:58 +00:00
platformvar.h Add FDT_PLATFORM_DEF2 for when there are multiple platforms needing to use 2014-05-17 18:02:46 +00:00
pmap-v6.h Retire pmap_lazyfix(). This function only existed in the new armv6 pmap 2015-05-11 19:55:01 +00:00
pmap.h Add a pmap_kremove_device() to undo mappings made with pmap_kenter_device(). 2015-04-10 13:26:35 +00:00
pmap_var.h New pmap code for armv6. Disabled by default, option ARM_NEW_PMAP enables it. 2015-03-26 21:13:53 +00:00
pmc_mdep.h Rather than defining our own magic checks here use INKERNEL() for 2015-03-27 08:47:16 +00:00
proc.h Typo. 2015-08-20 13:37:08 +00:00
profile.h Stop using load-multiple with lr and pc. This has been deprecated in ARMv7 2015-01-31 19:55:12 +00:00
psl.h Fix arm build. 2014-01-06 17:16:27 +00:00
pte-v6.h New pmap code for armv6. Disabled by default, option ARM_NEW_PMAP enables it. 2015-03-26 21:13:53 +00:00
pte.h New pmap code for armv6. Disabled by default, option ARM_NEW_PMAP enables it. 2015-03-26 21:13:53 +00:00
ptrace.h
reg.h
reloc.h
resource.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
runq.h
sc_machdep.h Piggyback MIPS changes and add ARM syscons support for devices with 2012-08-25 23:59:31 +00:00
setjmp.h Merge in changes from NetBSD: 2013-06-08 07:16:22 +00:00
sf_buf.h New pmap code for armv6. Disabled by default, option ARM_NEW_PMAP enables it. 2015-03-26 21:13:53 +00:00
sigframe.h
signal.h Don't use an empty struct. 2013-03-11 10:56:46 +00:00
smp.h Import ARM_INTRNG, the "next generation" interrupt architecture for arm 2015-10-18 18:26:19 +00:00
stack.h Allow the ARM unwinder to work through modules. This will be used to add 2015-02-19 12:06:57 +00:00
stdarg.h Use __builtin_va_start instead of __builtin_stdarg_start. GCC4 obsoletes 2006-09-21 01:37:02 +00:00
swi.h
sysarch.h Remove #include <machine/asmacros.h> from files that don't need it. 2014-03-11 22:47:04 +00:00
sysreg.h Add more cp15_ functions, and use them in cpufunc.c where possible. 2015-05-24 12:12:01 +00:00
trap.h
ucontext.h Remove NetBSD implementation details not relevant to FreeBSD. 2014-05-23 00:21:02 +00:00
undefined.h Remove #include <machine/frame.h> from all the arm code that doesn't 2013-10-27 01:34:10 +00:00
utrap.h
vdso.h Implement mechanism to export some kernel timekeeping data to 2012-06-22 07:06:40 +00:00
vfp.h Add more flags for the fpexc register from the ARM1176JZF-S Manual 2014-03-29 10:11:19 +00:00
vm.h New pmap code for armv6. Disabled by default, option ARM_NEW_PMAP enables it. 2015-03-26 21:13:53 +00:00
vmparam.h Retire VM_FREEPOOL_CACHE as the next step in eliminating PG_CACHE pages. 2015-06-08 04:59:32 +00:00