aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/kernel/entry.S
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-07-27 14:16:05 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-07-27 14:16:05 -0400
commite831101a73fbc8339ef1d1909dad3ef64f089e70 (patch)
treec764ca5cb72cdf24ff26357dd12e16f9c7235627 /arch/arm64/kernel/entry.S
parentf9abf53af4c78b08da44d841d23308c4f4d74c83 (diff)
parentfd6380b75065fd2ff51b5f7cbbe6be77d71ea9c7 (diff)
Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
Pull arm64 updates from Catalin Marinas: - Kexec support for arm64 - Kprobes support - Expose MIDR_EL1 and REVIDR_EL1 CPU identification registers to sysfs - Trapping of user space cache maintenance operations and emulation in the kernel (CPU errata workaround) - Clean-up of the early page tables creation (kernel linear mapping, EFI run-time maps) to avoid splitting larger blocks (e.g. pmds) into smaller ones (e.g. ptes) - VDSO support for CLOCK_MONOTONIC_RAW in clock_gettime() - ARCH_HAS_KCOV enabled for arm64 - Optimise IP checksum helpers - SWIOTLB optimisation to only allocate/initialise the buffer if the available RAM is beyond the 32-bit mask - Properly handle the "nosmp" command line argument - Fix for the initialisation of the CPU debug state during early boot - vdso-offsets.h build dependency workaround - Build fix when RANDOMIZE_BASE is enabled with MODULES off * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (64 commits) arm64: arm: Fix-up the removal of the arm64 regs_query_register_name() prototype arm64: Only select ARM64_MODULE_PLTS if MODULES=y arm64: mm: run pgtable_page_ctor() on non-swapper translation table pages arm64: mm: make create_mapping_late() non-allocating arm64: Honor nosmp kernel command line option arm64: Fix incorrect per-cpu usage for boot CPU arm64: kprobes: Add KASAN instrumentation around stack accesses arm64: kprobes: Cleanup jprobe_return arm64: kprobes: Fix overflow when saving stack arm64: kprobes: WARN if attempting to step with PSTATE.D=1 arm64: debug: remove unused local_dbg_{enable, disable} macros arm64: debug: remove redundant spsr manipulation arm64: debug: unmask PSTATE.D earlier arm64: localise Image objcopy flags arm64: ptrace: remove extra define for CPSR's E bit kprobes: Add arm64 case in kprobe example module arm64: Add kernel return probes support (kretprobes) arm64: Add trampoline code for kretprobes arm64: kprobes instruction simulation support arm64: Treat all entry code as non-kprobe-able ...
Diffstat (limited to 'arch/arm64/kernel/entry.S')
-rw-r--r--arch/arm64/kernel/entry.S17
1 files changed, 15 insertions, 2 deletions
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
index 6c3b7345a6c4..96e4a2b64cc1 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -258,6 +258,7 @@ tsk .req x28 // current thread_info
258/* 258/*
259 * Exception vectors. 259 * Exception vectors.
260 */ 260 */
261 .pushsection ".entry.text", "ax"
261 262
262 .align 11 263 .align 11
263ENTRY(vectors) 264ENTRY(vectors)
@@ -466,7 +467,7 @@ el0_sync:
466 cmp x24, #ESR_ELx_EC_FP_EXC64 // FP/ASIMD exception 467 cmp x24, #ESR_ELx_EC_FP_EXC64 // FP/ASIMD exception
467 b.eq el0_fpsimd_exc 468 b.eq el0_fpsimd_exc
468 cmp x24, #ESR_ELx_EC_SYS64 // configurable trap 469 cmp x24, #ESR_ELx_EC_SYS64 // configurable trap
469 b.eq el0_undef 470 b.eq el0_sys
470 cmp x24, #ESR_ELx_EC_SP_ALIGN // stack alignment exception 471 cmp x24, #ESR_ELx_EC_SP_ALIGN // stack alignment exception
471 b.eq el0_sp_pc 472 b.eq el0_sp_pc
472 cmp x24, #ESR_ELx_EC_PC_ALIGN // pc alignment exception 473 cmp x24, #ESR_ELx_EC_PC_ALIGN // pc alignment exception
@@ -547,7 +548,7 @@ el0_ia:
547 enable_dbg_and_irq 548 enable_dbg_and_irq
548 ct_user_exit 549 ct_user_exit
549 mov x0, x26 550 mov x0, x26
550 orr x1, x25, #1 << 24 // use reserved ISS bit for instruction aborts 551 mov x1, x25
551 mov x2, sp 552 mov x2, sp
552 bl do_mem_abort 553 bl do_mem_abort
553 b ret_to_user 554 b ret_to_user
@@ -594,6 +595,16 @@ el0_undef:
594 mov x0, sp 595 mov x0, sp
595 bl do_undefinstr 596 bl do_undefinstr
596 b ret_to_user 597 b ret_to_user
598el0_sys:
599 /*
600 * System instructions, for trapped cache maintenance instructions
601 */
602 enable_dbg_and_irq
603 ct_user_exit
604 mov x0, x25
605 mov x1, sp
606 bl do_sysinstr
607 b ret_to_user
597el0_dbg: 608el0_dbg:
598 /* 609 /*
599 * Debug exception handling 610 * Debug exception handling
@@ -789,6 +800,8 @@ __ni_sys_trace:
789 bl do_ni_syscall 800 bl do_ni_syscall
790 b __sys_trace_return 801 b __sys_trace_return
791 802
803 .popsection // .entry.text
804
792/* 805/*
793 * Special system call wrappers. 806 * Special system call wrappers.
794 */ 807 */