File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -19,6 +19,36 @@ extern unsigned long x86_gsbase_read_task(struct task_struct *task);
19
19
extern void x86_fsbase_write_task (struct task_struct * task , unsigned long fsbase );
20
20
extern void x86_gsbase_write_task (struct task_struct * task , unsigned long gsbase );
21
21
22
+ /* Must be protected by X86_FEATURE_FSGSBASE check. */
23
+
24
+ static __always_inline unsigned long rdfsbase (void )
25
+ {
26
+ unsigned long fsbase ;
27
+
28
+ asm volatile ("rdfsbase %0" : "=r" (fsbase ) :: "memory" );
29
+
30
+ return fsbase ;
31
+ }
32
+
33
+ static __always_inline unsigned long rdgsbase (void )
34
+ {
35
+ unsigned long gsbase ;
36
+
37
+ asm volatile ("rdgsbase %0" : "=r" (gsbase ) :: "memory" );
38
+
39
+ return gsbase ;
40
+ }
41
+
42
+ static __always_inline void wrfsbase (unsigned long fsbase )
43
+ {
44
+ asm volatile ("wrfsbase %0" :: "r" (fsbase ) : "memory" );
45
+ }
46
+
47
+ static __always_inline void wrgsbase (unsigned long gsbase )
48
+ {
49
+ asm volatile ("wrgsbase %0" :: "r" (gsbase ) : "memory" );
50
+ }
51
+
22
52
/* Helper functions for reading/writing FS/GS base */
23
53
24
54
static inline unsigned long x86_fsbase_read_cpu (void )
You can’t perform that action at this time.
0 commit comments