Rev 268 | Rev 348 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 268 | Rev 282 | ||
---|---|---|---|
Line 138... | Line 138... | ||
138 | : "=r" (v) |
138 | : "=r" (v) |
139 | ); |
139 | ); |
140 | return v; |
140 | return v; |
141 | } |
141 | } |
142 | 142 | ||
- | 143 | /** Read CR0 |
|
- | 144 | * |
|
- | 145 | * Return value in CR0 |
|
- | 146 | * |
|
- | 147 | * @return Value read. |
|
- | 148 | */ |
|
- | 149 | static inline __u64 read_cr0(void) |
|
- | 150 | { |
|
- | 151 | __u64 v; |
|
- | 152 | __asm__ volatile ("movq %%cr0,%0" : "=r" (v)); |
|
- | 153 | return v; |
|
- | 154 | } |
|
- | 155 | ||
143 | /** Read CR2 |
156 | /** Read CR2 |
144 | * |
157 | * |
145 | * Return value in CR2 |
158 | * Return value in CR2 |
146 | * |
159 | * |
147 | * @return Value read. |
160 | * @return Value read. |
148 | */ |
161 | */ |
- | 162 | static inline __u64 read_cr2(void) |
|
- | 163 | { |
|
- | 164 | __u64 v; |
|
149 | static inline __u64 read_cr2(void) { __u64 v; __asm__ volatile ("movq %%cr2,%0" : "=r" (v)); return v; } |
165 | __asm__ volatile ("movq %%cr2,%0" : "=r" (v)); |
- | 166 | return v; |
|
- | 167 | } |
|
150 | 168 | ||
151 | /** Write CR3 |
169 | /** Write CR3 |
152 | * |
170 | * |
153 | * Write value to CR3. |
171 | * Write value to CR3. |
154 | * |
172 | * |
155 | * @param v Value to be written. |
173 | * @param v Value to be written. |
156 | */ |
174 | */ |
- | 175 | static inline void write_cr3(__u64 v) |
|
- | 176 | { |
|
157 | static inline void write_cr3(__u64 v) { __asm__ volatile ("movq %0,%%cr3\n" : : "r" (v)); } |
177 | __asm__ volatile ("movq %0,%%cr3\n" : : "r" (v)); |
- | 178 | } |
|
158 | 179 | ||
159 | /** Read CR3 |
180 | /** Read CR3 |
160 | * |
181 | * |
161 | * Return value in CR3 |
182 | * Return value in CR3 |
162 | * |
183 | * |
163 | * @return Value read. |
184 | * @return Value read. |
164 | */ |
185 | */ |
- | 186 | static inline __u64 read_cr3(void) |
|
- | 187 | { |
|
- | 188 | __u64 v; |
|
165 | static inline __u64 read_cr3(void) { __u64 v; __asm__ volatile ("movq %%cr3,%0" : "=r" (v)); return v; } |
189 | __asm__ volatile ("movq %%cr3,%0" : "=r" (v)); |
- | 190 | return v; |
|
- | 191 | } |
|
166 | 192 | ||
167 | 193 | ||
168 | /** Enable local APIC |
194 | /** Enable local APIC |
169 | * |
195 | * |
170 | * Enable local APIC in MSR. |
196 | * Enable local APIC in MSR. |