mm/special: create generic fallbacks for pte_special() and pte_mkspecial()

Currently there are many platforms that dont enable ARCH_HAS_PTE_SPECIAL
but required to define quite similar fallback stubs for special page
table entry helpers such as pte_special() and pte_mkspecial(), as they
get build in generic MM without a config check.  This creates two
generic fallback stub definitions for these helpers, eliminating much
code duplication.

mips platform has a special case where pte_special() and pte_mkspecial()
visibility is wider than what ARCH_HAS_PTE_SPECIAL enablement requires.
This restricts those symbol visibility in order to avoid redefinitions
which is now exposed through this new generic stubs and subsequent build
failure.  arm platform set_pte_at() definition needs to be moved into a
C file just to prevent a build failure.

[ use defined(CONFIG_ARCH_HAS_PTE_SPECIAL) in mips per Thomas]
Signed-off-by: Anshuman Khandual <>
Signed-off-by: Andrew Morton <>
Acked-by: Guo Ren <>			[csky]
Acked-by: Geert Uytterhoeven <>	[m68k]
Acked-by: Stafford Horne <>		[openrisc]
Acked-by: Helge Deller <>			[parisc]
Cc: Richard Henderson <>
Cc: Ivan Kokshaysky <>
Cc: Matt Turner <>
Cc: Russell King <>
Cc: Brian Cain <>
Cc: Tony Luck <>
Cc: Fenghua Yu <>
Cc: Sam Creasey <>
Cc: Michal Simek <>
Cc: Ralf Baechle <>
Cc: Paul Burton <>
Cc: Nick Hu <>
Cc: Greentime Hu <>
Cc: Vincent Chen <>
Cc: Ley Foon Tan <>
Cc: Jonas Bonn <>
Cc: Stefan Kristiansson <>
Cc: "James E.J. Bottomley" <>
Cc: "David S. Miller" <>
Cc: Jeff Dike <>
Cc: Richard Weinberger <>
Cc: Anton Ivanov <>
Cc: Guan Xuetao <>
Cc: Chris Zankel <>
Cc: Max Filippov <>
Cc: Thomas Bogendoerfer <>
Signed-off-by: Linus Torvalds <>
21 files changed