root/arch/x86/include/asm/fsgsbase.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. x86_fsbase_read_cpu
  2. x86_gsbase_read_cpu_inactive
  3. x86_fsbase_write_cpu
  4. x86_gsbase_write_cpu_inactive

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _ASM_FSGSBASE_H
   3 #define _ASM_FSGSBASE_H
   4 
   5 #ifndef __ASSEMBLY__
   6 
   7 #ifdef CONFIG_X86_64
   8 
   9 #include <asm/msr-index.h>
  10 
  11 /*
  12  * Read/write a task's FSBASE or GSBASE. This returns the value that
  13  * the FS/GS base would have (if the task were to be resumed). These
  14  * work on the current task or on a non-running (typically stopped
  15  * ptrace child) task.
  16  */
  17 extern unsigned long x86_fsbase_read_task(struct task_struct *task);
  18 extern unsigned long x86_gsbase_read_task(struct task_struct *task);
  19 extern void x86_fsbase_write_task(struct task_struct *task, unsigned long fsbase);
  20 extern void x86_gsbase_write_task(struct task_struct *task, unsigned long gsbase);
  21 
  22 /* Helper functions for reading/writing FS/GS base */
  23 
  24 static inline unsigned long x86_fsbase_read_cpu(void)
  25 {
  26         unsigned long fsbase;
  27 
  28         rdmsrl(MSR_FS_BASE, fsbase);
  29 
  30         return fsbase;
  31 }
  32 
  33 static inline unsigned long x86_gsbase_read_cpu_inactive(void)
  34 {
  35         unsigned long gsbase;
  36 
  37         rdmsrl(MSR_KERNEL_GS_BASE, gsbase);
  38 
  39         return gsbase;
  40 }
  41 
  42 static inline void x86_fsbase_write_cpu(unsigned long fsbase)
  43 {
  44         wrmsrl(MSR_FS_BASE, fsbase);
  45 }
  46 
  47 static inline void x86_gsbase_write_cpu_inactive(unsigned long gsbase)
  48 {
  49         wrmsrl(MSR_KERNEL_GS_BASE, gsbase);
  50 }
  51 
  52 #endif /* CONFIG_X86_64 */
  53 
  54 #endif /* __ASSEMBLY__ */
  55 
  56 #endif /* _ASM_FSGSBASE_H */

/* [<][>][^][v][top][bottom][index][help] */