Rev 1380 | Rev 1637 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1380 | Rev 1636 | ||
---|---|---|---|
Line 122... | Line 122... | ||
122 | 122 | ||
123 | /* |
123 | /* |
124 | * Get the system rid of the stolen ASID. |
124 | * Get the system rid of the stolen ASID. |
125 | */ |
125 | */ |
126 | tlb_shootdown_start(TLB_INVL_ASID, asid, 0, 0); |
126 | tlb_shootdown_start(TLB_INVL_ASID, asid, 0, 0); |
127 | tlb_shootdown_finalize(); |
- | |
128 | tlb_invalidate_asid(asid); |
127 | tlb_invalidate_asid(asid); |
- | 128 | tlb_shootdown_finalize(); |
|
129 | } else { |
129 | } else { |
130 | 130 | ||
131 | /* |
131 | /* |
132 | * There is at least one unallocated ASID. |
132 | * There is at least one unallocated ASID. |
133 | * Find it and assign it. |
133 | * Find it and assign it. |
134 | */ |
134 | */ |
135 | 135 | ||
136 | asid = asid_find_free(); |
136 | asid = asid_find_free(); |
137 | asids_allocated++; |
137 | asids_allocated++; |
- | 138 | ||
- | 139 | /* |
|
- | 140 | * Purge the allocated rid from TLBs. |
|
- | 141 | */ |
|
- | 142 | tlb_shootdown_start(TLB_INVL_ASID, asid, 0, 0); |
|
- | 143 | tlb_invalidate_asid(asid); |
|
- | 144 | tlb_shootdown_finalize(); |
|
138 | } |
145 | } |
139 | 146 | ||
140 | spinlock_unlock(&asidlock); |
147 | spinlock_unlock(&asidlock); |
141 | 148 | ||
142 | return asid; |
149 | return asid; |