Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 6 May 2021 16:28:07 +0000 (09:28 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 6 May 2021 16:28:07 +0000 (09:28 -0700)
Pull ARM updates from Russell King:

 - Fix BSS size calculation for LLVM

 - Improve robustness of kernel entry around v7_invalidate_l1

 - Fix and update kprobes assembly

 - Correct breakpoint overflow handler check

 - Pause function graph tracer when suspending a CPU

 - Switch to generic syscallhdr.sh and syscalltbl.sh

 - Remove now unused set_kernel_text_r[wo] functions

 - Updates for ptdump (__init marking and using DEFINE_SHOW_ATTRIBUTE)

 - Fix for interrupted SMC (secure) calls

 - Remove Compaq Personal Server platform

* tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
  ARM: footbridge: remove personal server platform
  ARM: 9075/1: kernel: Fix interrupted SMC calls
  ARM: 9074/1: ptdump: convert to DEFINE_SHOW_ATTRIBUTE
  ARM: 9073/1: ptdump: add __init section marker to three functions
  ARM: 9072/1: mm: remove set_kernel_text_r[ow]()
  ARM: 9067/1: syscalls: switch to generic syscallhdr.sh
  ARM: 9068/1: syscalls: switch to generic syscalltbl.sh
  ARM: 9066/1: ftrace: pause/unpause function graph tracer in cpu_suspend()
  ARM: 9064/1: hw_breakpoint: Do not directly check the event's overflow_handler hook
  ARM: 9062/1: kprobes: rewrite test-arm.c in UAL
  ARM: 9061/1: kprobes: fix UNPREDICTABLE warnings
  ARM: 9060/1: kexec: Remove unused kexec_reinit callback
  ARM: 9059/1: cache-v7: get rid of mini-stack
  ARM: 9058/1: cache-v7: refactor v7_invalidate_l1 to avoid clobbering r5/r6
  ARM: 9057/1: cache-v7: add missing ISB after cache level selection
  ARM: 9056/1: decompressor: fix BSS size calculation for LLVM ld.lld

27 files changed:
arch/arm/boot/compressed/Makefile
arch/arm/configs/footbridge_defconfig
arch/arm/include/asm/kexec.h
arch/arm/include/asm/memory.h
arch/arm/include/asm/set_memory.h
arch/arm/include/uapi/asm/Kbuild
arch/arm/include/uapi/asm/unistd.h
arch/arm/kernel/asm-offsets.c
arch/arm/kernel/entry-common.S
arch/arm/kernel/hw_breakpoint.c
arch/arm/kernel/machine_kexec.c
arch/arm/kernel/smccc-call.S
arch/arm/kernel/suspend.c
arch/arm/mach-footbridge/Kconfig
arch/arm/mach-footbridge/Makefile
arch/arm/mach-footbridge/personal-pci.c [deleted file]
arch/arm/mach-footbridge/personal.c [deleted file]
arch/arm/mm/cache-v7.S
arch/arm/mm/dump.c
arch/arm/mm/init.c
arch/arm/mm/proc-v7.S
arch/arm/mm/ptdump_debugfs.c
arch/arm/probes/kprobes/test-arm.c
arch/arm/probes/kprobes/test-core.h
arch/arm/tools/Makefile
arch/arm/tools/syscallhdr.sh [deleted file]
arch/arm/tools/syscalltbl.sh [deleted file]

index fd94e27ba4fa3d12f5ef16f4f0eef614e7c45ab3..c1f80476862190f3fc674c55f156edf6d92afd30 100644 (file)
@@ -118,8 +118,8 @@ asflags-y := -DZIMAGE
 
 # Supply kernel BSS size to the decompressor via a linker symbol.
 KBSS_SZ = $(shell echo $$(($$($(NM) $(obj)/../../../../vmlinux | \
-               sed -n -e 's/^\([^ ]*\) [AB] __bss_start$$/-0x\1/p' \
-                      -e 's/^\([^ ]*\) [AB] __bss_stop$$/+0x\1/p') )) )
+               sed -n -e 's/^\([^ ]*\) [ABD] __bss_start$$/-0x\1/p' \
+                      -e 's/^\([^ ]*\) [ABD] __bss_stop$$/+0x\1/p') )) )
 LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ)
 # Supply ZRELADDR to the decompressor via a linker symbol.
 ifneq ($(CONFIG_AUTO_ZRELADDR),y)
index 3a7938f244e56606f427d5d940f39fd3f2b3b48c..2aa3ebeb89d7fb5dea69774a3802f9131e8aa3b9 100644 (file)
@@ -7,7 +7,6 @@ CONFIG_EXPERT=y
 CONFIG_MODULES=y
 CONFIG_ARCH_FOOTBRIDGE=y
 CONFIG_ARCH_CATS=y
-CONFIG_ARCH_PERSONAL_SERVER=y
 CONFIG_ARCH_EBSA285_HOST=y
 CONFIG_ARCH_NETWINDER=y
 CONFIG_LEDS=y
index 22751b5b57356d27c09453bc1daaee9ff64f857b..e62832dcba7600d0780cec8462ff8e432ec788d9 100644 (file)
@@ -56,9 +56,6 @@ static inline void crash_setup_regs(struct pt_regs *newregs,
        }
 }
 
-/* Function pointer to optional machine-specific reinitialization */
-extern void (*kexec_reinit)(void);
-
 static inline unsigned long phys_to_boot_phys(phys_addr_t phys)
 {
        return phys_to_idmap(phys);
index 2f841cb65c305dc9adb299909f8b2c60a23e6f05..a711322d9f402d05608d16418d47735a3cb47b06 100644 (file)
@@ -150,21 +150,6 @@ extern unsigned long vectors_base;
  */
 #define PLAT_PHYS_OFFSET       UL(CONFIG_PHYS_OFFSET)
 
-#ifdef CONFIG_XIP_KERNEL
-/*
- * When referencing data in RAM from the XIP region in a relative manner
- * with the MMU off, we need the relative offset between the two physical
- * addresses.  The macro below achieves this, which is:
- *    __pa(v_data) - __xip_pa(v_text)
- */
-#define PHYS_RELATIVE(v_data, v_text) \
-       (((v_data) - PAGE_OFFSET + PLAT_PHYS_OFFSET) - \
-        ((v_text) - XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR) + \
-          CONFIG_XIP_PHYS_ADDR))
-#else
-#define PHYS_RELATIVE(v_data, v_text) ((v_data) - (v_text))
-#endif
-
 #ifndef __ASSEMBLY__
 
 /*
index a1ceff4295d3c01dab906f51e04388ebf8a75887..ec17fc0fda7a194276a49a0a4c39e49aafc1ca6f 100644 (file)
@@ -18,12 +18,4 @@ static inline int set_memory_x(unsigned long addr, int numpages) { return 0; }
 static inline int set_memory_nx(unsigned long addr, int numpages) { return 0; }
 #endif
 
-#ifdef CONFIG_STRICT_KERNEL_RWX
-void set_kernel_text_rw(void);
-void set_kernel_text_ro(void);
-#else
-static inline void set_kernel_text_rw(void) { }
-static inline void set_kernel_text_ro(void) { }
-#endif
-
 #endif
index ce8573157774dc078e49a5a2d5ccecc3ad54986d..63748af8bc9d3d5f26057004ce74287075dfbda6 100644 (file)
@@ -1,6 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
 
-generated-y += unistd-common.h
 generated-y += unistd-oabi.h
 generated-y += unistd-eabi.h
 generic-y += kvm_para.h
index 93ecf8aa4fe5138c56001f113f794694ba30bcc9..ae7749e15726747164c220f6a2bfbce3f93c1b16 100644 (file)
@@ -24,7 +24,6 @@
 #include <asm/unistd-oabi.h>
 #endif
 
-#include <asm/unistd-common.h>
 #define __NR_sync_file_range2          __NR_arm_sync_file_range
 
 /*
index be8050b0c3dfbfb3e2d9e70705e014a0ec7ff915..70993af22d80cf9a2afc305cbe76d47bce2e8c9e 100644 (file)
@@ -24,6 +24,7 @@
 #include <asm/vdso_datapage.h>
 #include <asm/hardware/cache-l2x0.h>
 #include <linux/kbuild.h>
+#include <linux/arm-smccc.h>
 #include "signal.h"
 
 /*
@@ -148,6 +149,8 @@ int main(void)
   DEFINE(SLEEP_SAVE_SP_PHYS,   offsetof(struct sleep_save_sp, save_ptr_stash_phys));
   DEFINE(SLEEP_SAVE_SP_VIRT,   offsetof(struct sleep_save_sp, save_ptr_stash));
 #endif
+  DEFINE(ARM_SMCCC_QUIRK_ID_OFFS,      offsetof(struct arm_smccc_quirk, id));
+  DEFINE(ARM_SMCCC_QUIRK_STATE_OFFS,   offsetof(struct arm_smccc_quirk, state));
   BLANK();
   DEFINE(DMA_BIDIRECTIONAL,    DMA_BIDIRECTIONAL);
   DEFINE(DMA_TO_DEVICE,                DMA_TO_DEVICE);
index e0d7833a1827ea1d82adf9cfff56d00e91cf8c40..7f0b7aba1498839a015c2f2ae6474e49cbeb0380 100644 (file)
@@ -344,20 +344,19 @@ ENTRY(\sym)
        .size   \sym, . - \sym
        .endm
 
-#define NATIVE(nr, func) syscall nr, func
+#define __SYSCALL_WITH_COMPAT(nr, native, compat)      __SYSCALL(nr, native)
+#define __SYSCALL(nr, func) syscall nr, func
 
 /*
  * This is the syscall table declaration for native ABI syscalls.
  * With EABI a couple syscalls are obsolete and defined as sys_ni_syscall.
  */
        syscall_table_start sys_call_table
-#define COMPAT(nr, native, compat) syscall nr, native
 #ifdef CONFIG_AEABI
 #include <calls-eabi.S>
 #else
 #include <calls-oabi.S>
 #endif
-#undef COMPAT
        syscall_table_end sys_call_table
 
 /*============================================================================
@@ -455,7 +454,8 @@ ENDPROC(sys_oabi_readahead)
  * using the compatibility syscall entries.
  */
        syscall_table_start sys_oabi_call_table
-#define COMPAT(nr, native, compat) syscall nr, compat
+#undef __SYSCALL_WITH_COMPAT
+#define __SYSCALL_WITH_COMPAT(nr, native, compat)      __SYSCALL(nr, compat)
 #include <calls-oabi.S>
        syscall_table_end sys_oabi_call_table
 
index 08660ae9dcbce1c3e38c2d48d4b558db76547333..b1423fb130ea4a04d5192ec61beb8453b29b04af 100644 (file)
@@ -886,7 +886,7 @@ static void breakpoint_handler(unsigned long unknown, struct pt_regs *regs)
                        info->trigger = addr;
                        pr_debug("breakpoint fired: address = 0x%x\n", addr);
                        perf_bp_event(bp, regs);
-                       if (!bp->overflow_handler)
+                       if (is_default_overflow_handler(bp))
                                enable_single_step(bp, addr);
                        goto unlock;
                }
index 2b09dad7935eb4ed3496f77be46b5748bfdd7cc4..f567032a09c0bc099e4a4f7044fd7967132f8811 100644 (file)
@@ -147,11 +147,6 @@ void machine_crash_shutdown(struct pt_regs *regs)
        pr_info("Loading crashdump kernel...\n");
 }
 
-/*
- * Function pointer to optional machine-specific reinitialization
- */
-void (*kexec_reinit)(void);
-
 void machine_kexec(struct kimage *image)
 {
        unsigned long page_list, reboot_entry_phys;
@@ -187,9 +182,6 @@ void machine_kexec(struct kimage *image)
 
        pr_info("Bye!\n");
 
-       if (kexec_reinit)
-               kexec_reinit();
-
        soft_restart(reboot_entry_phys);
 }
 
index 00664c78facab321049bf7e7dfcdb380d15986d9..931df62a7831261926611157ee8fff55e5e2701e 100644 (file)
@@ -3,7 +3,9 @@
  * Copyright (c) 2015, Linaro Limited
  */
 #include <linux/linkage.h>
+#include <linux/arm-smccc.h>
 
+#include <asm/asm-offsets.h>
 #include <asm/opcodes-sec.h>
 #include <asm/opcodes-virt.h>
 #include <asm/unwind.h>
@@ -27,7 +29,14 @@ UNWIND(      .fnstart)
 UNWIND(        .save   {r4-r7})
        ldm     r12, {r4-r7}
        \instr
-       pop     {r4-r7}
+       ldr     r4, [sp, #36]
+       cmp     r4, #0
+       beq     1f                      // No quirk structure
+       ldr     r5, [r4, #ARM_SMCCC_QUIRK_ID_OFFS]
+       cmp     r5, #ARM_SMCCC_QUIRK_QCOM_A6
+       bne     1f                      // No quirk present
+       str     r6, [r4, #ARM_SMCCC_QUIRK_STATE_OFFS]
+1:     pop     {r4-r7}
        ldr     r12, [sp, #(4 * 4)]
        stm     r12, {r0-r3}
        bx      lr
index 24bd20564be7764771bc2aa9643af952fa74ba4c..43f0a3ebf3909d6c85daa059cdd7e1acbb2a50bc 100644 (file)
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: GPL-2.0
+#include <linux/ftrace.h>
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/mm_types.h>
@@ -25,6 +26,13 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
        if (!idmap_pgd)
                return -EINVAL;
 
+       /*
+        * Function graph tracer state gets incosistent when the kernel
+        * calls functions that never return (aka suspend finishers) hence
+        * disable graph tracing during their execution.
+        */
+       pause_graph_tracing();
+
        /*
         * Provide a temporary page table with an identity mapping for
         * the MMU-enable code, required for resuming.  On successful
@@ -32,6 +40,9 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
         * back to the correct page tables.
         */
        ret = __cpu_suspend(arg, fn, __mpidr);
+
+       unpause_graph_tracing();
+
        if (ret == 0) {
                cpu_switch_mm(mm->pgd, mm);
                local_flush_bp_all();
@@ -45,7 +56,13 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
 int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
 {
        u32 __mpidr = cpu_logical_map(smp_processor_id());
-       return __cpu_suspend(arg, fn, __mpidr);
+       int ret;
+
+       pause_graph_tracing();
+       ret = __cpu_suspend(arg, fn, __mpidr);
+       unpause_graph_tracing();
+
+       return ret;
 }
 #define        idmap_pgd       NULL
 #endif
index 844aa585b9662a0f82acee8cba672077cfde1e0b..728aff93fba9d288da785916d7dd5cf93ea1ceb5 100644 (file)
@@ -16,27 +16,6 @@ config ARCH_CATS
 
          Saying N will reduce the size of the Footbridge kernel.
 
-config ARCH_PERSONAL_SERVER
-       bool "Compaq Personal Server"
-       select FOOTBRIDGE_HOST
-       select ISA
-       select ISA_DMA
-       select FORCE_PCI
-       help
-         Say Y here if you intend to run this kernel on the Compaq
-         Personal Server.
-
-         Saying N will reduce the size of the Footbridge kernel.
-
-         The Compaq Personal Server is not available for purchase.
-         There are no product plans beyond the current research
-         prototypes at this time.  Information is available at:
-
-         <http://www.crl.hpl.hp.com/projects/personalserver/>
-
-         If you have any questions or comments about the  Compaq Personal
-         Server, send e-mail to <skiff@crl.dec.com>.
-
 config ARCH_EBSA285_ADDIN
        bool "EBSA285 (addin mode)"
        select ARCH_EBSA285
index a09f1041f14134fe7eb4918059089818e9cb0848..6262993c05558592ff9c3d6467bb6bd4f950b6e3 100644 (file)
@@ -11,12 +11,10 @@ pci-y                       += dc21285.o
 pci-$(CONFIG_ARCH_CATS) += cats-pci.o
 pci-$(CONFIG_ARCH_EBSA285_HOST) += ebsa285-pci.o
 pci-$(CONFIG_ARCH_NETWINDER) += netwinder-pci.o
-pci-$(CONFIG_ARCH_PERSONAL_SERVER) += personal-pci.o
 
 obj-$(CONFIG_ARCH_CATS) += cats-hw.o isa-timer.o
 obj-$(CONFIG_ARCH_EBSA285) += ebsa285.o dc21285-timer.o
 obj-$(CONFIG_ARCH_NETWINDER) += netwinder-hw.o isa-timer.o
-obj-$(CONFIG_ARCH_PERSONAL_SERVER) += personal.o dc21285-timer.o
 
 obj-$(CONFIG_PCI)      +=$(pci-y)
 
diff --git a/arch/arm/mach-footbridge/personal-pci.c b/arch/arm/mach-footbridge/personal-pci.c
deleted file mode 100644 (file)
index 9d19aa9..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * linux/arch/arm/mach-footbridge/personal-pci.c
- *
- * PCI bios-type initialisation for PCI machines
- *
- * Bits taken from various places.
- */
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/init.h>
-
-#include <asm/irq.h>
-#include <asm/mach/pci.h>
-#include <asm/mach-types.h>
-
-static int irqmap_personal_server[] = {
-       IRQ_IN0, IRQ_IN1, IRQ_IN2, IRQ_IN3, 0, 0, 0,
-       IRQ_DOORBELLHOST, IRQ_DMA1, IRQ_DMA2, IRQ_PCI
-};
-
-static int personal_server_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
-{
-       unsigned char line;
-
-       pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &line);
-
-       if (line > 0x40 && line <= 0x5f) {
-               /* line corresponds to the bit controlling this interrupt
-                * in the footbridge.  Ignore the first 8 interrupt bits,
-                * look up the rest in the map.  IN0 is bit number 8
-                */
-               return irqmap_personal_server[(line & 0x1f) - 8];
-       } else if (line == 0) {
-               /* no interrupt */
-               return 0;
-       } else
-               return irqmap_personal_server[(line - 1) & 3];
-}
-
-static struct hw_pci personal_server_pci __initdata = {
-       .map_irq                = personal_server_map_irq,
-       .nr_controllers         = 1,
-       .ops                    = &dc21285_ops,
-       .setup                  = dc21285_setup,
-       .preinit                = dc21285_preinit,
-       .postinit               = dc21285_postinit,
-};
-
-static int __init personal_pci_init(void)
-{
-       if (machine_is_personal_server())
-               pci_common_init(&personal_server_pci);
-       return 0;
-}
-
-subsys_initcall(personal_pci_init);
diff --git a/arch/arm/mach-footbridge/personal.c b/arch/arm/mach-footbridge/personal.c
deleted file mode 100644 (file)
index ca71575..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * linux/arch/arm/mach-footbridge/personal.c
- *
- * Personal server (Skiff) machine fixup
- */
-#include <linux/init.h>
-#include <linux/spinlock.h>
-
-#include <asm/hardware/dec21285.h>
-#include <asm/mach-types.h>
-
-#include <asm/mach/arch.h>
-
-#include "common.h"
-
-MACHINE_START(PERSONAL_SERVER, "Compaq-PersonalServer")
-       /* Maintainer: Jamey Hicks / George France */
-       .atag_offset    = 0x100,
-       .map_io         = footbridge_map_io,
-       .init_irq       = footbridge_init_irq,
-       .init_time      = footbridge_timer_init,
-       .restart        = footbridge_restart,
-MACHINE_END
-
index dc8f152f35566710060f1d82e03d464200ee4bc5..830bbfb26ca561b5d230c50554ce7562b34795a4 100644 (file)
@@ -33,41 +33,41 @@ icache_size:
  * processor.  We fix this by performing an invalidate, rather than a
  * clean + invalidate, before jumping into the kernel.
  *
- * This function is cloned from arch/arm/mach-tegra/headsmp.S, and needs
- * to be called for both secondary cores startup and primary core resume
- * procedures.
+ * This function needs to be called for both secondary cores startup and
+ * primary core resume procedures.
  */
 ENTRY(v7_invalidate_l1)
-       mov     r0, #0
-       mcr     p15, 2, r0, c0, c0, 0
-       mrc     p15, 1, r0, c0, c0, 0
-
-       movw    r1, #0x7fff
-       and     r2, r1, r0, lsr #13
+       mov     r0, #0
+       mcr     p15, 2, r0, c0, c0, 0   @ select L1 data cache in CSSELR
+       isb
+       mrc     p15, 1, r0, c0, c0, 0   @ read cache geometry from CCSIDR
 
-       movw    r1, #0x3ff
+       movw    r3, #0x3ff
+       and     r3, r3, r0, lsr #3      @ 'Associativity' in CCSIDR[12:3]
+       clz     r1, r3                  @ WayShift
+       mov     r2, #1
+       mov     r3, r3, lsl r1          @ NumWays-1 shifted into bits [31:...]
+       movs    r1, r2, lsl r1          @ #1 shifted left by same amount
+       moveq   r1, #1                  @ r1 needs value > 0 even if only 1 way
 
-       and     r3, r1, r0, lsr #3      @ NumWays - 1
-       add     r2, r2, #1              @ NumSets
+       and     r2, r0, #0x7
+       add     r2, r2, #4              @ SetShift
 
-       and     r0, r0, #0x7
-       add     r0, r0, #4      @ SetShift
+1:     movw    ip, #0x7fff
+       and     r0, ip, r0, lsr #13     @ 'NumSets' in CCSIDR[27:13]
 
-       clz     r1, r3          @ WayShift
-       add     r4, r3, #1      @ NumWays
-1:     sub     r2, r2, #1      @ NumSets--
-       mov     r3, r4          @ Temp = NumWays
-2:     subs    r3, r3, #1      @ Temp--
-       mov     r5, r3, lsl r1
-       mov     r6, r2, lsl r0
-       orr     r5, r5, r6      @ Reg = (Temp<<WayShift)|(NumSets<<SetShift)
-       mcr     p15, 0, r5, c7, c6, 2
-       bgt     2b
-       cmp     r2, #0
-       bgt     1b
-       dsb     st
-       isb
-       ret     lr
+2:     mov     ip, r0, lsl r2          @ NumSet << SetShift
+       orr     ip, ip, r3              @ Reg = (Temp<<WayShift)|(NumSets<<SetShift)
+       mcr     p15, 0, ip, c7, c6, 2
+       subs    r0, r0, #1              @ Set--
+       bpl     2b
+       subs    r3, r3, r1              @ Way--
+       bcc     3f
+       mrc     p15, 1, r0, c0, c0, 0   @ re-read cache geometry from CCSIDR
+       b       1b
+3:     dsb     st
+       isb
+       ret     lr
 ENDPROC(v7_invalidate_l1)
 
 /*
index 93ff0097f00bb878698f389ae0af0511099dc36d..fb688003d156ea8a9c77fba4ae9d080d3be80b42 100644 (file)
@@ -420,7 +420,7 @@ void ptdump_walk_pgd(struct seq_file *m, struct ptdump_info *info)
        note_page(&st, 0, 0, 0, NULL);
 }
 
-static void ptdump_initialize(void)
+static void __init ptdump_initialize(void)
 {
        unsigned i, j;
 
@@ -466,7 +466,7 @@ void ptdump_check_wx(void)
                pr_info("Checked W+X mappings: passed, no W+X pages found\n");
 }
 
-static int ptdump_init(void)
+static int __init ptdump_init(void)
 {
        ptdump_initialize();
        ptdump_debugfs_register(&kernel_ptdump_info, "kernel_page_tables");
index 1ba9f9f9dbd8e458607d819fcd3287453b165646..9d4744a632c60623dc1a6ef277bda4f6c94dd4d4 100644 (file)
@@ -489,33 +489,12 @@ static int __mark_rodata_ro(void *unused)
        return 0;
 }
 
-static int kernel_set_to_readonly __read_mostly;
-
 void mark_rodata_ro(void)
 {
-       kernel_set_to_readonly = 1;
        stop_machine(__mark_rodata_ro, NULL, NULL);
        debug_checkwx();
 }
 
-void set_kernel_text_rw(void)
-{
-       if (!kernel_set_to_readonly)
-               return;
-
-       set_section_perms(ro_perms, ARRAY_SIZE(ro_perms), false,
-                               current->active_mm);
-}
-
-void set_kernel_text_ro(void)
-{
-       if (!kernel_set_to_readonly)
-               return;
-
-       set_section_perms(ro_perms, ARRAY_SIZE(ro_perms), true,
-                               current->active_mm);
-}
-
 #else
 static inline void fix_kernmem_perms(void) { }
 #endif /* CONFIG_STRICT_KERNEL_RWX */
index 28c9d32fa99a58081150ae7599569d21969a0e58..26d726a08a34bbf539cea8c581d1893ea85f75b5 100644 (file)
@@ -256,6 +256,20 @@ ENDPROC(cpu_pj4b_do_resume)
 
 #endif
 
+       @
+       @ Invoke the v7_invalidate_l1() function, which adheres to the AAPCS
+       @ rules, and so it may corrupt registers that we need to preserve.
+       @
+       .macro  do_invalidate_l1
+       mov     r6, r1
+       mov     r7, r2
+       mov     r10, lr
+       bl      v7_invalidate_l1                @ corrupts {r0-r3, ip, lr}
+       mov     r1, r6
+       mov     r2, r7
+       mov     lr, r10
+       .endm
+
 /*
  *     __v7_setup
  *
@@ -277,6 +291,7 @@ __v7_ca5mp_setup:
 __v7_ca9mp_setup:
 __v7_cr7mp_setup:
 __v7_cr8mp_setup:
+       do_invalidate_l1
        mov     r10, #(1 << 0)                  @ Cache/TLB ops broadcasting
        b       1f
 __v7_ca7mp_setup:
@@ -284,13 +299,9 @@ __v7_ca12mp_setup:
 __v7_ca15mp_setup:
 __v7_b15mp_setup:
 __v7_ca17mp_setup:
+       do_invalidate_l1
        mov     r10, #0
-1:     adr     r0, __v7_setup_stack_ptr
-       ldr     r12, [r0]
-       add     r12, r12, r0                    @ the local stack
-       stmia   r12, {r1-r6, lr}                @ v7_invalidate_l1 touches r0-r6
-       bl      v7_invalidate_l1
-       ldmia   r12, {r1-r6, lr}
+1:
 #ifdef CONFIG_SMP
        orr     r10, r10, #(1 << 6)             @ Enable SMP/nAMP mode
        ALT_SMP(mrc     p15, 0, r0, c1, c0, 1)
@@ -471,12 +482,7 @@ __v7_pj4b_setup:
 #endif /* CONFIG_CPU_PJ4B */
 
 __v7_setup:
-       adr     r0, __v7_setup_stack_ptr
-       ldr     r12, [r0]
-       add     r12, r12, r0                    @ the local stack
-       stmia   r12, {r1-r6, lr}                @ v7_invalidate_l1 touches r0-r6
-       bl      v7_invalidate_l1
-       ldmia   r12, {r1-r6, lr}
+       do_invalidate_l1
 
 __v7_setup_cont:
        and     r0, r9, #0xff000000             @ ARM?
@@ -548,17 +554,8 @@ __errata_finish:
        orr     r0, r0, r6                      @ set them
  THUMB(        orr     r0, r0, #1 << 30        )       @ Thumb exceptions
        ret     lr                              @ return to head.S:__ret
-
-       .align  2
-__v7_setup_stack_ptr:
-       .word   PHYS_RELATIVE(__v7_setup_stack, .)
 ENDPROC(__v7_setup)
 
-       .bss
-       .align  2
-__v7_setup_stack:
-       .space  4 * 7                           @ 7 registers
-
        __INITDATA
 
        .weak cpu_v7_bugs_init
index 598b636615a29ac5aba506242aa1119418b4d52d..318de969ae0fd2e7674ba4e28e3d757809af6522 100644 (file)
@@ -11,20 +11,9 @@ static int ptdump_show(struct seq_file *m, void *v)
        ptdump_walk_pgd(m, info);
        return 0;
 }
+DEFINE_SHOW_ATTRIBUTE(ptdump);
 
-static int ptdump_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, ptdump_show, inode->i_private);
-}
-
-static const struct file_operations ptdump_fops = {
-       .open           = ptdump_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
-       .release        = single_release,
-};
-
-void ptdump_debugfs_register(struct ptdump_info *info, const char *name)
+void __init ptdump_debugfs_register(struct ptdump_info *info, const char *name)
 {
        debugfs_create_file(name, 0400, NULL, info, &ptdump_fops);
 }
index 977369f1aa4886f6a8e4e7d3df4b26155ef4e216..a0dae35ffacdc3987453fa620df3b0986fb9ae7f 100644 (file)
@@ -55,25 +55,25 @@ void kprobe_arm_test_cases(void)
        TEST_GROUP("Data-processing (register), (register-shifted register), (immediate)")
 
 #define _DATA_PROCESSING_DNM(op,s,val)                                         \
-       TEST_RR(  op "eq" s "   r0,  r",1, VAL1,", r",2, val, "")               \
-       TEST_RR(  op "ne" s "   r1,  r",1, VAL1,", r",2, val, ", lsl #3")       \
-       TEST_RR(  op "cs" s "   r2,  r",3, VAL1,", r",2, val, ", lsr #4")       \
-       TEST_RR(  op "cc" s "   r3,  r",3, VAL1,", r",2, val, ", asr #5")       \
-       TEST_RR(  op "mi" s "   r4,  r",5, VAL1,", r",2, N(val),", asr #6")     \
-       TEST_RR(  op "pl" s "   r5,  r",5, VAL1,", r",2, val, ", ror #7")       \
-       TEST_RR(  op "vs" s "   r6,  r",7, VAL1,", r",2, val, ", rrx")          \
-       TEST_R(   op "vc" s "   r6,  r",7, VAL1,", pc, lsl #3")                 \
-       TEST_R(   op "vc" s "   r6,  r",7, VAL1,", sp, lsr #4")                 \
-       TEST_R(   op "vc" s "   r6,  pc, r",7, VAL1,", asr #5")                 \
-       TEST_R(   op "vc" s "   r6,  sp, r",7, VAL1,", ror #6")                 \
-       TEST_RRR( op "hi" s "   r8,  r",9, VAL1,", r",14,val, ", lsl r",0, 3,"")\
-       TEST_RRR( op "ls" s "   r9,  r",9, VAL1,", r",14,val, ", lsr r",7, 4,"")\
-       TEST_RRR( op "ge" s "   r10, r",11,VAL1,", r",14,val, ", asr r",7, 5,"")\
-       TEST_RRR( op "lt" s "   r11, r",11,VAL1,", r",14,N(val),", asr r",7, 6,"")\
-       TEST_RR(  op "gt" s "   r12, r13"       ", r",14,val, ", ror r",14,7,"")\
-       TEST_RR(  op "le" s "   r14, r",0, val, ", r13"       ", lsl r",14,8,"")\
-       TEST_R(   op "eq" s "   r0,  r",11,VAL1,", #0xf5")                      \
-       TEST_R(   op "ne" s "   r11, r",0, VAL1,", #0xf5000000")                \
+       TEST_RR(  op s "eq      r0,  r",1, VAL1,", r",2, val, "")               \
+       TEST_RR(  op s "ne      r1,  r",1, VAL1,", r",2, val, ", lsl #3")       \
+       TEST_RR(  op s "cs      r2,  r",3, VAL1,", r",2, val, ", lsr #4")       \
+       TEST_RR(  op s "cc      r3,  r",3, VAL1,", r",2, val, ", asr #5")       \
+       TEST_RR(  op s "mi      r4,  r",5, VAL1,", r",2, N(val),", asr #6")     \
+       TEST_RR(  op s "pl      r5,  r",5, VAL1,", r",2, val, ", ror #7")       \
+       TEST_RR(  op s "vs      r6,  r",7, VAL1,", r",2, val, ", rrx")          \
+       TEST_R(   op s "vc      r6,  r",7, VAL1,", pc, lsl #3")                 \
+       TEST_R(   op s "vc      r6,  r",7, VAL1,", sp, lsr #4")                 \
+       TEST_R(   op s "vc      r6,  pc, r",7, VAL1,", asr #5")                 \
+       TEST_R(   op s "vc      r6,  sp, r",7, VAL1,", ror #6")                 \
+       TEST_RRR( op s "hi      r8,  r",9, VAL1,", r",14,val, ", lsl r",0, 3,"")\
+       TEST_RRR( op s "ls      r9,  r",9, VAL1,", r",14,val, ", lsr r",7, 4,"")\
+       TEST_RRR( op s "ge      r10, r",11,VAL1,", r",14,val, ", asr r",7, 5,"")\
+       TEST_RRR( op s "lt      r11, r",11,VAL1,", r",14,N(val),", asr r",7, 6,"")\
+       TEST_RR(  op s "gt      r12, r13"       ", r",14,val, ", ror r",14,7,"")\
+       TEST_RR(  op s "le      r14, r",0, val, ", r13"       ", lsl r",14,8,"")\
+       TEST_R(   op s "eq      r0,  r",11,VAL1,", #0xf5")                      \
+       TEST_R(   op s "ne      r11, r",0, VAL1,", #0xf5000000")                \
        TEST_R(   op s "        r7,  r",8, VAL2,", #0x000af000")                \
        TEST(     op s "        r4,  pc"        ", #0x00005a00")
 
@@ -104,23 +104,23 @@ void kprobe_arm_test_cases(void)
        TEST_R(   op "  r",8, VAL2,", #0x000af000")
 
 #define _DATA_PROCESSING_DM(op,s,val)                                  \
-       TEST_R(   op "eq" s "   r0,  r",1, val, "")                     \
-       TEST_R(   op "ne" s "   r1,  r",1, val, ", lsl #3")             \
-       TEST_R(   op "cs" s "   r2,  r",3, val, ", lsr #4")             \
-       TEST_R(   op "cc" s "   r3,  r",3, val, ", asr #5")             \
-       TEST_R(   op "mi" s "   r4,  r",5, N(val),", asr #6")           \
-       TEST_R(   op "pl" s "   r5,  r",5, val, ", ror #7")             \
-       TEST_R(   op "vs" s "   r6,  r",10,val, ", rrx")                \
-       TEST(     op "vs" s "   r7,  pc, lsl #3")                       \
-       TEST(     op "vs" s "   r7,  sp, lsr #4")                       \
-       TEST_RR(  op "vc" s "   r8,  r",7, val, ", lsl r",0, 3,"")      \
-       TEST_RR(  op "hi" s "   r9,  r",9, val, ", lsr r",7, 4,"")      \
-       TEST_RR(  op "ls" s "   r10, r",9, val, ", asr r",7, 5,"")      \
-       TEST_RR(  op "ge" s "   r11, r",11,N(val),", asr r",7, 6,"")    \
-       TEST_RR(  op "lt" s "   r12, r",11,val, ", ror r",14,7,"")      \
-       TEST_R(   op "gt" s "   r14, r13"       ", lsl r",14,8,"")      \
-       TEST(     op "eq" s "   r0,  #0xf5")                            \
-       TEST(     op "ne" s "   r11, #0xf5000000")                      \
+       TEST_R(   op s "eq      r0,  r",1, val, "")                     \
+       TEST_R(   op s "ne      r1,  r",1, val, ", lsl #3")             \
+       TEST_R(   op s "cs      r2,  r",3, val, ", lsr #4")             \
+       TEST_R(   op s "cc      r3,  r",3, val, ", asr #5")             \
+       TEST_R(   op s "mi      r4,  r",5, N(val),", asr #6")           \
+       TEST_R(   op s "pl      r5,  r",5, val, ", ror #7")             \
+       TEST_R(   op s "vs      r6,  r",10,val, ", rrx")                \
+       TEST(     op s "vs      r7,  pc, lsl #3")                       \
+       TEST(     op s "vs      r7,  sp, lsr #4")                       \
+       TEST_RR(  op s "vc      r8,  r",7, val, ", lsl r",0, 3,"")      \
+       TEST_RR(  op s "hi      r9,  r",9, val, ", lsr r",7, 4,"")      \
+       TEST_RR(  op s "ls      r10, r",9, val, ", asr r",7, 5,"")      \
+       TEST_RR(  op s "ge      r11, r",11,N(val),", asr r",7, 6,"")    \
+       TEST_RR(  op s "lt      r12, r",11,val, ", ror r",14,7,"")      \
+       TEST_R(   op s "gt      r14, r13"       ", lsl r",14,8,"")      \
+       TEST(     op s "eq      r0,  #0xf5")                            \
+       TEST(     op s "ne      r11, #0xf5000000")                      \
        TEST(     op s "        r7,  #0x000af000")                      \
        TEST(     op s "        r4,  #0x00005a00")
 
@@ -166,10 +166,10 @@ void kprobe_arm_test_cases(void)
 
        /* Data-processing with PC as a target and status registers updated */
        TEST_UNSUPPORTED("movs  pc, r1")
-       TEST_UNSUPPORTED("movs  pc, r1, lsl r2")
+       TEST_UNSUPPORTED(__inst_arm(0xe1b0f211) "       @movs   pc, r1, lsl r2")
        TEST_UNSUPPORTED("movs  pc, #0x10000")
        TEST_UNSUPPORTED("adds  pc, lr, r1")
-       TEST_UNSUPPORTED("adds  pc, lr, r1, lsl r2")
+       TEST_UNSUPPORTED(__inst_arm(0xe09ef211) "       @adds   pc, lr, r1, lsl r2")
        TEST_UNSUPPORTED("adds  pc, lr, #4")
 
        /* Data-processing with SP as target */
@@ -352,7 +352,7 @@ void kprobe_arm_test_cases(void)
        TEST_UNSUPPORTED(__inst_arm(0xe000029f) " @ mul r0, pc, r2")
        TEST_UNSUPPORTED(__inst_arm(0xe0000f91) " @ mul r0, r1, pc")
        TEST_RR(    "muls       r0, r",1, VAL1,", r",2, VAL2,"")
-       TEST_RR(    "mullss     r7, r",8, VAL2,", r",9, VAL2,"")
+       TEST_RR(    "mulsls     r7, r",8, VAL2,", r",9, VAL2,"")
        TEST_R(     "muls       lr, r",4, VAL3,", r13")
        TEST_UNSUPPORTED(__inst_arm(0xe01f0291) " @ muls pc, r1, r2")
 
@@ -361,7 +361,7 @@ void kprobe_arm_test_cases(void)
        TEST_RR(     "mla       lr, r",1, VAL2,", r",2, VAL3,", r13")
        TEST_UNSUPPORTED(__inst_arm(0xe02f3291) " @ mla pc, r1, r2, r3")
        TEST_RRR(    "mlas      r0, r",1, VAL1,", r",2, VAL2,", r",3,  VAL3,"")
-       TEST_RRR(    "mlahis    r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"")
+       TEST_RRR(    "mlashi    r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"")
        TEST_RR(     "mlas      lr, r",1, VAL2,", r",2, VAL3,", r13")
        TEST_UNSUPPORTED(__inst_arm(0xe03f3291) " @ mlas pc, r1, r2, r3")
 
@@ -394,7 +394,7 @@ void kprobe_arm_test_cases(void)
        TEST_UNSUPPORTED(__inst_arm(0xe081f392) " @ umull pc, r1, r2, r3")
        TEST_UNSUPPORTED(__inst_arm(0xe08f1392) " @ umull r1, pc, r2, r3")
        TEST_RR(  "umulls       r0, r1, r",2, VAL1,", r",3, VAL2,"")
-       TEST_RR(  "umulllss     r7, r8, r",9, VAL2,", r",10, VAL1,"")
+       TEST_RR(  "umullsls     r7, r8, r",9, VAL2,", r",10, VAL1,"")
        TEST_R(   "umulls       lr, r12, r",11,VAL3,", r13")
        TEST_UNSUPPORTED(__inst_arm(0xe091f392) " @ umulls pc, r1, r2, r3")
        TEST_UNSUPPORTED(__inst_arm(0xe09f1392) " @ umulls r1, pc, r2, r3")
@@ -405,7 +405,7 @@ void kprobe_arm_test_cases(void)
        TEST_UNSUPPORTED(__inst_arm(0xe0af1392) " @ umlal pc, r1, r2, r3")
        TEST_UNSUPPORTED(__inst_arm(0xe0a1f392) " @ umlal r1, pc, r2, r3")
        TEST_RRRR(  "umlals     r",0, VAL1,", r",1, VAL2,", r",2, VAL3,", r",3, VAL4)
-       TEST_RRRR(  "umlalles   r",8, VAL4,", r",9, VAL1,", r",10,VAL2,", r",11,VAL3)
+       TEST_RRRR(  "umlalsle   r",8, VAL4,", r",9, VAL1,", r",10,VAL2,", r",11,VAL3)
        TEST_RRR(   "umlals     r",14,VAL3,", r",7, VAL4,", r",5, VAL1,", r13")
        TEST_UNSUPPORTED(__inst_arm(0xe0bf1392) " @ umlals pc, r1, r2, r3")
        TEST_UNSUPPORTED(__inst_arm(0xe0b1f392) " @ umlals r1, pc, r2, r3")
@@ -416,7 +416,7 @@ void kprobe_arm_test_cases(void)
        TEST_UNSUPPORTED(__inst_arm(0xe0c1f392) " @ smull pc, r1, r2, r3")
        TEST_UNSUPPORTED(__inst_arm(0xe0cf1392) " @ smull r1, pc, r2, r3")
        TEST_RR(  "smulls       r0, r1, r",2, VAL1,", r",3, VAL2,"")
-       TEST_RR(  "smulllss     r7, r8, r",9, VAL2,", r",10, VAL1,"")
+       TEST_RR(  "smullsls     r7, r8, r",9, VAL2,", r",10, VAL1,"")
        TEST_R(   "smulls       lr, r12, r",11,VAL3,", r13")
        TEST_UNSUPPORTED(__inst_arm(0xe0d1f392) " @ smulls pc, r1, r2, r3")
        TEST_UNSUPPORTED(__inst_arm(0xe0df1392) " @ smulls r1, pc, r2, r3")
@@ -427,7 +427,7 @@ void kprobe_arm_test_cases(void)
        TEST_UNSUPPORTED(__inst_arm(0xe0ef1392) " @ smlal pc, r1, r2, r3")
        TEST_UNSUPPORTED(__inst_arm(0xe0e1f392) " @ smlal r1, pc, r2, r3")
        TEST_RRRR(  "smlals     r",0, VAL1,", r",1, VAL2,", r",2, VAL3,", r",3, VAL4)
-       TEST_RRRR(  "smlalles   r",8, VAL4,", r",9, VAL1,", r",10,VAL2,", r",11,VAL3)
+       TEST_RRRR(  "smlalsle   r",8, VAL4,", r",9, VAL1,", r",10,VAL2,", r",11,VAL3)
        TEST_RRR(   "smlals     r",14,VAL3,", r",7, VAL4,", r",5, VAL1,", r13")
        TEST_UNSUPPORTED(__inst_arm(0xe0ff1392) " @ smlals pc, r1, r2, r3")
        TEST_UNSUPPORTED(__inst_arm(0xe0f0f392) " @ smlals r0, pc, r2, r3")
@@ -450,7 +450,7 @@ void kprobe_arm_test_cases(void)
        TEST_UNSUPPORTED(__inst_arm(0xe10f0091) " @ swp r0, r1, [pc]")
 #if __LINUX_ARM_ARCH__ < 6
        TEST_RP("swpb   lr, r",7,VAL2,", [r",8,0,"]")
-       TEST_R( "swpvsb r0, r",1,VAL1,", [sp]")
+       TEST_R( "swpbvs r0, r",1,VAL1,", [sp]")
 #else
        TEST_UNSUPPORTED(__inst_arm(0xe148e097) " @ swpb        lr, r7, [r8]")
        TEST_UNSUPPORTED(__inst_arm(0x614d0091) " @ swpvsb      r0, r1, [sp]")
@@ -477,11 +477,11 @@ void kprobe_arm_test_cases(void)
        TEST_GROUP("Extra load/store instructions")
 
        TEST_RPR(  "strh        r",0, VAL1,", [r",1, 48,", -r",2, 24,"]")
-       TEST_RPR(  "streqh      r",14,VAL2,", [r",11,0, ", r",12, 48,"]")
-       TEST_UNSUPPORTED(  "streqh      r14, [r13, r12]")
-       TEST_UNSUPPORTED(  "streqh      r14, [r12, r13]")
+       TEST_RPR(  "strheq      r",14,VAL2,", [r",11,0, ", r",12, 48,"]")
+       TEST_UNSUPPORTED(  "strheq      r14, [r13, r12]")
+       TEST_UNSUPPORTED(  "strheq      r14, [r12, r13]")
        TEST_RPR(  "strh        r",1, VAL1,", [r",2, 24,", r",3,  48,"]!")
-       TEST_RPR(  "strneh      r",12,VAL2,", [r",11,48,", -r",10,24,"]!")
+       TEST_RPR(  "strhne      r",12,VAL2,", [r",11,48,", -r",10,24,"]!")
        TEST_RPR(  "strh        r",2, VAL1,", [r",3, 24,"], r",4, 48,"")
        TEST_RPR(  "strh        r",10,VAL2,", [r",9, 48,"], -r",11,24,"")
        TEST_UNSUPPORTED(__inst_arm(0xe1afc0ba) "       @ strh r12, [pc, r10]!")
@@ -489,9 +489,9 @@ void kprobe_arm_test_cases(void)
        TEST_UNSUPPORTED(__inst_arm(0xe089a0bf) "       @ strh r10, [r9], pc")
 
        TEST_PR(   "ldrh        r0, [r",0,  48,", -r",2, 24,"]")
-       TEST_PR(   "ldrcsh      r14, [r",13,0, ", r",12, 48,"]")
+       TEST_PR(   "ldrhcs      r14, [r",13,0, ", r",12, 48,"]")
        TEST_PR(   "ldrh        r1, [r",2,  24,", r",3,  48,"]!")
-       TEST_PR(   "ldrcch      r12, [r",11,48,", -r",10,24,"]!")
+       TEST_PR(   "ldrhcc      r12, [r",11,48,", -r",10,24,"]!")
        TEST_PR(   "ldrh        r2, [r",3,  24,"], r",4, 48,"")
        TEST_PR(   "ldrh        r10, [r",9, 48,"], -r",11,24,"")
        TEST_UNSUPPORTED(__inst_arm(0xe1bfc0ba) "       @ ldrh r12, [pc, r10]!")
@@ -499,9 +499,9 @@ void kprobe_arm_test_cases(void)
        TEST_UNSUPPORTED(__inst_arm(0xe099a0bf) "       @ ldrh r10, [r9], pc")
 
        TEST_RP(   "strh        r",0, VAL1,", [r",1, 24,", #-2]")
-       TEST_RP(   "strmih      r",14,VAL2,", [r",13,0, ", #2]")
+       TEST_RP(   "strhmi      r",14,VAL2,", [r",13,0, ", #2]")
        TEST_RP(   "strh        r",1, VAL1,", [r",2, 24,", #4]!")
-       TEST_RP(   "strplh      r",12,VAL2,", [r",11,24,", #-4]!")
+       TEST_RP(   "strhpl      r",12,VAL2,", [r",11,24,", #-4]!")
        TEST_RP(   "strh        r",2, VAL1,", [r",3, 24,"], #48")
        TEST_RP(   "strh        r",10,VAL2,", [r",9, 64,"], #-48")
        TEST_RP(   "strh        r",3, VAL1,", [r",13,TEST_MEMORY_SIZE,", #-"__stringify(MAX_STACK_SIZE)"]!")
@@ -511,9 +511,9 @@ void kprobe_arm_test_cases(void)
        TEST_UNSUPPORTED(__inst_arm(0xe0c9f3b0) "       @ strh pc, [r9], #48")
 
        TEST_P(    "ldrh        r0, [r",0,  24,", #-2]")
-       TEST_P(    "ldrvsh      r14, [r",13,0, ", #2]")
+       TEST_P(    "ldrhvs      r14, [r",13,0, ", #2]")
        TEST_P(    "ldrh        r1, [r",2,  24,", #4]!")
-       TEST_P(    "ldrvch      r12, [r",11,24,", #-4]!")
+       TEST_P(    "ldrhvc      r12, [r",11,24,", #-4]!")
        TEST_P(    "ldrh        r2, [r",3,  24,"], #48")
        TEST_P(    "ldrh        r10, [r",9, 64,"], #-48")
        TEST(      "ldrh        r0, [pc, #0]")
@@ -521,18 +521,18 @@ void kprobe_arm_test_cases(void)
        TEST_UNSUPPORTED(__inst_arm(0xe0d9f3b0) "       @ ldrh pc, [r9], #48")
 
        TEST_PR(   "ldrsb       r0, [r",0,  48,", -r",2, 24,"]")
-       TEST_PR(   "ldrhisb     r14, [r",13,0,", r",12,  48,"]")
+       TEST_PR(   "ldrsbhi     r14, [r",13,0,", r",12,  48,"]")
        TEST_PR(   "ldrsb       r1, [r",2,  24,", r",3,  48,"]!")
-       TEST_PR(   "ldrlssb     r12, [r",11,48,", -r",10,24,"]!")
+       TEST_PR(   "ldrsbls     r12, [r",11,48,", -r",10,24,"]!")
        TEST_PR(   "ldrsb       r2, [r",3,  24,"], r",4, 48,"")
        TEST_PR(   "ldrsb       r10, [r",9, 48,"], -r",11,24,"")
        TEST_UNSUPPORTED(__inst_arm(0xe1bfc0da) "       @ ldrsb r12, [pc, r10]!")
        TEST_UNSUPPORTED(__inst_arm(0xe099f0db) "       @ ldrsb pc, [r9], r11")
 
        TEST_P(    "ldrsb       r0, [r",0,  24,", #-1]")
-       TEST_P(    "ldrgesb     r14, [r",13,0, ", #1]")
+       TEST_P(    "ldrsbge     r14, [r",13,0, ", #1]")
        TEST_P(    "ldrsb       r1, [r",2,  24,", #4]!")
-       TEST_P(    "ldrltsb     r12, [r",11,24,", #-4]!")
+       TEST_P(    "ldrsblt     r12, [r",11,24,", #-4]!")
        TEST_P(    "ldrsb       r2, [r",3,  24,"], #48")
        TEST_P(    "ldrsb       r10, [r",9, 64,"], #-48")
        TEST(      "ldrsb       r0, [pc, #0]")
@@ -540,18 +540,18 @@ void kprobe_arm_test_cases(void)
        TEST_UNSUPPORTED(__inst_arm(0xe0d9f3d0) "       @ ldrsb pc, [r9], #48")
 
        TEST_PR(   "ldrsh       r0, [r",0,  48,", -r",2, 24,"]")
-       TEST_PR(   "ldrgtsh     r14, [r",13,0, ", r",12, 48,"]")
+       TEST_PR(   "ldrshgt     r14, [r",13,0, ", r",12, 48,"]")
        TEST_PR(   "ldrsh       r1, [r",2,  24,", r",3,  48,"]!")
-       TEST_PR(   "ldrlesh     r12, [r",11,48,", -r",10,24,"]!")
+       TEST_PR(   "ldrshle     r12, [r",11,48,", -r",10,24,"]!")
        TEST_PR(   "ldrsh       r2, [r",3,  24,"], r",4, 48,"")
        TEST_PR(   "ldrsh       r10, [r",9, 48,"], -r",11,24,"")
        TEST_UNSUPPORTED(__inst_arm(0xe1bfc0fa) "       @ ldrsh r12, [pc, r10]!")
        TEST_UNSUPPORTED(__inst_arm(0xe099f0fb) "       @ ldrsh pc, [r9], r11")
 
        TEST_P(    "ldrsh       r0, [r",0,  24,", #-1]")
-       TEST_P(    "ldreqsh     r14, [r",13,0 ,", #1]")
+       TEST_P(    "ldrsheq     r14, [r",13,0 ,", #1]")
        TEST_P(    "ldrsh       r1, [r",2,  24,", #4]!")
-       TEST_P(    "ldrnesh     r12, [r",11,24,", #-4]!")
+       TEST_P(    "ldrshne     r12, [r",11,24,", #-4]!")
        TEST_P(    "ldrsh       r2, [r",3,  24,"], #48")
        TEST_P(    "ldrsh       r10, [r",9, 64,"], #-48")
        TEST(      "ldrsh       r0, [pc, #0]")
@@ -571,30 +571,30 @@ void kprobe_arm_test_cases(void)
 
 #if __LINUX_ARM_ARCH__ >= 5
        TEST_RPR(  "strd        r",0, VAL1,", [r",1, 48,", -r",2,24,"]")
-       TEST_RPR(  "strccd      r",8, VAL2,", [r",11,0, ", r",12,48,"]")
-       TEST_UNSUPPORTED(  "strccd r8, [r13, r12]")
-       TEST_UNSUPPORTED(  "strccd r8, [r12, r13]")
+       TEST_RPR(  "strdcc      r",8, VAL2,", [r",11,0, ", r",12,48,"]")
+       TEST_UNSUPPORTED(  "strdcc r8, [r13, r12]")
+       TEST_UNSUPPORTED(  "strdcc r8, [r12, r13]")
        TEST_RPR(  "strd        r",4, VAL1,", [r",2, 24,", r",3, 48,"]!")
-       TEST_RPR(  "strcsd      r",12,VAL2,", [r",11,48,", -r",10,24,"]!")
-       TEST_RPR(  "strd        r",2, VAL1,", [r",5, 24,"], r",4,48,"")
-       TEST_RPR(  "strd        r",10,VAL2,", [r",9, 48,"], -r",7,24,"")
+       TEST_RPR(  "strdcs      r",12,VAL2,", r13, [r",11,48,", -r",10,24,"]!")
+       TEST_RPR(  "strd        r",2, VAL1,", r3, [r",5, 24,"], r",4,48,"")
+       TEST_RPR(  "strd        r",10,VAL2,", r11, [r",9, 48,"], -r",7,24,"")
        TEST_UNSUPPORTED(__inst_arm(0xe1afc0fa) "       @ strd r12, [pc, r10]!")
 
        TEST_PR(   "ldrd        r0, [r",0, 48,", -r",2,24,"]")
-       TEST_PR(   "ldrmid      r8, [r",13,0, ", r",12,48,"]")
+       TEST_PR(   "ldrdmi      r8, [r",13,0, ", r",12,48,"]")
        TEST_PR(   "ldrd        r4, [r",2, 24,", r",3, 48,"]!")
-       TEST_PR(   "ldrpld      r6, [r",11,48,", -r",10,24,"]!")
-       TEST_PR(   "ldrd        r2, [r",5, 24,"], r",4,48,"")
-       TEST_PR(   "ldrd        r10, [r",9,48,"], -r",7,24,"")
+       TEST_PR(   "ldrdpl      r6, [r",11,48,", -r",10,24,"]!")
+       TEST_PR(   "ldrd        r2, r3, [r",5, 24,"], r",4,48,"")
+       TEST_PR(   "ldrd        r10, r11, [r",9,48,"], -r",7,24,"")
        TEST_UNSUPPORTED(__inst_arm(0xe1afc0da) "       @ ldrd r12, [pc, r10]!")
        TEST_UNSUPPORTED(__inst_arm(0xe089f0db) "       @ ldrd pc, [r9], r11")
        TEST_UNSUPPORTED(__inst_arm(0xe089e0db) "       @ ldrd lr, [r9], r11")
        TEST_UNSUPPORTED(__inst_arm(0xe089c0df) "       @ ldrd r12, [r9], pc")
 
        TEST_RP(   "strd        r",0, VAL1,", [r",1, 24,", #-8]")
-       TEST_RP(   "strvsd      r",8, VAL2,", [r",13,0, ", #8]")
+       TEST_RP(   "strdvs      r",8, VAL2,", [r",13,0, ", #8]")
        TEST_RP(   "strd        r",4, VAL1,", [r",2, 24,", #16]!")
-       TEST_RP(   "strvcd      r",12,VAL2,", [r",11,24,", #-16]!")
+       TEST_RP(   "strdvc      r",12,VAL2,", r13, [r",11,24,", #-16]!")
        TEST_RP(   "strd        r",2, VAL1,", [r",4, 24,"], #48")
        TEST_RP(   "strd        r",10,VAL2,", [r",9, 64,"], #-48")
        TEST_RP(   "strd        r",6, VAL1,", [r",13,TEST_MEMORY_SIZE,", #-"__stringify(MAX_STACK_SIZE)"]!")
@@ -603,9 +603,9 @@ void kprobe_arm_test_cases(void)
        TEST_UNSUPPORTED(__inst_arm(0xe1efc3f0) "       @ strd r12, [pc, #48]!")
 
        TEST_P(    "ldrd        r0, [r",0, 24,", #-8]")
-       TEST_P(    "ldrhid      r8, [r",13,0, ", #8]")
+       TEST_P(    "ldrdhi      r8, [r",13,0, ", #8]")
        TEST_P(    "ldrd        r4, [r",2, 24,", #16]!")
-       TEST_P(    "ldrlsd      r6, [r",11,24,", #-16]!")
+       TEST_P(    "ldrdls      r6, [r",11,24,", #-16]!")
        TEST_P(    "ldrd        r2, [r",5, 24,"], #48")
        TEST_P(    "ldrd        r10, [r",9,6,"], #-48")
        TEST_UNSUPPORTED(__inst_arm(0xe1efc3d0) "       @ ldrd r12, [pc, #48]!")
@@ -1084,63 +1084,63 @@ void kprobe_arm_test_cases(void)
        TEST_GROUP("Branch, branch with link, and block data transfer")
 
        TEST_P(   "stmda        r",0, 16*4,", {r0}")
-       TEST_P(   "stmeqda      r",4, 16*4,", {r0-r15}")
-       TEST_P(   "stmneda      r",8, 16*4,"!, {r8-r15}")
+       TEST_P(   "stmdaeq      r",4, 16*4,", {r0-r15}")
+       TEST_P(   "stmdane      r",8, 16*4,"!, {r8-r15}")
        TEST_P(   "stmda        r",12,16*4,"!, {r1,r3,r5,r7,r8-r11,r14}")
        TEST_P(   "stmda        r",13,0,   "!, {pc}")
 
        TEST_P(   "ldmda        r",0, 16*4,", {r0}")
-       TEST_BF_P("ldmcsda      r",4, 15*4,", {r0-r15}")
-       TEST_BF_P("ldmccda      r",7, 15*4,"!, {r8-r15}")
+       TEST_BF_P("ldmdacs      r",4, 15*4,", {r0-r15}")
+       TEST_BF_P("ldmdacc      r",7, 15*4,"!, {r8-r15}")
        TEST_P(   "ldmda        r",12,16*4,"!, {r1,r3,r5,r7,r8-r11,r14}")
        TEST_BF_P("ldmda        r",14,15*4,"!, {pc}")
 
        TEST_P(   "stmia        r",0, 16*4,", {r0}")
-       TEST_P(   "stmmiia      r",4, 16*4,", {r0-r15}")
-       TEST_P(   "stmplia      r",8, 16*4,"!, {r8-r15}")
+       TEST_P(   "stmiami      r",4, 16*4,", {r0-r15}")
+       TEST_P(   "stmiapl      r",8, 16*4,"!, {r8-r15}")
        TEST_P(   "stmia        r",12,16*4,"!, {r1,r3,r5,r7,r8-r11,r14}")
        TEST_P(   "stmia        r",14,0,   "!, {pc}")
 
        TEST_P(   "ldmia        r",0, 16*4,", {r0}")
-       TEST_BF_P("ldmvsia      r",4, 0,   ", {r0-r15}")
-       TEST_BF_P("ldmvcia      r",7, 8*4, "!, {r8-r15}")
+       TEST_BF_P("ldmiavs      r",4, 0,   ", {r0-r15}")
+       TEST_BF_P("ldmiavc      r",7, 8*4, "!, {r8-r15}")
        TEST_P(   "ldmia        r",12,16*4,"!, {r1,r3,r5,r7,r8-r11,r14}")
        TEST_BF_P("ldmia        r",14,15*4,"!, {pc}")
 
        TEST_P(   "stmdb        r",0, 16*4,", {r0}")
-       TEST_P(   "stmhidb      r",4, 16*4,", {r0-r15}")
-       TEST_P(   "stmlsdb      r",8, 16*4,"!, {r8-r15}")
+       TEST_P(   "stmdbhi      r",4, 16*4,", {r0-r15}")
+       TEST_P(   "stmdbls      r",8, 16*4,"!, {r8-r15}")
        TEST_P(   "stmdb        r",12,16*4,"!, {r1,r3,r5,r7,r8-r11,r14}")
        TEST_P(   "stmdb        r",13,4,   "!, {pc}")
 
        TEST_P(   "ldmdb        r",0, 16*4,", {r0}")
-       TEST_BF_P("ldmgedb      r",4, 16*4,", {r0-r15}")
-       TEST_BF_P("ldmltdb      r",7, 16*4,"!, {r8-r15}")
+       TEST_BF_P("ldmdbge      r",4, 16*4,", {r0-r15}")
+       TEST_BF_P("ldmdblt      r",7, 16*4,"!, {r8-r15}")
        TEST_P(   "ldmdb        r",12,16*4,"!, {r1,r3,r5,r7,r8-r11,r14}")
        TEST_BF_P("ldmdb        r",14,16*4,"!, {pc}")
 
        TEST_P(   "stmib        r",0, 16*4,", {r0}")
-       TEST_P(   "stmgtib      r",4, 16*4,", {r0-r15}")
-       TEST_P(   "stmleib      r",8, 16*4,"!, {r8-r15}")
+       TEST_P(   "stmibgt      r",4, 16*4,", {r0-r15}")
+       TEST_P(   "stmible      r",8, 16*4,"!, {r8-r15}")
        TEST_P(   "stmib        r",12,16*4,"!, {r1,r3,r5,r7,r8-r11,r14}")
        TEST_P(   "stmib        r",13,-4,  "!, {pc}")
 
        TEST_P(   "ldmib        r",0, 16*4,", {r0}")
-       TEST_BF_P("ldmeqib      r",4, -4,", {r0-r15}")
-       TEST_BF_P("ldmneib      r",7, 7*4,"!, {r8-r15}")
+       TEST_BF_P("ldmibeq      r",4, -4,", {r0-r15}")
+       TEST_BF_P("ldmibne      r",7, 7*4,"!, {r8-r15}")
        TEST_P(   "ldmib        r",12,16*4,"!, {r1,r3,r5,r7,r8-r11,r14}")
        TEST_BF_P("ldmib        r",14,14*4,"!, {pc}")
 
        TEST_P(   "stmdb        r",13,16*4,"!, {r3-r12,lr}")
-       TEST_P(   "stmeqdb      r",13,16*4,"!, {r3-r12}")
-       TEST_P(   "stmnedb      r",2, 16*4,", {r3-r12,lr}")
+       TEST_P(   "stmdbeq      r",13,16*4,"!, {r3-r12}")
+       TEST_P(   "stmdbne      r",2, 16*4,", {r3-r12,lr}")
        TEST_P(   "stmdb        r",13,16*4,"!, {r2-r12,lr}")
        TEST_P(   "stmdb        r",0, 16*4,", {r0-r12}")
        TEST_P(   "stmdb        r",0, 16*4,", {r0-r12,lr}")
 
        TEST_BF_P("ldmia        r",13,5*4, "!, {r3-r12,pc}")
-       TEST_P(   "ldmccia      r",13,5*4, "!, {r3-r12}")
-       TEST_BF_P("ldmcsia      r",2, 5*4, "!, {r3-r12,pc}")
+       TEST_P(   "ldmiacc      r",13,5*4, "!, {r3-r12}")
+       TEST_BF_P("ldmiacs      r",2, 5*4, "!, {r3-r12,pc}")
        TEST_BF_P("ldmia        r",13,4*4, "!, {r2-r12,pc}")
        TEST_P(   "ldmia        r",0, 16*4,", {r0-r12}")
        TEST_P(   "ldmia        r",0, 16*4,", {r0-r12,lr}")
@@ -1174,80 +1174,80 @@ void kprobe_arm_test_cases(void)
 #define TEST_COPROCESSOR(code) TEST_UNSUPPORTED(code)
 
 #define COPROCESSOR_INSTRUCTIONS_ST_LD(two,cc)                                 \
-       TEST_COPROCESSOR("stc"two"      0, cr0, [r13, #4]")                     \
-       TEST_COPROCESSOR("stc"two"      0, cr0, [r13, #-4]")                    \
-       TEST_COPROCESSOR("stc"two"      0, cr0, [r13, #4]!")                    \
-       TEST_COPROCESSOR("stc"two"      0, cr0, [r13, #-4]!")                   \
-       TEST_COPROCESSOR("stc"two"      0, cr0, [r13], #4")                     \
-       TEST_COPROCESSOR("stc"two"      0, cr0, [r13], #-4")                    \
-       TEST_COPROCESSOR("stc"two"      0, cr0, [r13], {1}")                    \
-       TEST_COPROCESSOR("stc"two"l     0, cr0, [r13, #4]")                     \
-       TEST_COPROCESSOR("stc"two"l     0, cr0, [r13, #-4]")                    \
-       TEST_COPROCESSOR("stc"two"l     0, cr0, [r13, #4]!")                    \
-       TEST_COPROCESSOR("stc"two"l     0, cr0, [r13, #-4]!")                   \
-       TEST_COPROCESSOR("stc"two"l     0, cr0, [r13], #4")                     \
-       TEST_COPROCESSOR("stc"two"l     0, cr0, [r13], #-4")                    \
-       TEST_COPROCESSOR("stc"two"l     0, cr0, [r13], {1}")                    \
-       TEST_COPROCESSOR("ldc"two"      0, cr0, [r13, #4]")                     \
-       TEST_COPROCESSOR("ldc"two"      0, cr0, [r13, #-4]")                    \
-       TEST_COPROCESSOR("ldc"two"      0, cr0, [r13, #4]!")                    \
-       TEST_COPROCESSOR("ldc"two"      0, cr0, [r13, #-4]!")                   \
-       TEST_COPROCESSOR("ldc"two"      0, cr0, [r13], #4")                     \
-       TEST_COPROCESSOR("ldc"two"      0, cr0, [r13], #-4")                    \
-       TEST_COPROCESSOR("ldc"two"      0, cr0, [r13], {1}")                    \
-       TEST_COPROCESSOR("ldc"two"l     0, cr0, [r13, #4]")                     \
-       TEST_COPROCESSOR("ldc"two"l     0, cr0, [r13, #-4]")                    \
-       TEST_COPROCESSOR("ldc"two"l     0, cr0, [r13, #4]!")                    \
-       TEST_COPROCESSOR("ldc"two"l     0, cr0, [r13, #-4]!")                   \
-       TEST_COPROCESSOR("ldc"two"l     0, cr0, [r13], #4")                     \
-       TEST_COPROCESSOR("ldc"two"l     0, cr0, [r13], #-4")                    \
-       TEST_COPROCESSOR("ldc"two"l     0, cr0, [r13], {1}")                    \
+       TEST_COPROCESSOR("stc"two"      p0, cr0, [r13, #4]")                    \
+       TEST_COPROCESSOR("stc"two"      p0, cr0, [r13, #-4]")                   \
+       TEST_COPROCESSOR("stc"two"      p0, cr0, [r13, #4]!")                   \
+       TEST_COPROCESSOR("stc"two"      p0, cr0, [r13, #-4]!")                  \
+       TEST_COPROCESSOR("stc"two"      p0, cr0, [r13], #4")                    \
+       TEST_COPROCESSOR("stc"two"      p0, cr0, [r13], #-4")                   \
+       TEST_COPROCESSOR("stc"two"      p0, cr0, [r13], {1}")                   \
+       TEST_COPROCESSOR("stc"two"l     p0, cr0, [r13, #4]")                    \
+       TEST_COPROCESSOR("stc"two"l     p0, cr0, [r13, #-4]")                   \
+       TEST_COPROCESSOR("stc"two"l     p0, cr0, [r13, #4]!")                   \
+       TEST_COPROCESSOR("stc"two"l     p0, cr0, [r13, #-4]!")                  \
+       TEST_COPROCESSOR("stc"two"l     p0, cr0, [r13], #4")                    \
+       TEST_COPROCESSOR("stc"two"l     p0, cr0, [r13], #-4")                   \
+       TEST_COPROCESSOR("stc"two"l     p0, cr0, [r13], {1}")                   \
+       TEST_COPROCESSOR("ldc"two"      p0, cr0, [r13, #4]")                    \
+       TEST_COPROCESSOR("ldc"two"      p0, cr0, [r13, #-4]")                   \
+       TEST_COPROCESSOR("ldc"two"      p0, cr0, [r13, #4]!")                   \
+       TEST_COPROCESSOR("ldc"two"      p0, cr0, [r13, #-4]!")                  \
+       TEST_COPROCESSOR("ldc"two"      p0, cr0, [r13], #4")                    \
+       TEST_COPROCESSOR("ldc"two"      p0, cr0, [r13], #-4")                   \
+       TEST_COPROCESSOR("ldc"two"      p0, cr0, [r13], {1}")                   \
+       TEST_COPROCESSOR("ldc"two"l     p0, cr0, [r13, #4]")                    \
+       TEST_COPROCESSOR("ldc"two"l     p0, cr0, [r13, #-4]")                   \
+       TEST_COPROCESSOR("ldc"two"l     p0, cr0, [r13, #4]!")                   \
+       TEST_COPROCESSOR("ldc"two"l     p0, cr0, [r13, #-4]!")                  \
+       TEST_COPROCESSOR("ldc"two"l     p0, cr0, [r13], #4")                    \
+       TEST_COPROCESSOR("ldc"two"l     p0, cr0, [r13], #-4")                   \
+       TEST_COPROCESSOR("ldc"two"l     p0, cr0, [r13], {1}")                   \
                                                                                \
-       TEST_COPROCESSOR( "stc"two"     0, cr0, [r15, #4]")                     \
-       TEST_COPROCESSOR( "stc"two"     0, cr0, [r15, #-4]")                    \
+       TEST_COPROCESSOR( "stc"two"     p0, cr0, [r15, #4]")                    \
+       TEST_COPROCESSOR( "stc"two"     p0, cr0, [r15, #-4]")                   \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##daf0001) "  @ stc"two"      0, cr0, [r15, #4]!")    \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##d2f0001) "  @ stc"two"      0, cr0, [r15, #-4]!")   \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##caf0001) "  @ stc"two"      0, cr0, [r15], #4")     \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##c2f0001) "  @ stc"two"      0, cr0, [r15], #-4")    \
-       TEST_COPROCESSOR( "stc"two"     0, cr0, [r15], {1}")                    \
-       TEST_COPROCESSOR( "stc"two"l    0, cr0, [r15, #4]")                     \
-       TEST_COPROCESSOR( "stc"two"l    0, cr0, [r15, #-4]")                    \
+       TEST_COPROCESSOR( "stc"two"     p0, cr0, [r15], {1}")                   \
+       TEST_COPROCESSOR( "stc"two"l    p0, cr0, [r15, #4]")                    \
+       TEST_COPROCESSOR( "stc"two"l    p0, cr0, [r15, #-4]")                   \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##def0001) "  @ stc"two"l     0, cr0, [r15, #4]!")    \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##d6f0001) "  @ stc"two"l     0, cr0, [r15, #-4]!")   \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##cef0001) "  @ stc"two"l     0, cr0, [r15], #4")     \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##c6f0001) "  @ stc"two"l     0, cr0, [r15], #-4")    \
-       TEST_COPROCESSOR( "stc"two"l    0, cr0, [r15], {1}")                    \
-       TEST_COPROCESSOR( "ldc"two"     0, cr0, [r15, #4]")                     \
-       TEST_COPROCESSOR( "ldc"two"     0, cr0, [r15, #-4]")                    \
+       TEST_COPROCESSOR( "stc"two"l    p0, cr0, [r15], {1}")                   \
+       TEST_COPROCESSOR( "ldc"two"     p0, cr0, [r15, #4]")                    \
+       TEST_COPROCESSOR( "ldc"two"     p0, cr0, [r15, #-4]")                   \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##dbf0001) "  @ ldc"two"      0, cr0, [r15, #4]!")    \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##d3f0001) "  @ ldc"two"      0, cr0, [r15, #-4]!")   \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##cbf0001) "  @ ldc"two"      0, cr0, [r15], #4")     \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##c3f0001) "  @ ldc"two"      0, cr0, [r15], #-4")    \
-       TEST_COPROCESSOR( "ldc"two"     0, cr0, [r15], {1}")                    \
-       TEST_COPROCESSOR( "ldc"two"l    0, cr0, [r15, #4]")                     \
-       TEST_COPROCESSOR( "ldc"two"l    0, cr0, [r15, #-4]")                    \
+       TEST_COPROCESSOR( "ldc"two"     p0, cr0, [r15], {1}")                   \
+       TEST_COPROCESSOR( "ldc"two"l    p0, cr0, [r15, #4]")                    \
+       TEST_COPROCESSOR( "ldc"two"l    p0, cr0, [r15, #-4]")                   \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##dff0001) "  @ ldc"two"l     0, cr0, [r15, #4]!")    \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##d7f0001) "  @ ldc"two"l     0, cr0, [r15, #-4]!")   \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##cff0001) "  @ ldc"two"l     0, cr0, [r15], #4")     \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##c7f0001) "  @ ldc"two"l     0, cr0, [r15], #-4")    \
-       TEST_COPROCESSOR( "ldc"two"l    0, cr0, [r15], {1}")
+       TEST_COPROCESSOR( "ldc"two"l    p0, cr0, [r15], {1}")
 
 #define COPROCESSOR_INSTRUCTIONS_MC_MR(two,cc)                                 \
                                                                                \
-       TEST_COPROCESSOR( "mcrr"two"    0, 15, r0, r14, cr0")                   \
-       TEST_COPROCESSOR( "mcrr"two"    15, 0, r14, r0, cr15")                  \
+       TEST_COPROCESSOR( "mcrr"two"    p0, 15, r0, r14, cr0")                  \
+       TEST_COPROCESSOR( "mcrr"two"    p15, 0, r14, r0, cr15")                 \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##c4f00f0) "  @ mcrr"two"     0, 15, r0, r15, cr0")   \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##c40ff0f) "  @ mcrr"two"     15, 0, r15, r0, cr15")  \
-       TEST_COPROCESSOR( "mrrc"two"    0, 15, r0, r14, cr0")                   \
-       TEST_COPROCESSOR( "mrrc"two"    15, 0, r14, r0, cr15")                  \
+       TEST_COPROCESSOR( "mrrc"two"    p0, 15, r0, r14, cr0")                  \
+       TEST_COPROCESSOR( "mrrc"two"    p15, 0, r14, r0, cr15")                 \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##c5f00f0) "  @ mrrc"two"     0, 15, r0, r15, cr0")   \
        TEST_UNSUPPORTED(__inst_arm(0x##cc##c50ff0f) "  @ mrrc"two"     15, 0, r15, r0, cr15")  \
-       TEST_COPROCESSOR( "cdp"two"     15, 15, cr15, cr15, cr15, 7")           \
-       TEST_COPROCESSOR( "cdp"two"     0, 0, cr0, cr0, cr0, 0")                \
-       TEST_COPROCESSOR( "mcr"two"     15, 7, r15, cr15, cr15, 7")             \
-       TEST_COPROCESSOR( "mcr"two"     0, 0, r0, cr0, cr0, 0")                 \
-       TEST_COPROCESSOR( "mrc"two"     15, 7, r15, cr15, cr15, 7")             \
-       TEST_COPROCESSOR( "mrc"two"     0, 0, r0, cr0, cr0, 0")
+       TEST_COPROCESSOR( "cdp"two"     p15, 15, cr15, cr15, cr15, 7")          \
+       TEST_COPROCESSOR( "cdp"two"     p0, 0, cr0, cr0, cr0, 0")               \
+       TEST_COPROCESSOR( "mcr"two"     p15, 7, r15, cr15, cr15, 7")            \
+       TEST_COPROCESSOR( "mcr"two"     p0, 0, r0, cr0, cr0, 0")                \
+       TEST_COPROCESSOR( "mrc"two"     p15, 7, r14, cr15, cr15, 7")            \
+       TEST_COPROCESSOR( "mrc"two"     p0, 0, r0, cr0, cr0, 0")
 
        COPROCESSOR_INSTRUCTIONS_ST_LD("",e)
 #if __LINUX_ARM_ARCH__ >= 5
index 19a5b2add41e18a6f512e736ae938271f9339dfd..f1d5583e7bbbbdebb574b14865ca16bbca4cdb64 100644 (file)
@@ -108,6 +108,7 @@ struct test_arg_end {
 
 #define TESTCASE_START(title)                                  \
        __asm__ __volatile__ (                                  \
+       ".syntax unified                                \n\t"   \
        "bl     __kprobes_test_case_start               \n\t"   \
        ".pushsection .rodata                           \n\t"   \
        "10:                                            \n\t"   \
index 3654f979851b71efac6dec5d46e461e2d8571b32..87de1f63f649643645d0a33c8d85474c6aa28f2d 100644 (file)
@@ -8,16 +8,15 @@
 gen := arch/$(ARCH)/include/generated
 kapi := $(gen)/asm
 uapi := $(gen)/uapi/asm
-syshdr := $(srctree)/$(src)/syscallhdr.sh
+syshdr := $(srctree)/scripts/syscallhdr.sh
 sysnr := $(srctree)/$(src)/syscallnr.sh
-systbl := $(srctree)/$(src)/syscalltbl.sh
+systbl := $(srctree)/scripts/syscalltbl.sh
 syscall := $(src)/syscall.tbl
 
 gen-y := $(gen)/calls-oabi.S
 gen-y += $(gen)/calls-eabi.S
 kapi-hdrs-y := $(kapi)/unistd-nr.h
 kapi-hdrs-y += $(kapi)/mach-types.h
-uapi-hdrs-y := $(uapi)/unistd-common.h
 uapi-hdrs-y += $(uapi)/unistd-oabi.h
 uapi-hdrs-y += $(uapi)/unistd-eabi.h
 
@@ -41,28 +40,21 @@ $(kapi)/mach-types.h: $(src)/gen-mach-types $(src)/mach-types FORCE
        $(call if_changed,gen_mach)
 
 quiet_cmd_syshdr = SYSHDR  $@
-      cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@' \
-                  '$(syshdr_abi_$(basetarget))' \
-                  '$(syshdr_pfx_$(basetarget))' \
-                  '__NR_SYSCALL_BASE'
+      cmd_syshdr = $(CONFIG_SHELL) $(syshdr) --abis $(abis) \
+                  --offset __NR_SYSCALL_BASE $< $@
 
 quiet_cmd_systbl = SYSTBL  $@
-      cmd_systbl = $(CONFIG_SHELL) '$(systbl)' '$<' '$@' \
-                  '$(systbl_abi_$(basetarget))'
+      cmd_systbl = $(CONFIG_SHELL) $(systbl) --abis $(abis) $< $@
 
 quiet_cmd_sysnr  = SYSNR   $@
       cmd_sysnr  = $(CONFIG_SHELL) '$(sysnr)' '$<' '$@' \
                   '$(syshdr_abi_$(basetarget))'
 
-syshdr_abi_unistd-common := common
-$(uapi)/unistd-common.h: $(syscall) $(syshdr) FORCE
-       $(call if_changed,syshdr)
-
-syshdr_abi_unistd-oabi := oabi
+$(uapi)/unistd-oabi.h: abis := common,oabi
 $(uapi)/unistd-oabi.h: $(syscall) $(syshdr) FORCE
        $(call if_changed,syshdr)
 
-syshdr_abi_unistd-eabi := eabi
+$(uapi)/unistd-eabi.h: abis := common,eabi
 $(uapi)/unistd-eabi.h: $(syscall) $(syshdr) FORCE
        $(call if_changed,syshdr)
 
@@ -70,10 +62,10 @@ sysnr_abi_unistd-nr := common,oabi,eabi,compat
 $(kapi)/unistd-nr.h: $(syscall) $(sysnr) FORCE
        $(call if_changed,sysnr)
 
-systbl_abi_calls-oabi := common,oabi
+$(gen)/calls-oabi.S: abis := common,oabi
 $(gen)/calls-oabi.S: $(syscall) $(systbl) FORCE
        $(call if_changed,systbl)
 
-systbl_abi_calls-eabi := common,eabi
+$(gen)/calls-eabi.S: abis := common,eabi
 $(gen)/calls-eabi.S: $(syscall) $(systbl) FORCE
        $(call if_changed,systbl)
diff --git a/arch/arm/tools/syscallhdr.sh b/arch/arm/tools/syscallhdr.sh
deleted file mode 100644 (file)
index 6b2f25c..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-# SPDX-License-Identifier: GPL-2.0
-
-in="$1"
-out="$2"
-my_abis=`echo "($3)" | tr ',' '|'`
-prefix="$4"
-offset="$5"
-
-fileguard=_ASM_ARM_`basename "$out" | sed \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
-    -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'`
-if echo $out | grep -q uapi; then
-    fileguard="_UAPI$fileguard"
-fi
-grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
-    echo "#ifndef ${fileguard}"
-    echo "#define ${fileguard} 1"
-    echo ""
-
-    while read nr abi name entry ; do
-       if [ -z "$offset" ]; then
-           echo "#define __NR_${prefix}${name} $nr"
-       else
-           echo "#define __NR_${prefix}${name} ($offset + $nr)"
-        fi
-    done
-
-    echo ""
-    echo "#endif /* ${fileguard} */"
-) > "$out"
diff --git a/arch/arm/tools/syscalltbl.sh b/arch/arm/tools/syscalltbl.sh
deleted file mode 100644 (file)
index ae7e93c..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-# SPDX-License-Identifier: GPL-2.0
-in="$1"
-out="$2"
-my_abis=`echo "($3)" | tr ',' '|'`
-
-grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
-    while read nr abi name entry compat; do
-        if [ "$abi" = "eabi" -a -n "$compat" ]; then
-            echo "$in: error: a compat entry for an EABI syscall ($name) makes no sense" >&2
-            exit 1
-        fi
-
-       if [ -n "$entry" ]; then
-            if [ -z "$compat" ]; then
-                echo "NATIVE($nr, $entry)"
-            else
-                echo "COMPAT($nr, $entry, $compat)"
-            fi
-        fi
-    done
-) > "$out"