diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-27 14:16:05 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-27 14:16:05 -0400 |
commit | e831101a73fbc8339ef1d1909dad3ef64f089e70 (patch) | |
tree | c764ca5cb72cdf24ff26357dd12e16f9c7235627 /arch/arm64/kernel/entry.S | |
parent | f9abf53af4c78b08da44d841d23308c4f4d74c83 (diff) | |
parent | fd6380b75065fd2ff51b5f7cbbe6be77d71ea9c7 (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.S | 17 |
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 |
263 | ENTRY(vectors) | 264 | ENTRY(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 |
598 | el0_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 | ||
597 | el0_dbg: | 608 | el0_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 | */ |