Rev 2131 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2131 | Rev 2292 | ||
|---|---|---|---|
| Line 76... | Line 76... | ||
| 76 | * @param type Type describing scope of shootdown. |
76 | * @param type Type describing scope of shootdown. |
| 77 | * @param asid Address space, if required by type. |
77 | * @param asid Address space, if required by type. |
| 78 | * @param page Virtual page address, if required by type. |
78 | * @param page Virtual page address, if required by type. |
| 79 | * @param count Number of pages, if required by type. |
79 | * @param count Number of pages, if required by type. |
| 80 | */ |
80 | */ |
| 81 | void tlb_shootdown_start(tlb_invalidate_type_t type, asid_t asid, uintptr_t page, count_t count) |
81 | void tlb_shootdown_start(tlb_invalidate_type_t type, asid_t asid, |
| - | 82 | uintptr_t page, count_t count) |
|
| 82 | { |
83 | { |
| 83 | int i; |
84 | int i; |
| 84 | 85 | ||
| 85 | CPU->tlb_active = 0; |
86 | CPU->tlb_active = 0; |
| 86 | spinlock_lock(&tlblock); |
87 | spinlock_lock(&tlblock); |
| Line 105... | Line 106... | ||
| 105 | cpu->tlb_messages[0].count = 0; |
106 | cpu->tlb_messages[0].count = 0; |
| 106 | } else { |
107 | } else { |
| 107 | /* |
108 | /* |
| 108 | * Enqueue the message. |
109 | * Enqueue the message. |
| 109 | */ |
110 | */ |
| 110 | cpu->tlb_messages[cpu->tlb_messages_count].type = type; |
111 | index_t idx = cpu->tlb_messages_count++; |
| 111 | cpu->tlb_messages[cpu->tlb_messages_count].asid = asid; |
112 | cpu->tlb_messages[idx].type = type; |
| 112 | cpu->tlb_messages[cpu->tlb_messages_count].page = page; |
113 | cpu->tlb_messages[idx].asid = asid; |
| 113 | cpu->tlb_messages[cpu->tlb_messages_count].count = count; |
114 | cpu->tlb_messages[idx].page = page; |
| 114 | cpu->tlb_messages_count++; |
115 | cpu->tlb_messages[idx].count = count; |
| 115 | } |
116 | } |
| 116 | spinlock_unlock(&cpu->lock); |
117 | spinlock_unlock(&cpu->lock); |
| 117 | } |
118 | } |
| 118 | 119 | ||
| 119 | tlb_shootdown_ipi_send(); |
120 | tlb_shootdown_ipi_send(); |