Changeset 36b01bb2 in mainline
- Timestamp:
- 2006-01-24T14:38:29Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- fa7d9c4
- Parents:
- 0d8d27c
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia64/Makefile.inc
r0d8d27c r36b01bb2 65 65 arch/$(ARCH)/src/ivt.S \ 66 66 arch/$(ARCH)/src/interrupt.c \ 67 arch/$(ARCH)/src/mm/asid.c \ 67 68 arch/$(ARCH)/src/mm/frame.c \ 68 69 arch/$(ARCH)/src/mm/page.c \ 70 arch/$(ARCH)/src/mm/tlb.c \ 69 71 arch/$(ARCH)/src/drivers/it.c -
arch/ia64/include/mm/asid.h
r0d8d27c r36b01bb2 34 34 typedef __u32 asid_t; 35 35 36 /* 37 * ASID_MAX can range from 2^18 - 1 to 2^24 - 1, 38 * depending on architecture implementation. 36 /** Number of ia64 RIDs (Region Identifiers) per kernel ASID. */ 37 #define RIDS_PER_ASID 7 38 #define RID_OVERFLOW 16777216 /* 2^24 */ 39 40 /** 41 * The point is to have ASID_MAX_ARCH big enough 42 * so that it is never reached and the ASID allocation 43 * mechanism in asid_get() never resorts to stealing. 39 44 */ 40 #define ASID_MAX_ARCH 16777215 /* 2^24 - 1*/45 #define ASID_MAX_ARCH ((asid_t) -1) /**< This value is never reached. */ 41 46 42 #define asid_find_free() ASID_MAX_ARCH 47 /** 48 * Value used to recognize the situation when all ASIDs were already allocated. 49 */ 50 #define ASID_OVERFLOW (RID_OVERFLOW/RIDS_PER_ASID) 51 43 52 #define asid_put_arch(x) 44 53 -
genarch/src/mm/asid.c
r0d8d27c r36b01bb2 126 126 tlb_shootdown_start(TLB_INVL_ASID, asid, 0, 0); 127 127 tlb_shootdown_finalize(); 128 tlb_invalidate_asid(asid); 128 129 as->asid = ASID_INVALID; 129 130 -
generic/src/mm/tlb.c
r0d8d27c r36b01bb2 55 55 56 56 /* 57 * TODO: assemble shootdown message. 57 * TODO: wrap parameters into a message and 58 * dispatch it to all CPUs excluding this one. 58 59 */ 60 59 61 tlb_shootdown_ipi_send(); 60 62 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 }75 76 63 busy_wait: 77 64 for (i = 0; i<config.cpu_count; i++) … … 96 83 spinlock_lock(&tlblock); 97 84 spinlock_unlock(&tlblock); 98 tlb_invalidate_all(); /* TODO: use valid ASID*/85 tlb_invalidate_all(); /* TODO: be more finer-grained in what to invalidate */ 99 86 CPU->tlb_active = 1; 100 87 }
Note:
See TracChangeset
for help on using the changeset viewer.