Rev 3862 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3862 | Rev 4638 | ||
|---|---|---|---|
| Line 82... | Line 82... | ||
| 82 | uintptr_t page, count_t count) |
82 | uintptr_t page, count_t count) |
| 83 | { |
83 | { |
| 84 | unsigned int i; |
84 | unsigned int i; |
| 85 | 85 | ||
| 86 | CPU->tlb_active = 0; |
86 | CPU->tlb_active = 0; |
| - | 87 | ||
| 87 | spinlock_lock(&tlblock); |
88 | spinlock_lock(&tlblock); |
| 88 | 89 | ||
| 89 | for (i = 0; i < config.cpu_count; i++) { |
90 | for (i = 0; i < config.cpu_count; i++) { |
| 90 | cpu_t *cpu; |
91 | cpu_t *cpu; |
| 91 | 92 | ||
| Line 116... | Line 117... | ||
| 116 | } |
117 | } |
| 117 | spinlock_unlock(&cpu->lock); |
118 | spinlock_unlock(&cpu->lock); |
| 118 | } |
119 | } |
| 119 | 120 | ||
| 120 | tlb_shootdown_ipi_send(); |
121 | tlb_shootdown_ipi_send(); |
| 121 | - | ||
| 122 | busy_wait: |
122 | busy_wait: |
| 123 | for (i = 0; i < config.cpu_count; i++) |
123 | for (i = 0; i < config.cpu_count; i++) { |
| 124 | if (cpus[i].tlb_active) |
124 | if (cpus[i].tlb_active) |
| 125 | goto busy_wait; |
125 | goto busy_wait; |
| - | 126 | } |
|
| 126 | } |
127 | } |
| 127 | 128 | ||
| 128 | /** Finish TLB shootdown sequence. */ |
129 | /** Finish TLB shootdown sequence. */ |
| 129 | void tlb_shootdown_finalize(void) |
130 | void tlb_shootdown_finalize(void) |
| 130 | { |
131 | { |