linux/arch/arm64/include/asm
Mark Rutland 25b92693a1 arm64: mm: convert cpu_do_switch_mm() to C
There's no reason that cpu_do_switch_mm() needs to be written as an
assembly function, and having it as a C function would make it easier to
maintain.

This patch converts cpu_do_switch_mm() to C, removing code that this
change makes redundant (e.g. the mmid macro). Since the header comment
was stale and the prototype now implies all the necessary information,
this comment is removed. The 'pgd_phys' argument is made a phys_addr_t
to match the return type of virt_to_phys().

At the same time, post_ttbr_update_workaround() is updated to use
IS_ENABLED(), which allows the compiler to figure out it can elide calls
for !CONFIG_CAVIUM_ERRATUM_27456 builds.

There should be no functional change as a result of this patch.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will@kernel.org>
[catalin.marinas@arm.com: change comments from asm-style to C-style]
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2020-02-27 14:30:50 +00:00
..
vdso arm64: compat: vdso: Remove unused VDSO_HAS_32BIT_FALLBACK 2020-01-14 12:20:45 +01:00
xen xen: fixes and cleanups for 5.4-rc2 2019-10-04 11:13:09 -07:00
acenv.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
acpi.h arm64 updates for 5.3: 2019-07-08 09:54:55 -07:00
alternative.h arm64: fix alternatives with LLVM's integrated assembler 2020-01-16 17:32:34 +00:00
arch_gicv3.h irqchip/gic-v3-its: Rename VPENDBASER/VPROPBASER accessors 2020-02-08 10:01:33 +00:00
arch_timer.h Merge branch 'timers/vdso' into timers/core 2019-07-03 10:50:21 +02:00
archrandom.h arm64: Use v8.5-RNG entropy for KASLR seed 2020-01-22 09:54:52 +00:00
arm_dsu_pmu.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
arm-cci.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
asm-bug.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
asm-offsets.h
asm-prototypes.h arm64: asm-prototypes: Fix fat-fingered typo in comment 2019-01-10 11:11:46 +00:00
asm-uaccess.h arm64 updates for 5.5: 2019-11-25 15:39:19 -08:00
assembler.h arm64: mm: convert cpu_do_switch_mm() to C 2020-02-27 14:30:50 +00:00
atomic_ll_sc.h arm64: Move the LSE gas support detection to Kconfig 2020-01-15 12:50:48 +00:00
atomic_lse.h arm64: lse: fix LSE atomics with LLVM's integrated assembler 2020-01-16 17:25:10 +00:00
atomic.h Merge branch 'for-next/atomics' into for-next/core 2019-08-30 12:55:39 +01:00
barrier.h arm64: Relax ICC_PMR_EL1 accesses when ICC_CTLR_EL1.PMHE is clear 2019-10-15 12:26:09 +01:00
bitops.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
bitrev.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
boot.h treewide: replace #include <asm/sizes.h> with #include <linux/sizes.h> 2019-05-14 19:52:52 -07:00
brk-imm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
bug.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
cache.h arm64: Fake the IminLine size on systems affected by Neoverse-N1 #1542419 2019-10-25 17:48:44 +01:00
cacheflush.h arm64 updates for 5.3: 2019-07-08 09:54:55 -07:00
checksum.h arm64: Implement optimised checksum routine 2020-01-16 15:23:29 +00:00
clocksource.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cmpxchg.h arm64: fix unreachable code issue with cmpxchg 2019-09-17 12:11:50 +01:00
compat.h compat: provide compat_ptr() on all architectures 2020-01-03 09:32:51 +01:00
cpu_ops.h arm64: smp: disable hotplug on trusted OS resident CPU 2019-08-15 11:12:03 +01:00
cpu.h arm64: Introduce ID_ISAR6 CPU register 2020-01-15 11:13:27 +00:00
cpucaps.h Merge branch 'for-next/rng' into for-next/core 2020-01-22 11:38:53 +00:00
cpufeature.h arm64: Introduce system_capabilities_finalized() marker 2020-01-14 17:10:21 +00:00
cpuidle.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cputype.h arm64: Add KRYO{3,4}XX CPU cores to spectre-v2 safe list 2020-01-17 12:46:41 +00:00
current.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
daifflags.h arm64: acpi: fix DAIF manipulation with pNMI 2020-01-22 14:41:22 +00:00
dcc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
debug-monitors.h arm64: remove pointless __KERNEL__ guards 2019-08-05 11:06:33 +01:00
device.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
dmi.h
efi.h efi/libstub: Rename efi_call_early/_runtime macros to be more intuitive 2019-12-25 10:49:25 +01:00
elf.h arm64: vdso: Fix population of AT_SYSINFO_EHDR for compat vdso 2019-07-22 10:33:42 +01:00
esr.h arm64: esr: Add ESR exception class encoding for trapped ERET 2019-08-05 11:06:34 +01:00
exception.h arm64: Drop do_el0_ia_bp_hardening() & do_sp_pc_abort() declarations 2020-02-10 11:24:49 +00:00
exec.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
extable.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
fixmap.h firmware: arm_sdei: Add ACPI GHES registration helper 2019-02-11 11:07:49 +01:00
fpsimd.h arm64: remove pointless __KERNEL__ guards 2019-08-05 11:06:33 +01:00
fpsimdmacros.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
ftrace.h arm64: implement ftrace with regs 2019-11-06 14:17:35 +00:00
futex.h arm64: remove pointless __KERNEL__ guards 2019-08-05 11:06:33 +01:00
hardirq.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
hugetlb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
hw_breakpoint.h arm64: remove pointless __KERNEL__ guards 2019-08-05 11:06:33 +01:00
hwcap.h Merge branch 'for-next/rng' into for-next/core 2020-01-22 11:38:53 +00:00
hypervisor.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
image.h docs: arm64: convert docs to ReST and rename to .rst 2019-06-14 14:20:27 -06:00
insn.h arm64: insn: add encoder for MOV (register) 2019-11-06 14:17:33 +00:00
io.h arch: rely on asm-generic/io.h for default ioremap_* definitions 2019-11-11 21:18:19 +01:00
irq_work.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
irq.h arm64: Use the new GENERIC_IRQ_MULTI_HANDLER 2018-08-03 12:14:09 +02:00
irqflags.h arm64: Relax ICC_PMR_EL1 accesses when ICC_CTLR_EL1.PMHE is clear 2019-10-15 12:26:09 +01:00
jump_label.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
kasan.h arm64: mm: Introduce vabits_actual 2019-08-09 11:17:21 +01:00
Kbuild asm-generic: Make dma-contiguous.h a mandatory include/asm header 2020-02-04 11:38:59 +01:00
kernel-pgtable.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
kexec.h Revert "arm64: kexec: make dtb_mem always enabled" 2020-01-10 16:00:50 +00:00
kgdb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
kprobes.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
kvm_arm.h KVM: arm64: Don't set HCR_EL2.TVM when S2FWB is supported 2019-10-28 16:20:58 +00:00
kvm_asm.h KVM: arm64: Consume pending SError as early as possible 2019-07-05 13:03:29 +01:00
kvm_coproc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
kvm_emulate.h KVM: arm/arm64: Cleanup MMIO handling 2020-01-23 10:38:14 +00:00
kvm_host.h ARM: Cleanups and corner case fixes 2020-01-31 09:30:41 -08:00
kvm_hyp.h arm64: Workaround for Cortex-A55 erratum 1530923 2020-01-16 10:44:14 +00:00
kvm_mmu.h arm64: KVM: Invoke compute_layout() before alternatives are applied 2019-12-06 12:14:45 +00:00
kvm_ptrauth.h KVM: arm/arm64: Context-switch ptrauth registers 2019-04-24 15:30:40 +01:00
kvm_ras.h arm64: KVM/mm: Move SEA handling behind a single 'claim' interface 2019-02-07 23:10:45 +01:00
linkage.h arm64: asm: Add new-style position independent function annotations 2020-01-08 12:14:08 +00:00
lse.h arm64: lse: Fix LSE atomics with LLVM 2020-02-18 18:10:49 +00:00
memory.h arm64: memory: Add missing brackets to untagged_addr() macro 2020-02-19 13:41:33 +00:00
mmu_context.h arm64: mm: convert cpu_do_switch_mm() to C 2020-02-27 14:30:50 +00:00
mmu.h arm64: Use a variable to store non-global mappings decision 2020-01-15 14:11:18 +00:00
mmzone.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
module.h arm64: implement ftrace with regs 2019-11-06 14:17:35 +00:00
neon-intrinsics.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
neon.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
numa.h arm64: numa: separate out updates to percpu nodeid and NUMA node cpumap 2018-07-06 13:18:18 +01:00
page-def.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
page.h dma/direct: turn ARCH_ZONE_DMA_BITS into a variable 2019-11-01 09:41:18 +00:00
paravirt.h arm64: Retrieve stolen time as paravirtualized guest 2019-10-21 19:20:31 +01:00
pci.h arm64: remove pointless __KERNEL__ guards 2019-08-05 11:06:33 +01:00
percpu.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
perf_event.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
pgalloc.h mm: remove quicklist page table caches 2019-09-24 15:54:09 -07:00
pgtable-hwdef.h Merge branches 'for-next/acpi', 'for-next/cpufeatures', 'for-next/csum', 'for-next/e0pd', 'for-next/entry', 'for-next/kbuild', 'for-next/kexec/cleanup', 'for-next/kexec/file-kdump', 'for-next/misc', 'for-next/nofpsimd', 'for-next/perf' and 'for-next/scs' into for-next/core 2020-01-22 11:32:31 +00:00
pgtable-prot.h arm64 updates for 5.6 2020-01-27 08:58:19 -08:00
pgtable-types.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
pgtable.h arm64: mm: add p?d_leaf() definitions 2020-02-04 03:05:24 +00:00
pointer_auth.h arm64: mm: Remove vabits_user 2019-08-09 11:17:27 +01:00
preempt.h sched/rt, arm64: Use CONFIG_PREEMPTION 2019-12-08 14:37:32 +01:00
probes.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
proc-fns.h arm64: mm: convert cpu_do_switch_mm() to C 2020-02-27 14:30:50 +00:00
processor.h Merge branches 'for-next/elf-hwcap-docs', 'for-next/smccc-conduit-cleanup', 'for-next/zone-dma', 'for-next/relax-icc_pmr_el1-sync', 'for-next/double-page-fault', 'for-next/misc', 'for-next/kselftest-arm64-signal' and 'for-next/kaslr-diagnostics' into for-next/core 2019-11-08 17:46:11 +00:00
ptdump.h arm64: mm: convert mm/dump.c to use walk_page_range() 2020-02-04 03:05:25 +00:00
ptrace.h KVM: arm/arm64: Correct CPSR on exception entry 2020-01-19 18:06:14 +00:00
pvclock-abi.h KVM: arm64: Implement PV_TIME_FEATURES call 2019-10-21 19:20:27 +01:00
sdei.h arm64: Use the correct style for SPDX License Identifier 2019-04-16 16:28:01 +01:00
seccomp.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
sections.h arm64: Remove __exception_text_start and __exception_text_end from asm/section.h 2020-01-08 17:30:19 +00:00
shmparam.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
signal32.h arm64: remove pointless __KERNEL__ guards 2019-08-05 11:06:33 +01:00
simd.h arm64: fpsimd: Make sure SVE setup is complete before SIMD is used 2020-01-14 17:11:21 +00:00
smp_plat.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
smp.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
sparsemem.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
spinlock_types.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
spinlock.h arm64/spinlock: fix a -Wunused-function warning 2020-02-10 11:29:24 +00:00
stack_pointer.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
stackprotector.h arm64: enable per-task stack canaries 2018-12-12 18:45:31 +00:00
stacktrace.h arm64: stacktrace: Better handle corrupted stacks 2019-07-22 11:44:15 +01:00
stage2_pgtable.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
stat.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
string.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
suspend.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sync_bitops.h arm64, locking/atomics: Use instrumented atomics 2018-11-01 11:01:40 +01:00
syscall_wrapper.h arm64: simplify syscall wrapper ifdeffery 2019-10-14 10:55:00 +01:00
syscall.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
sysreg.h Merge branch 'for-next/rng' into for-next/core 2020-01-22 11:38:53 +00:00
system_misc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
thread_info.h Merge branches 'for-next/52-bit-kva', 'for-next/cpu-topology', 'for-next/error-injection', 'for-next/perf', 'for-next/psci-cpuidle', 'for-next/rng', 'for-next/smpboot', 'for-next/tbi' and 'for-next/tlbi' into for-next/core 2019-08-30 12:46:12 +01:00
timex.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
tlb.h mm: treewide: clarify pgtable_page_{ctor,dtor}() naming 2019-09-26 10:10:44 -07:00
tlbflush.h arm64: tlb: Ensure we execute an ISB following walk cache invalidation 2019-08-27 17:38:26 +01:00
topology.h cpu-topology: Move cpu topology code to common code. 2019-07-22 09:36:06 -07:00
traps.h arm64: remove __exception annotations 2019-10-28 11:22:38 +00:00
uaccess.h arm64 updates for 5.5: 2019-12-06 14:18:01 -08:00
unistd32.h threads-v5.6 2020-01-29 19:38:34 -08:00
unistd.h threads-v5.6 2020-01-29 19:38:34 -08:00
uprobes.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
vdso.h arm64: remove pointless __KERNEL__ guards 2019-08-05 11:06:33 +01:00
virt.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
vmalloc.h mm/vmalloc: Add empty <asm/vmalloc.h> headers and use them from <linux/vmalloc.h> 2019-12-10 10:12:55 +01:00
vmap_stack.h arm64: Use the correct style for SPDX License Identifier 2019-04-16 16:28:01 +01:00
word-at-a-time.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
xor.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00