linux/arch/arm/include/asm
Christoffer Dall 1138245ccf KVM: ARM: User space API for getting/setting co-proc registers
The following three ioctls are implemented:
 -  KVM_GET_REG_LIST
 -  KVM_GET_ONE_REG
 -  KVM_SET_ONE_REG

Now we have a table for all the cp15 registers, we can drive a generic
API.

The register IDs carry the following encoding:

ARM registers are mapped using the lower 32 bits.  The upper 16 of that
is the register group type, or coprocessor number:

ARM 32-bit CP15 registers have the following id bit patterns:
  0x4002 0000 000F <zero:1> <crn:4> <crm:4> <opc1:4> <opc2:3>

ARM 64-bit CP15 registers have the following id bit patterns:
  0x4003 0000 000F <zero:1> <zero:4> <crm:4> <opc1:4> <zero:3>

For futureproofing, we need to tell QEMU about the CP15 registers the
host lets the guest access.

It will need this information to restore a current guest on a future
CPU or perhaps a future KVM which allow some of these to be changed.

We use a separate table for these, as they're only for the userspace API.

Reviewed-by: Will Deacon <will.deacon@arm.com>
Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Christoffer Dall <c.dall@virtualopensystems.com>
2013-01-23 13:29:14 -05:00
..
hardware ARM: arm-soc: SoC updates for 3.8 2012-12-12 12:05:15 -08:00
mach ARM: arm-soc: SoC updates for 3.8 2012-12-12 12:05:15 -08:00
xen xen: arm: implement remap interfaces needed for privcmd mappings. 2012-11-29 14:00:19 +00:00
a.out-core.h ARM: 6798/1: aout-core: zero thread debug registers in a.out core dump 2011-03-10 15:16:29 +00:00
arch_timer.h ARM: 7538/1: delay: add registration mechanism for delay timer sources 2012-09-26 22:57:52 +01:00
asm-offsets.h kbuild: move asm-offsets.h to include/generated 2009-12-12 13:08:14 +01:00
assembler.h ARM: 7599/1: head: Remove boot-time HYP mode check for v5 and below 2012-12-11 00:19:29 +00:00
atomic.h ARM: fix warnings about atomic64_read 2012-07-05 13:06:32 +01:00
barrier.h ARM: kill off arch_is_coherent 2012-10-02 08:58:07 +02:00
bitops.h Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
bug.h Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
bugs.h
cache.h ARM: implement support for read-mostly sections 2010-12-05 08:39:36 +00:00
cacheflush.h ARM: mm: implement LoUIS API for cache maintenance ops 2012-09-25 11:20:25 +01:00
cachetype.h ARM: 7062/1: cache: detect PIPT I-cache using CTR 2011-10-17 09:13:41 +01:00
checksum.h
clkdev.h ARM: Consolidate the clkdev header files 2011-07-19 18:09:45 +02:00
cmpxchg.h ARM: 7404/1: cmpxchg64: use atomic64 and local64 routines for cmpxchg64 2012-04-28 17:32:44 +01:00
compiler.h Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
cp15.h Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
cpu.h ARM: kernel: add MIDR to per-CPU information data 2012-11-19 14:51:11 +00:00
cpuidle.h cpuidle: Add common time keeping and irq enabling 2012-03-21 01:59:40 -04:00
cputype.h ARM: Define CPU part numbers and implementors 2013-01-11 14:56:30 +00:00
cti.h ARM: cti: fix manipulation of debug lock registers 2012-11-15 21:39:34 +00:00
delay.h ARM: 7538/1: delay: add registration mechanism for delay timer sources 2012-09-26 22:57:52 +01:00
device.h ARM: dma-mapping: add support for IOMMU mapper 2012-05-21 15:06:23 +02:00
div64.h Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
dma-contiguous.h ARM: integrate CMA with DMA-mapping subsystem 2012-05-21 15:09:38 +02:00
dma-iommu.h ARM: dma-mapping: add support for IOMMU mapper 2012-05-21 15:06:23 +02:00
dma-mapping.h IOMMU Updates for Linux v3.8 2012-12-20 10:07:25 -08:00
dma.h Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
domain.h ARM: fix set_domain() macro 2012-07-05 09:50:55 +01:00
ecard.h ARM: io: ecard: move ioaddr() inside __ecard_address 2011-08-17 08:44:16 +01:00
edac.h ARM: 7201/1: add EDAC atomic_scrub function 2011-12-11 08:35:50 +00:00
elf.h ARM: 7294/1: vectors: use gate_vma for vectors user mapping 2012-03-24 09:38:51 +00:00
entry-macro-multi.S ARM: gic: consolidate PPI handling 2011-10-23 13:32:29 +01:00
exception.h ARM: 7115/4: move __exception and friends to asm/exception.h 2011-10-17 09:02:44 +01:00
fb.h
fiq.h ARM: 6940/1: fiq: Briefly document driver responsibilities for suspend/resume 2011-05-26 10:31:06 +01:00
fixmap.h [ARM] fixmap support 2009-03-15 21:01:20 -04:00
flat.h ARM: binfmt_flat: unused variable 'persistent' 2012-10-09 20:29:06 +02:00
floppy.h
fncpy.h ARM: 6640/1: Thumb-2: Symbol manipulation macros for function body copying 2011-01-27 11:48:58 +00:00
fpstate.h Fix common misspellings 2011-03-31 11:26:23 -03:00
ftrace.h ARM: 6319/1: ftrace: add Thumb-2 support to dynamic ftrace 2010-09-02 15:28:43 +01:00
futex.h ARM: 7425/1: extable: ensure fixup entries are 4-byte aligned 2012-06-16 16:30:25 +01:00
glue-cache.h Merge branch 'fixes' into for-linus 2012-10-11 10:55:04 +01:00
glue-df.h ARM: Remove support for ARMv3 ARM610 and ARM710 CPUs 2012-05-05 05:50:50 +01:00
glue-pf.h ARM: move cache/processor/fault glue to separate include files 2011-02-12 11:52:21 +00:00
glue-proc.h ARM: Remove support for ARMv3 ARM610 and ARM710 CPUs 2012-05-05 05:50:50 +01:00
glue.h Fix common misspellings 2011-03-31 11:26:23 -03:00
gpio.h ARM: make mach/gpio.h headers optional 2012-09-14 09:21:59 -05:00
hardirq.h ARM: 7536/1: smp: Formalize an IPI for wakeup 2012-09-19 21:52:08 +01:00
highmem.h highmem: kill all __kmap_atomic() 2012-03-20 21:48:30 +08:00
hw_breakpoint.h ARM: hw_breakpoint: use CRn as argument for debug reg accessor macros 2012-11-09 11:47:06 +00:00
hw_irq.h arm: dove: Use proper irq accessor functions 2011-03-29 14:47:57 +02:00
hwcap.h UAPI: (Scripted) Disintegrate arch/arm/include/asm 2012-10-12 13:05:52 +01:00
hypervisor.h arm: initial Xen support 2012-09-14 13:53:39 +00:00
ide.h
idmap.h ARM: Section based HYP idmap 2013-01-23 13:29:09 -05:00
io.h Merge 3.7-rc6 into char-misc-next 2012-11-16 18:21:36 -08:00
irq.h ARM: only include mach/irqs.h for !SPARSE_IRQ 2012-01-30 13:24:37 -06:00
irqflags.h Fix IRQ flag handling naming 2010-10-07 14:08:55 +01:00
jump_label.h ARM: 7386/1: jump_label: fixup for rename to static_key 2012-04-15 22:00:31 +01:00
Kbuild Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-12-12 11:30:02 -08:00
kexec.h [ARM] add machine-specific hook to machine_kexec 2011-03-03 16:26:55 -05:00
kgdb.h kgdb,arm: fix register dump 2010-10-29 13:14:40 -05:00
kmap_types.h arm: remove km_type definitions 2012-07-24 15:27:28 +08:00
kprobes.h Kernel: Audit Support For The ARM Platform 2012-01-17 16:17:01 -05:00
kvm_arm.h KVM: ARM: Emulation framework and CP15 emulation 2013-01-23 13:29:13 -05:00
kvm_asm.h KVM: ARM: Memory virtualization setup 2013-01-23 13:29:11 -05:00
kvm_coproc.h KVM: ARM: User space API for getting/setting co-proc registers 2013-01-23 13:29:14 -05:00
kvm_emulate.h KVM: ARM: Emulation framework and CP15 emulation 2013-01-23 13:29:13 -05:00
kvm_host.h KVM: ARM: User space API for getting/setting co-proc registers 2013-01-23 13:29:14 -05:00
kvm_mmu.h KVM: ARM: Memory virtualization setup 2013-01-23 13:29:11 -05:00
limits.h
linkage.h
localtimer.h ARM: local timers: make the runtime registration interface mandatory 2012-03-13 13:45:55 +00:00
mach-types.h arm: move mach-types to include/generated 2009-12-12 13:08:14 +01:00
mc146818rtc.h ARM: mc146818rtc: remove unnecessary include of mach/irqs.h 2012-01-25 20:37:45 -06:00
memblock.h ARM: Add arm_memblock_steal() to allocate memory away from the kernel 2012-01-13 15:02:35 +00:00
memory.h ARM: kill off arch_is_coherent 2012-10-02 08:58:07 +02:00
mmu_context.h ARM: 7582/2: rename kvm_seq to vmalloc_seq so to avoid confusion with KVM 2012-11-26 12:23:53 +00:00
mmu.h ARM: 7582/2: rename kvm_seq to vmalloc_seq so to avoid confusion with KVM 2012-11-26 12:23:53 +00:00
module.h Make most arch asm/module.h files use asm-generic/module.h 2012-09-28 14:31:03 +09:30
mtd-xip.h [ARM] move asm/xip.h's mach/hardware.h include to mach/xip.h 2008-12-14 13:22:51 +00:00
mutex.h ARM: 7495/1: mutex: use generic atomic_dec-based implementation for ARMv6+ 2012-08-25 09:22:31 +01:00
nwflash.h
opcodes-virt.h ARM: opcodes: add __ERET/__MSR_ELR_HYP instruction encoding 2012-09-19 08:32:49 +01:00
opcodes.h ARM: 7511/1: opcodes: Opcode definitions for the Virtualization Extensions 2012-09-15 21:26:00 +01:00
outercache.h ARM: 7114/1: cache-l2x0: add resume entry for l2 in secure mode 2011-10-17 09:11:51 +01:00
page-nommu.h nommu: Remove the memory_start/end variables from ARM page-nommu.h 2009-07-24 12:35:01 +01:00
page.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
pci.h PCI: collapse pcibios_resource_to_bus 2012-02-23 20:19:04 -07:00
percpu.h ARM: 7587/1: implement optimized percpu variable access 2012-12-03 11:16:36 +00:00
perf_event.h ARM: 7584/1: perf: fix link error when CONFIG_HW_PERF_EVENTS is not selected 2012-11-23 13:01:30 +00:00
pgalloc.h ARM: LPAE: Page table maintenance for the 3-level format 2011-12-08 10:30:39 +00:00
pgtable-2level-hwdef.h ARM: 7077/1: LPAE: Use a mask for physical addresses in page table entries 2011-10-06 15:40:06 +01:00
pgtable-2level-types.h ARM: 7076/1: LPAE: Add (pte|pmd)val_t type definitions as u32 2011-10-06 15:40:05 +01:00
pgtable-2level.h ARM: mm: introduce present, faulting entries for PAGE_NONE 2012-11-09 14:13:20 +00:00
pgtable-3level-hwdef.h KVM: ARM: Hypervisor initialization 2013-01-23 13:29:10 -05:00
pgtable-3level-types.h ARM: LPAE: Introduce the 3-level page table format definitions 2011-12-08 10:30:39 +00:00
pgtable-3level.h ARM: Add page table and page defines needed by KVM 2013-01-23 13:29:08 -05:00
pgtable-hwdef.h ARM: LPAE: Introduce the 3-level page table format definitions 2011-12-08 10:30:39 +00:00
pgtable-nommu.h Remove remaining bits of io_remap_page_range() 2012-03-23 16:58:31 -07:00
pgtable.h ARM: Add page table and page defines needed by KVM 2013-01-23 13:29:08 -05:00
pmu.h ARM: perf: consistently use arm_pmu->name for PMU name 2012-11-09 11:37:26 +00:00
proc-fns.h ARM: LPAE: Page table maintenance for the 3-level format 2011-12-08 10:30:39 +00:00
processor.h arm: split ret_from_fork, simplify kernel_thread() [based on patch by rmk] 2012-09-30 22:21:36 -04:00
procinfo.h
prom.h Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-12-12 11:30:02 -08:00
ptrace.h UAPI: (Scripted) Disintegrate arch/arm/include/asm 2012-10-12 13:05:52 +01:00
scatterlist.h ARM: Allow SoCs to enable scatterlist chaining 2011-06-02 11:16:22 +01:00
sched_clock.h ARM: 7565/1: sched: stop sched_clock() during suspend 2012-10-29 10:02:49 +00:00
seccomp.h ARM: SECCOMP support 2010-10-01 22:32:18 -04:00
setup.h UAPI: (Scripted) Disintegrate arch/arm/include/asm 2012-10-12 13:05:52 +01:00
shmparam.h
signal.h unify default ptrace_signal_deliver 2012-11-29 00:01:23 -05:00
smp_plat.h ARM: kernel: add logical mappings look-up 2012-11-19 15:44:34 +00:00
smp_scu.h ARM: pm: add function to set WFI low-power mode for SMP CPUs 2011-02-11 12:29:18 +00:00
smp_twd.h ARM: smp_twd: remove old local timer interface 2012-03-13 13:45:54 +00:00
smp.h ARM: 7571/1: SMP: add function arch_send_wakeup_ipi_mask() 2012-11-13 11:47:40 +00:00
sparsemem.h
spinlock_types.h ARM: 7446/1: spinlock: use ticket algorithm for ARMv6+ locking implementation 2012-07-09 17:41:10 +01:00
spinlock.h ARM: 7447/1: rwlocks: remove unused branch labels from trylock routines 2012-07-09 17:41:10 +01:00
stackprotector.h ARM: initial stack protector (-fstack-protector) support 2010-06-14 21:31:00 -04:00
stacktrace.h [ARM] 5382/1: unwind: Reorganise the stacktrace support 2009-02-12 13:21:17 +00:00
string.h
suspend.h ARM: pm: preallocate a page table for suspend/resume 2011-09-20 23:33:36 +01:00
swab.h UAPI: (Scripted) Disintegrate arch/arm/include/asm 2012-10-12 13:05:52 +01:00
switch_to.h Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
sync_bitops.h xen/arm: sync_bitops 2012-08-08 16:34:01 +00:00
syscall.h ARM: 7577/1: arch/add syscall_get_arch 2012-11-19 14:14:17 +00:00
system_info.h Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
system_misc.h Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
system.h the only place that needs to include asm/exec.h is linux/binfmts.h 2012-09-20 09:51:13 -04:00
tcm.h ARM: 6985/1: export functions to determine the presence of I/DTCM 2011-07-06 20:49:45 +01:00
therm.h
thread_info.h ARM: 7578/1: arch/move secure_computing into trace 2012-11-19 14:14:17 +00:00
thread_notify.h ARM: 6867/1: Introduce THREAD_NOTIFY_COPY for copy_thread() hooks 2011-04-10 21:13:36 +01:00
timex.h Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-10-07 21:20:57 +09:00
tlb.h ARM: 7503/1: mm: only flush both pmd entries for classic MMU 2012-08-25 09:15:57 +01:00
tlbflush.h ARM: Remove support for ARMv3 ARM610 and ARM710 CPUs 2012-05-05 05:50:50 +01:00
tls.h ARM: 7403/1: tls: remove covert channel via TPIDRURW 2012-04-28 11:01:30 +01:00
topology.h ARM: 7182/1: ARM cpu topology: fix warning 2011-11-30 23:55:21 +00:00
traps.h ARM: earlier initialization of vectors page 2012-01-23 10:24:11 +00:00
uaccess.h ARM: warnings in arch/arm/include/asm/uaccess.h 2012-10-09 20:29:07 +02:00
ucontext.h Fix common misspellings 2011-03-31 11:26:23 -03:00
unified.h ARM: make BSYM macro assembly only 2012-01-16 08:56:25 -06:00
unistd.h Bury the conditionals from kernel_thread/kernel_execve series 2012-12-19 18:07:38 -05:00
unwind.h ARM: 7187/1: fix unwinding for XIP kernels 2011-12-06 11:16:13 +00:00
user.h ARM: 6798/1: aout-core: zero thread debug registers in a.out core dump 2011-03-10 15:16:29 +00:00
vfp.h
vfpmacros.h ARM: 7566/1: vfp: fix save and restore when running on pre-VFPv3 and CONFIG_VFPv3 set 2012-10-29 10:04:05 +00:00
vga.h ARM: set vga memory base at run-time 2011-07-12 11:19:29 -05:00
virt.h ARM: virt: Add boot-time diagnostics 2012-09-19 08:32:52 +01:00
word-at-a-time.h ARM: 7450/1: dcache: select DCACHE_WORD_ACCESS for little-endian ARMv6+ CPUs 2012-07-09 17:41:11 +01:00
xor.h