Changeset 4512d7e in mainline for generic/src
- Timestamp:
- 2006-01-19T22:17:47Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6461d67c
- Parents:
- 64c44e8
- Location:
- generic/src
- Files:
-
- 4 edited
-
main/kinit.c (modified) (1 diff)
-
main/main.c (modified) (1 diff)
-
mm/as.c (modified) (6 diffs)
-
mm/tlb.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
generic/src/main/kinit.c
r64c44e8 r4512d7e 147 147 panic("config.init_addr is not frame aligned"); 148 148 149 as = as_create(NULL );149 as = as_create(NULL, 0); 150 150 if (!as) 151 151 panic("as_create\n"); -
generic/src/main/main.c
r64c44e8 r4512d7e 186 186 * Create kernel address space. 187 187 */ 188 as = as_create(GET_PTL0_ADDRESS() );188 as = as_create(GET_PTL0_ADDRESS(), AS_KERNEL); 189 189 if (!as) 190 190 panic("can't create kernel address space\n"); -
generic/src/mm/as.c
r64c44e8 r4512d7e 34 34 35 35 #include <mm/as.h> 36 #include <mm/asid.h> 36 37 #include <mm/page.h> 37 38 #include <mm/frame.h> … … 40 41 #include <arch/mm/page.h> 41 42 #include <genarch/mm/page_pt.h> 43 #include <mm/asid.h> 42 44 #include <arch/mm/asid.h> 43 45 #include <arch/mm/as.h> … … 71 73 * (Virtual Address Translation) mechanisms. 72 74 */ 73 as_t *as_create(pte_t *ptl0 )75 as_t *as_create(pte_t *ptl0, int flags) 74 76 { 75 77 as_t *as; … … 77 79 as = (as_t *) malloc(sizeof(as_t)); 78 80 if (as) { 81 list_initialize(&as->as_with_asid_link); 79 82 spinlock_initialize(&as->lock, "as_lock"); 80 83 list_initialize(&as->as_area_head); 81 84 82 as->asid = asid_get(); 85 if (flags & AS_KERNEL) 86 as->asid = ASID_KERNEL; 87 else 88 as->asid = ASID_INVALID; 83 89 84 90 as->ptl0 = ptl0; … … 290 296 ipl_t ipl; 291 297 298 asid_install(as); 299 292 300 ipl = interrupts_disable(); 293 301 spinlock_lock(&as->lock); … … 299 307 /* 300 308 * Perform architecture-specific steps. 301 * (e.g. invalidate TLB, install ASIDetc.)309 * (e.g. write ASID to hardware register etc.) 302 310 */ 303 311 as_install_arch(as); -
generic/src/mm/tlb.c
r64c44e8 r4512d7e 47 47 #ifdef CONFIG_SMP 48 48 /* must be called with interrupts disabled */ 49 void tlb_shootdown_start( void)49 void tlb_shootdown_start(tlb_invalidate_type_t type, asid_t asid, __address page, count_t cnt) 50 50 { 51 51 int i; … … 53 53 CPU->tlb_active = 0; 54 54 spinlock_lock(&tlblock); 55 56 /* 57 * TODO: assemble shootdown message. 58 */ 55 59 tlb_shootdown_ipi_send(); 56 tlb_invalidate(0); /* TODO: use valid ASID */ 60 61 switch (type) { 62 case TLB_INVL_ALL: 63 tlb_invalidate_all(); 64 break; 65 case TLB_INVL_ASID: 66 tlb_invalidate_asid(asid); 67 break; 68 case TLB_INVL_PAGES: 69 tlb_invalidate_pages(asid, page, cnt); 70 break; 71 default: 72 panic("unknown tlb_invalidate_type_t value: %d\n", type); 73 break; 74 } 57 75 58 76 busy_wait: … … 78 96 spinlock_lock(&tlblock); 79 97 spinlock_unlock(&tlblock); 80 tlb_invalidate (0); /* TODO: use valid ASID */98 tlb_invalidate_all(); /* TODO: use valid ASID */ 81 99 CPU->tlb_active = 1; 82 100 }
Note:
See TracChangeset
for help on using the changeset viewer.
