aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-i386
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-i386')
-rw-r--r--include/asm-i386/system.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/asm-i386/system.h b/include/asm-i386/system.h
index 772f85da1206..88b4d5c6f37a 100644
--- a/include/asm-i386/system.h
+++ b/include/asm-i386/system.h
@@ -140,6 +140,19 @@ static inline unsigned long _get_base(char * addr)
140 :"=r" (__dummy)); \ 140 :"=r" (__dummy)); \
141 __dummy; \ 141 __dummy; \
142}) 142})
143
144#define read_cr4_safe() ({ \
145 unsigned int __dummy; \
146 /* This could fault if %cr4 does not exist */ \
147 __asm__("1: movl %%cr4, %0 \n" \
148 "2: \n" \
149 ".section __ex_table,\"a\" \n" \
150 ".long 1b,2b \n" \
151 ".previous \n" \
152 : "=r" (__dummy): "0" (0)); \
153 __dummy; \
154})
155
143#define write_cr4(x) \ 156#define write_cr4(x) \
144 __asm__ __volatile__("movl %0,%%cr4": :"r" (x)); 157 __asm__ __volatile__("movl %0,%%cr4": :"r" (x));
145#define stts() write_cr0(8 | read_cr0()) 158#define stts() write_cr0(8 | read_cr0())