Rev 1072 | Rev 1251 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1072 | Rev 1186 | ||
---|---|---|---|
Line 27... | Line 27... | ||
27 | */ |
27 | */ |
28 | 28 | ||
29 | #ifndef __amd64_ASM_H__ |
29 | #ifndef __amd64_ASM_H__ |
30 | #define __amd64_ASM_H__ |
30 | #define __amd64_ASM_H__ |
31 | 31 | ||
- | 32 | #include <arch/pm.h> |
|
32 | #include <arch/types.h> |
33 | #include <arch/types.h> |
33 | #include <config.h> |
34 | #include <config.h> |
34 | 35 | ||
35 | extern void asm_delay_loop(__u32 t); |
36 | extern void asm_delay_loop(__u32 t); |
36 | extern void asm_fake_loop(__u32 t); |
37 | extern void asm_fake_loop(__u32 t); |
Line 195... | Line 196... | ||
195 | * |
196 | * |
196 | * @param addr Address on a page whose TLB entry is to be invalidated. |
197 | * @param addr Address on a page whose TLB entry is to be invalidated. |
197 | */ |
198 | */ |
198 | static inline void invlpg(__address addr) |
199 | static inline void invlpg(__address addr) |
199 | { |
200 | { |
200 | __asm__ volatile ("invlpg %0\n" :: "m" (*((__native *)addr))); |
201 | __asm__ volatile ("invlpg %0\n" :: "m" (*((__native *)addr))); |
- | 202 | } |
|
- | 203 | ||
- | 204 | /** Load GDTR register from memory. |
|
- | 205 | * |
|
- | 206 | * @param gdtr_reg Address of memory from where to load GDTR. |
|
- | 207 | */ |
|
- | 208 | static inline void gdtr_load(struct ptr_16_64 *gdtr_reg) |
|
- | 209 | { |
|
- | 210 | __asm__ volatile ("lgdt %0\n" : : "m" (*gdtr_reg)); |
|
- | 211 | } |
|
- | 212 | ||
- | 213 | /** Store GDTR register to memory. |
|
- | 214 | * |
|
- | 215 | * @param gdtr_reg Address of memory to where to load GDTR. |
|
- | 216 | */ |
|
- | 217 | static inline void gdtr_store(struct ptr_16_64 *gdtr_reg) |
|
- | 218 | { |
|
- | 219 | __asm__ volatile ("sgdt %0\n" : : "m" (*gdtr_reg)); |
|
- | 220 | } |
|
- | 221 | ||
- | 222 | /** Load IDTR register from memory. |
|
- | 223 | * |
|
- | 224 | * @param idtr_reg Address of memory from where to load IDTR. |
|
- | 225 | */ |
|
- | 226 | static inline void idtr_load(struct ptr_16_64 *idtr_reg) |
|
- | 227 | { |
|
- | 228 | __asm__ volatile ("lidt %0\n" : : "m" (*idtr_reg)); |
|
- | 229 | } |
|
- | 230 | ||
- | 231 | /** Load TR from descriptor table. |
|
- | 232 | * |
|
- | 233 | * @param sel Selector specifying descriptor of TSS segment. |
|
- | 234 | */ |
|
- | 235 | static inline void tr_load(__u16 sel) |
|
- | 236 | { |
|
- | 237 | __asm__ volatile ("ltr %0" : : "r" (sel)); |
|
201 | } |
238 | } |
202 | 239 | ||
203 | #define GEN_READ_REG(reg) static inline __native read_ ##reg (void) \ |
240 | #define GEN_READ_REG(reg) static inline __native read_ ##reg (void) \ |
204 | { \ |
241 | { \ |
205 | __native res; \ |
242 | __native res; \ |