Changeset 169587a in mainline for src/mm/tlb.c


Ignore:
Timestamp:
2005-02-21T21:47:22Z (20 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b109ebb
Parents:
0ded477
Message:

TLB shootdown.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/mm/tlb.c

    r0ded477 r169587a  
    2828
    2929#include <mm/tlb.h>
     30#include <synch/spinlock.h>
     31#include <typedefs.h>
     32#include <arch/atomic.h>
     33#include <config.h>
    3034
    31 void tlb_shutdown(void)
     35#ifdef __SMP__
     36static spinlock_t tlblock;
     37static volatile int tlb_shutdown_cnt;
     38
     39void tlb_init(void)
    3240{
    33         /* TODO: implement tlb_shutdown */
     41        spinlock_initialize(&tlblock);
     42        tlb_shutdown_cnt = 0;
    3443}
     44
     45/* must be called with interrupts disabled */
     46void tlb_shutdown_start(void)
     47{
     48        spinlock_lock(&tlblock);
     49        tlb_shutdown_ipi_send();
     50       
     51        while (tlb_shutdown_cnt < config.cpu_active - 1)
     52                ;
     53               
     54        tlb_shutdown_cnt = 0;
     55}
     56
     57void tlb_shutdown_finalize(void)
     58{
     59        spinlock_unlock(&tlblock);
     60}
     61
     62void tlb_shutdown_ipi_recv(void)
     63{
     64        atomic_inc((int *) &tlb_shutdown_cnt);
     65        spinlock_lock(&tlblock);
     66        spinlock_unlock(&tlblock);
     67        tlb_invalidate(0);      /* TODO: use valid ASID */
     68}
     69#endif /* __SMP__ */
Note: See TracChangeset for help on using the changeset viewer.