Subversion Repositories HelenOS

Rev

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
{