#include <linux/bug.h>
 
-#define __local_ctl_load(array, low, high) do {                                \
+#define __local_ctl_load(low, high, array) do {                                \
        struct addrtype {                                               \
                char _[sizeof(array)];                                  \
        };                                                              \
                : "memory");                                            \
 } while (0)
 
-#define __local_ctl_store(array, low, high) do {                       \
+#define __local_ctl_store(low, high, array) do {                       \
        struct addrtype {                                               \
                char _[sizeof(array)];                                  \
        };                                                              \
 
        struct ctl_bit_parms *pp = info;
        unsigned long regs[16];
 
-       __local_ctl_store(regs, 0, 15);
+       __local_ctl_store(0, 15, regs);
        regs[pp->cr] &= pp->andval;
        regs[pp->cr] |= pp->orval;
-       __local_ctl_load(regs, 0, 15);
+       __local_ctl_load(0, 15, regs);
 }
 
 void system_ctl_set_clear_bit(unsigned int cr, unsigned int bit, bool set)
 
        per_kprobe.end = ip;
 
        /* Save control regs and psw mask */
-       __local_ctl_store(kcb->kprobe_saved_ctl, 9, 11);
+       __local_ctl_store(9, 11, kcb->kprobe_saved_ctl);
        kcb->kprobe_saved_imask = regs->psw.mask &
                (PSW_MASK_PER | PSW_MASK_IO | PSW_MASK_EXT);
 
        /* Set PER control regs, turns on single step for the given address */
-       __local_ctl_load(per_kprobe, 9, 11);
+       __local_ctl_load(9, 11, per_kprobe);
        regs->psw.mask |= PSW_MASK_PER;
        regs->psw.mask &= ~(PSW_MASK_IO | PSW_MASK_EXT);
        regs->psw.addr = ip;
                               unsigned long ip)
 {
        /* Restore control regs and psw mask, set new psw address */
-       __local_ctl_load(kcb->kprobe_saved_ctl, 9, 11);
+       __local_ctl_load(9, 11, kcb->kprobe_saved_ctl);
        regs->psw.mask &= ~PSW_MASK_PER;
        regs->psw.mask |= kcb->kprobe_saved_imask;
        regs->psw.addr = ip;
 
                return;
        }
        regs->psw.mask |= PSW_MASK_PER;
-       __local_ctl_store(old, 9, 11);
+       __local_ctl_store(9, 11, old);
        if (memcmp(&new, &old, sizeof(struct per_regs)) != 0)
-               __local_ctl_load(new, 9, 11);
+               __local_ctl_load(9, 11, new);
 }
 
 void user_enable_single_step(struct task_struct *task)
 
        lc->restart_fn = (unsigned long) do_restart;
        lc->restart_data = 0;
        lc->restart_source = -1U;
-       __local_ctl_store(lc->cregs_save_area, 0, 15);
+       __local_ctl_store(0, 15, lc->cregs_save_area);
        lc->spinlock_lockval = arch_spin_lockval(0);
        lc->spinlock_index = 0;
        arch_spin_lock_setup(0);
 
        /* Disable pseudo page faults on this cpu. */
        pfault_fini();
        /* Disable interrupt sources via control register. */
-       __local_ctl_store(cregs, 0, 15);
+       __local_ctl_store(0, 15, cregs);
        cregs[0]  &= ~0x0000ee70UL;     /* disable all external interrupts */
        cregs[6]  &= ~0xff000000UL;     /* disable all I/O interrupts */
        cregs[14] &= ~0x1f000000UL;     /* disable most machine checks */
-       __local_ctl_load(cregs, 0, 15);
+       __local_ctl_load(0, 15, cregs);
        clear_cpu_flag(CIF_NOHZ_DELAY);
        return 0;
 }