Merge branch 'topic/omap3isp' of git://git.kernel.org/pub/scm/linux/kernel/git/mcheha...
[firefly-linux-kernel-4.4.55.git] / arch / arm / kernel / uprobes.c
index f9bacee973bf686cf61405ca2dda3916e3f92d80..56adf9c1fde0670d6a3826536391dcf1d2bb5646 100644 (file)
@@ -113,6 +113,26 @@ int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm,
        return 0;
 }
 
+void arch_uprobe_copy_ixol(struct page *page, unsigned long vaddr,
+                          void *src, unsigned long len)
+{
+       void *xol_page_kaddr = kmap_atomic(page);
+       void *dst = xol_page_kaddr + (vaddr & ~PAGE_MASK);
+
+       preempt_disable();
+
+       /* Initialize the slot */
+       memcpy(dst, src, len);
+
+       /* flush caches (dcache/icache) */
+       flush_uprobe_xol_access(page, vaddr, dst, len);
+
+       preempt_enable();
+
+       kunmap_atomic(xol_page_kaddr);
+}
+
+
 int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
 {
        struct uprobe_task *utask = current->utask;