aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/include/asm/assembler.h
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2015-08-20 05:32:02 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2015-08-26 15:27:02 -0400
commit2190fed67ba6f3e8129513929f2395843645e928 (patch)
tree45a4db5061c12e2926f7a1c89d56c7bbf47f0e61 /arch/arm/include/asm/assembler.h
parentaa06e5c1f9c2b466712be904cc5b56a813e24cfd (diff)
ARM: entry: provide uaccess assembly macro hooks
Provide hooks into the kernel entry and exit paths to permit control of userspace visibility to the kernel. The intended use is: - on entry to kernel from user, uaccess_disable will be called to disable userspace visibility - on exit from kernel to user, uaccess_enable will be called to enable userspace visibility - on entry from a kernel exception, uaccess_save_and_disable will be called to save the current userspace visibility setting, and disable access - on exit from a kernel exception, uaccess_restore will be called to restore the userspace visibility as it was before the exception occurred. These hooks allows us to keep userspace visibility disabled for the vast majority of the kernel, except for localised regions where we want to explicitly access userspace. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/include/asm/assembler.h')
-rw-r--r--arch/arm/include/asm/assembler.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h
index 4abe57279c66..a91177043467 100644
--- a/arch/arm/include/asm/assembler.h
+++ b/arch/arm/include/asm/assembler.h
@@ -445,6 +445,23 @@ THUMB( orr \reg , \reg , #PSR_T_BIT )
445#endif 445#endif
446 .endm 446 .endm
447 447
448 .macro uaccess_disable, tmp, isb=1
449 .endm
450
451 .macro uaccess_enable, tmp, isb=1
452 .endm
453
454 .macro uaccess_save, tmp
455 .endm
456
457 .macro uaccess_restore
458 .endm
459
460 .macro uaccess_save_and_disable, tmp
461 uaccess_save \tmp
462 uaccess_disable \tmp
463 .endm
464
448 .irp c,,eq,ne,cs,cc,mi,pl,vs,vc,hi,ls,ge,lt,gt,le,hs,lo 465 .irp c,,eq,ne,cs,cc,mi,pl,vs,vc,hi,ls,ge,lt,gt,le,hs,lo
449 .macro ret\c, reg 466 .macro ret\c, reg
450#if __LINUX_ARM_ARCH__ < 6 467#if __LINUX_ARM_ARCH__ < 6