12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #ifndef _LINUX_KAISER_H
- #define _LINUX_KAISER_H
- #ifdef CONFIG_PAGE_TABLE_ISOLATION
- #include <asm/kaiser.h>
- static inline int kaiser_map_thread_stack(void *stack)
- {
- /*
- * Map that page of kernel stack on which we enter from user context.
- */
- return kaiser_add_mapping((unsigned long)stack +
- THREAD_SIZE - PAGE_SIZE, PAGE_SIZE, __PAGE_KERNEL);
- }
- static inline void kaiser_unmap_thread_stack(void *stack)
- {
- /*
- * Note: may be called even when kaiser_map_thread_stack() failed.
- */
- kaiser_remove_mapping((unsigned long)stack +
- THREAD_SIZE - PAGE_SIZE, PAGE_SIZE);
- }
- #else
- /*
- * These stubs are used whenever CONFIG_PAGE_TABLE_ISOLATION is off, which
- * includes architectures that support KAISER, but have it disabled.
- */
- static inline void kaiser_init(void)
- {
- }
- static inline int kaiser_add_mapping(unsigned long addr,
- unsigned long size, u64 flags)
- {
- return 0;
- }
- static inline void kaiser_remove_mapping(unsigned long start,
- unsigned long size)
- {
- }
- static inline int kaiser_map_thread_stack(void *stack)
- {
- return 0;
- }
- static inline void kaiser_unmap_thread_stack(void *stack)
- {
- }
- #endif /* !CONFIG_PAGE_TABLE_ISOLATION */
- #endif /* _LINUX_KAISER_H */
|