d511c84b |
1 | #include <linux/kernel.h> |
2 | #include <linux/module.h> |
3 | |
4 | int init_module() |
5 | { |
6 | unsigned tmp; |
7 | |
8 | /* Disable cache */ |
9 | |
10 | asm volatile ("movl %%cr0, %0\n\t" |
11 | "orl $0x40000000, %0\n\t" |
12 | "wbinvd\n\t" |
13 | "movl %0, %%cr0\n\t" |
14 | "wbinvd\n\t" |
15 | : "=r" (tmp) : : "memory"); |
16 | |
17 | return 0; |
18 | } |
19 | |
20 | void cleanup_module() |
21 | { |
22 | unsigned tmp; |
23 | |
24 | asm volatile ("movl %%cr0, %0\n\t" |
25 | "andl $0xbfffffff, %0\n\t" |
26 | "wbinvd\n\t" |
27 | "movl %0, %%cr0\n\t" |
28 | "wbinvd\n\t" |
29 | : "=r" (tmp) : : "memory"); |
30 | } |