Changeset a35b458 in mainline for kernel/generic/src/mm/tlb.c
- Timestamp:
- 2018-03-02T20:10:49Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/tlb.c
r3061bc1 ra35b458 87 87 CPU->tlb_active = false; 88 88 irq_spinlock_lock(&tlblock, false); 89 89 90 90 size_t i; 91 91 for (i = 0; i < config.cpu_count; i++) { 92 92 if (i == CPU->id) 93 93 continue; 94 94 95 95 cpu_t *cpu = &cpus[i]; 96 96 97 97 irq_spinlock_lock(&cpu->lock, false); 98 98 if (cpu->tlb_messages_count == TLB_MESSAGE_QUEUE_LEN) { … … 118 118 irq_spinlock_unlock(&cpu->lock, false); 119 119 } 120 120 121 121 tlb_shootdown_ipi_send(); 122 122 123 123 busy_wait: 124 124 for (i = 0; i < config.cpu_count; i++) { … … 126 126 goto busy_wait; 127 127 } 128 128 129 129 return ipl; 130 130 } … … 153 153 { 154 154 assert(CPU); 155 155 156 156 CPU->tlb_active = false; 157 157 irq_spinlock_lock(&tlblock, false); 158 158 irq_spinlock_unlock(&tlblock, false); 159 159 160 160 irq_spinlock_lock(&CPU->lock, false); 161 161 assert(CPU->tlb_messages_count <= TLB_MESSAGE_QUEUE_LEN); 162 162 163 163 size_t i; 164 164 for (i = 0; i < CPU->tlb_messages_count; i++) { … … 167 167 uintptr_t page = CPU->tlb_messages[i].page; 168 168 size_t count = CPU->tlb_messages[i].count; 169 169 170 170 switch (type) { 171 171 case TLB_INVL_ALL: … … 183 183 break; 184 184 } 185 185 186 186 if (type == TLB_INVL_ALL) 187 187 break; 188 188 } 189 189 190 190 CPU->tlb_messages_count = 0; 191 191 irq_spinlock_unlock(&CPU->lock, false);
Note:
See TracChangeset
for help on using the changeset viewer.