summaryrefslogtreecommitdiffstats
path: root/arch/xtensa/kernel/smp.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-05-05 15:36:59 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2014-05-05 15:36:59 -0700
commit03787ff6f9156e43019f3f4b69cb6212b3a47f65 (patch)
tree05dd4b8de6de3313f1afdaaa7636a4052ad4e634 /arch/xtensa/kernel/smp.c
parent5575eeb7b9f687ca4899e2d8721a9b17265d0060 (diff)
parent55b441be5cd600bf645a01b14900880a09941d4c (diff)
downloadlinux-03787ff6f9156e43019f3f4b69cb6212b3a47f65.tar.gz
linux-03787ff6f9156e43019f3f4b69cb6212b3a47f65.tar.bz2
linux-03787ff6f9156e43019f3f4b69cb6212b3a47f65.zip
Merge tag 'xtensa-next-20140503' of git://github.com/czankel/xtensa-linux
Pull Xtensa fixes from Chris Zankel: - Fixes allmodconfig, allnoconfig builds - Adds highmem support - Enables build-time exception table sorting. * tag 'xtensa-next-20140503' of git://github.com/czankel/xtensa-linux: xtensa: ISS: don't depend on CONFIG_TTY xtensa: xt2000: drop redundant sysmem initialization xtensa: add support for KC705 xtensa: xtfpga: introduce SoC I/O bus xtensa: add HIGHMEM support xtensa: optimize local_flush_tlb_kernel_range xtensa: dump sysmem from the bootmem_init xtensa: handle memmap kernel option xtensa: keep sysmem banks ordered in mem_reserve xtensa: keep sysmem banks ordered in add_sysmem_bank xtensa: split bootparam and kernel meminfo xtensa: enable sorting extable at build time xtensa: export __{invalidate,flush}_dcache_range xtensa: Export __invalidate_icache_range
Diffstat (limited to 'arch/xtensa/kernel/smp.c')
-rw-r--r--arch/xtensa/kernel/smp.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/xtensa/kernel/smp.c b/arch/xtensa/kernel/smp.c
index aa8bd8717927..40b5a3771fb0 100644
--- a/arch/xtensa/kernel/smp.c
+++ b/arch/xtensa/kernel/smp.c
@@ -496,6 +496,21 @@ void flush_tlb_range(struct vm_area_struct *vma,
on_each_cpu(ipi_flush_tlb_range, &fd, 1);
}
+static void ipi_flush_tlb_kernel_range(void *arg)
+{
+ struct flush_data *fd = arg;
+ local_flush_tlb_kernel_range(fd->addr1, fd->addr2);
+}
+
+void flush_tlb_kernel_range(unsigned long start, unsigned long end)
+{
+ struct flush_data fd = {
+ .addr1 = start,
+ .addr2 = end,
+ };
+ on_each_cpu(ipi_flush_tlb_kernel_range, &fd, 1);
+}
+
/* Cache flush functions */
static void ipi_flush_cache_all(void *arg)