Merge tag 'md/4.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md
[sfrench/cifs-2.6.git] / arch / m68k / include / asm / flat.h
index 00c392b0cabdb8288c46b4b27008e4c364ed2ac4..b2a41f5b3890a524d0335b89aaa3111194cd189d 100644 (file)
@@ -5,16 +5,32 @@
 #ifndef __M68KNOMMU_FLAT_H__
 #define __M68KNOMMU_FLAT_H__
 
+#include <linux/uaccess.h>
+
 #define        flat_argvp_envp_on_stack()              1
 #define        flat_old_ram_flag(flags)                (flags)
 #define        flat_reloc_valid(reloc, size)           ((reloc) <= (size))
-#define        flat_get_addr_from_rp(rp, relval, flags, p) \
-       ({ unsigned long __val; __get_user_unaligned(__val, rp); __val; })
-#define        flat_put_addr_at_rp(rp, val, relval)    __put_user_unaligned(val, rp)
+static inline int flat_get_addr_from_rp(u32 __user *rp, u32 relval, u32 flags,
+                                       u32 *addr, u32 *persistent)
+{
+#ifdef CONFIG_CPU_HAS_NO_UNALIGNED
+       return copy_from_user(addr, rp, 4) ? -EFAULT : 0;
+#else
+       return get_user(*addr, rp);
+#endif
+}
+
+static inline int flat_put_addr_at_rp(u32 __user *rp, u32 addr, u32 rel)
+{
+#ifdef CONFIG_CPU_HAS_NO_UNALIGNED
+       return copy_to_user(rp, &addr, 4) ? -EFAULT : 0;
+#else
+       return put_user(addr, rp);
+#endif
+}
 #define        flat_get_relocate_addr(rel)             (rel)
 
-static inline int flat_set_persistent(unsigned long relval,
-                                     unsigned long *persistent)
+static inline int flat_set_persistent(u32 relval, u32 *persistent)
 {
        return 0;
 }