Rev 257 | Rev 282 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 257 | Rev 268 | ||
---|---|---|---|
Line 163... | Line 163... | ||
163 | * @return Value read. |
163 | * @return Value read. |
164 | */ |
164 | */ |
165 | static inline __u64 read_cr3(void) { __u64 v; __asm__ volatile ("movq %%cr3,%0" : "=r" (v)); return v; } |
165 | static inline __u64 read_cr3(void) { __u64 v; __asm__ volatile ("movq %%cr3,%0" : "=r" (v)); return v; } |
166 | 166 | ||
167 | 167 | ||
- | 168 | /** Enable local APIC |
|
- | 169 | * |
|
- | 170 | * Enable local APIC in MSR. |
|
- | 171 | */ |
|
- | 172 | static inline void enable_l_apic_in_msr() |
|
- | 173 | { |
|
- | 174 | __asm__ volatile ( |
|
- | 175 | "movl $0x1b, %%ecx;" |
|
- | 176 | "rdmsr;" |
|
- | 177 | "orl $(1<<11),%%eax;" |
|
- | 178 | "orl $(0xfee00000),%%eax;" |
|
- | 179 | "wrmsr;" |
|
- | 180 | : |
|
- | 181 | : |
|
- | 182 | :"%eax","%ecx","%edx" |
|
- | 183 | ); |
|
- | 184 | } |
|
- | 185 | ||
168 | extern size_t interrupt_handler_size; |
186 | extern size_t interrupt_handler_size; |
169 | extern void interrupt_handlers(void); |
187 | extern void interrupt_handlers(void); |
170 | 188 | ||
171 | #endif |
189 | #endif |