linux/arch/arm64/kernel
Geoff Levand ad72e59ff2 arm64: hyp/kvm: Make hyp-stub extensible
The existing arm64 hcall implementations are limited in that they only
allow for two distinct hcalls; with the x0 register either zero or not
zero.  Also, the API of the hyp-stub exception vector routines and the
KVM exception vector routines differ; hyp-stub uses a non-zero value in
x0 to implement __hyp_set_vectors, whereas KVM uses it to implement
kvm_call_hyp.

To allow for additional hcalls to be defined and to make the arm64 hcall
API more consistent across exception vector routines, change the hcall
implementations to reserve all x0 values below 0xfff for hcalls such
as {s,g}et_vectors().

Define two new preprocessor macros HVC_GET_VECTORS, and HVC_SET_VECTORS
to be used as hcall type specifiers and convert the existing
__hyp_get_vectors() and __hyp_set_vectors() routines to use these new
macros when executing an HVC call.  Also, change the corresponding
hyp-stub and KVM el1_sync exception vector routines to use these new
macros.

Signed-off-by: Geoff Levand <geoff@infradead.org>
[Merged two hcall patches, moved immediate value from esr to x0, use lr
 as a scratch register, changed limit to 0xfff]
Signed-off-by: James Morse <james.morse@arm.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2016-04-28 12:05:46 +01:00
..
vdso arm64: vdso: Mark vDSO code as read-only 2016-02-16 18:20:23 +00:00
.gitignore
acpi.c arm64: acpi: add acpi=on cmdline option to prefer ACPI boot over DT 2016-04-26 14:37:41 +01:00
acpi_parking_protocol.c arm64: kernel: acpi: fix ioremap in ACPI parking protocol cpu_postboot 2016-02-26 15:39:52 +00:00
alternative.c
arm64ksyms.c
armv8_deprecated.c arm64: switch to relative exception tables 2016-02-24 14:57:26 +00:00
asm-offsets.c arm64 updates for 4.6: 2016-03-17 20:03:47 -07:00
cacheinfo.c
cpu_errata.c arm64: Verify CPU errata work arounds on hotplugged CPU 2016-04-25 15:14:03 +01:00
cpu_ops.c arm64: kernel: implement ACPI parking protocol 2016-02-16 15:12:32 +00:00
cpufeature.c arm64: Verify CPU errata work arounds on hotplugged CPU 2016-04-25 15:14:03 +01:00
cpuidle.c arm64: cpuidle: make arm_cpuidle_suspend() a bit more efficient 2016-04-13 14:49:23 +01:00
cpuinfo.c arm64: cpufeature: Check availability of AArch32 2016-04-20 12:22:42 +01:00
debug-monitors.c arm64/debug: Remove superfluous SMP function call 2016-04-14 18:13:03 +01:00
efi-entry.S arm64: move early boot code to the .init segment 2016-04-14 18:11:30 +01:00
efi.c
entry-fpsimd.S
entry-ftrace.S
entry.S arm64/kernel: fix incorrect EL0 check in inv_entry macro 2016-03-21 12:05:34 +00:00
entry32.S
fpsimd.c arm64: Fix misspellings in comments. 2016-03-04 18:19:17 +00:00
ftrace.c
head.S arm64: relocatable: deal with physically misaligned kernel images 2016-04-26 12:23:28 +01:00
hw_breakpoint.c arm64: hw-breakpoint: Remove superfluous SMP function call 2016-04-14 18:13:03 +01:00
hyp-stub.S arm64: hyp/kvm: Make hyp-stub extensible 2016-04-28 12:05:46 +01:00
image.h arm64: don't map TEXT_OFFSET bytes below the kernel if we can avoid it 2016-04-26 12:23:25 +01:00
insn.c arm64: insn: avoid virt_to_page() translations on core kernel symbols 2016-04-14 16:31:49 +01:00
io.c
irq.c
jump_label.c
kaslr.c arm64: relocatable: deal with physically misaligned kernel images 2016-04-26 12:23:28 +01:00
kgdb.c arm64: Fix misspellings in comments. 2016-03-04 18:19:17 +00:00
kuser32.S
Makefile arm64: add support for kernel ASLR 2016-02-24 14:57:27 +00:00
module-plts.c arm64: add support for module PLTs 2016-02-24 14:57:24 +00:00
module.c arm64: add support for kernel ASLR 2016-02-24 14:57:27 +00:00
module.lds arm64: add support for module PLTs 2016-02-24 14:57:24 +00:00
paravirt.c
pci.c arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
perf_callchain.c
perf_event.c arm64: perf: Move PMU register related defines to asm/perf_event.h 2016-03-29 16:04:57 +01:00
perf_regs.c
process.c arm64: Remove the get_thread_info() function 2016-02-18 17:27:05 +00:00
psci.c ARM: 8511/1: ARM64: kernel: PSCI: move PSCI idle management code to drivers/firmware 2016-02-11 15:33:38 +00:00
ptrace.c arm64: Rework valid_user_regs 2016-03-02 15:49:28 +00:00
return_address.c
setup.c arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
signal.c arm64: Rework valid_user_regs 2016-03-02 15:49:28 +00:00
signal32.c arm64: Fix misspellings in comments. 2016-03-04 18:19:17 +00:00
sleep.S arm64: kasan: clear stale stack poison 2016-03-09 15:43:42 -08:00
smccc-call.S
smp.c arm64: Fix behavior of maxcpus=N 2016-04-25 15:14:09 +01:00
smp_spin_table.c
stacktrace.c arm64: make irq_stack_ptr more robust 2016-02-12 15:53:51 +00:00
suspend.c arm64: unify idmap removal 2016-02-16 15:10:44 +00:00
sys.c arm64: compat: Check for AArch32 state 2016-04-20 12:22:42 +01:00
sys32.c
sys_compat.c
time.c
topology.c
trace-events-emulation.h
traps.c arm64: make irq_stack_ptr more robust 2016-02-12 15:53:51 +00:00
vdso.c arm64: vdso: avoid virt_to_page() translations on kernel symbols 2016-04-14 16:31:49 +01:00
vmlinux.lds.S arm64: kernel: perform relocation processing from ID map 2016-04-26 12:21:54 +01:00