Rev 2071 | Rev 2089 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2071 | Rev 2082 | ||
|---|---|---|---|
| Line 74... | Line 74... | ||
| 74 | * cr0.em = 0 -> we do not emulate coprocessor |
74 | * cr0.em = 0 -> we do not emulate coprocessor |
| 75 | * cr0.mp = 1 -> we do want lazy context switch |
75 | * cr0.mp = 1 -> we do want lazy context switch |
| 76 | */ |
76 | */ |
| 77 | void cpu_setup_fpu(void) |
77 | void cpu_setup_fpu(void) |
| 78 | { |
78 | { |
| 79 | __asm__ volatile ( |
79 | asm volatile ( |
| 80 | "movq %%cr0, %%rax;" |
80 | "movq %%cr0, %%rax;" |
| 81 | "btsq $1, %%rax;" /* cr0.mp */ |
81 | "btsq $1, %%rax;" /* cr0.mp */ |
| 82 | "btrq $2, %%rax;" /* cr0.em */ |
82 | "btrq $2, %%rax;" /* cr0.em */ |
| 83 | "movq %%rax, %%cr0;" |
83 | "movq %%rax, %%cr0;" |
| 84 | 84 | ||
| Line 97... | Line 97... | ||
| 97 | * does a lazy fpu context switch. |
97 | * does a lazy fpu context switch. |
| 98 | * |
98 | * |
| 99 | */ |
99 | */ |
| 100 | void fpu_disable(void) |
100 | void fpu_disable(void) |
| 101 | { |
101 | { |
| 102 | __asm__ volatile ( |
102 | asm volatile ( |
| 103 | "mov %%cr0,%%rax;" |
103 | "mov %%cr0,%%rax;" |
| 104 | "bts $3,%%rax;" |
104 | "bts $3,%%rax;" |
| 105 | "mov %%rax,%%cr0;" |
105 | "mov %%rax,%%cr0;" |
| 106 | : |
106 | : |
| 107 | : |
107 | : |
| Line 109... | Line 109... | ||
| 109 | ); |
109 | ); |
| 110 | } |
110 | } |
| 111 | 111 | ||
| 112 | void fpu_enable(void) |
112 | void fpu_enable(void) |
| 113 | { |
113 | { |
| 114 | __asm__ volatile ( |
114 | asm volatile ( |
| 115 | "mov %%cr0,%%rax;" |
115 | "mov %%cr0,%%rax;" |
| 116 | "btr $3,%%rax;" |
116 | "btr $3,%%rax;" |
| 117 | "mov %%rax,%%cr0;" |
117 | "mov %%rax,%%cr0;" |
| 118 | : |
118 | : |
| 119 | : |
119 | : |