Просмотр исходного кода

m68k: enable binfmt_flat on systems with an MMU

Now that the generic changes are in place, this can be enabled on m68k
with the use of proper user space accessors in the flat_get_addr_from_rp()
and flat_put_addr_at_rp() handlers as rp actually holds a user space
address.

Signed-off-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Greg Ungerer <gerg@linux-m68k.org>
Nicolas Pitre 9 лет назад
Родитель
Сommit
002d2f01f1
2 измененных файлов с 5 добавлено и 3 удалено
  1. 3 2
      arch/m68k/include/asm/flat.h
  2. 2 1
      fs/Kconfig.binfmt

+ 3 - 2
arch/m68k/include/asm/flat.h

@@ -8,8 +8,9 @@
 #define	flat_argvp_envp_on_stack()		1
 #define	flat_argvp_envp_on_stack()		1
 #define	flat_old_ram_flag(flags)		(flags)
 #define	flat_old_ram_flag(flags)		(flags)
 #define	flat_reloc_valid(reloc, size)		((reloc) <= (size))
 #define	flat_reloc_valid(reloc, size)		((reloc) <= (size))
-#define	flat_get_addr_from_rp(rp, relval, flags, p)	get_unaligned(rp)
-#define	flat_put_addr_at_rp(rp, val, relval)	put_unaligned(val,rp)
+#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)
 #define	flat_get_relocate_addr(rel)		(rel)
 #define	flat_get_relocate_addr(rel)		(rel)
 
 
 static inline int flat_set_persistent(unsigned long relval,
 static inline int flat_set_persistent(unsigned long relval,

+ 2 - 1
fs/Kconfig.binfmt

@@ -89,7 +89,8 @@ config BINFMT_SCRIPT
 
 
 config BINFMT_FLAT
 config BINFMT_FLAT
 	bool "Kernel support for flat binaries"
 	bool "Kernel support for flat binaries"
-	depends on !MMU && (!FRV || BROKEN)
+	depends on !MMU || M68K
+	depends on !FRV || BROKEN
 	help
 	help
 	  Support uClinux FLAT format binaries.
 	  Support uClinux FLAT format binaries.