Changeset cc205f1 in mainline for arch/mips32/src/mm/asid.c
- Timestamp:
- 2005-10-06T12:45:22Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- fd3c9e5
- Parents:
- bca1b47
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/mips32/src/mm/asid.c
rbca1b47 rcc205f1 1 1 /* 2 2 * Copyright (C) 2005 Martin Decky 3 * Copyright (C) 2005 Jakub Jermar 3 4 * All rights reserved. 4 5 * … … 31 32 #include <arch.h> 32 33 #include <debug.h> 33 34 #define ASIDS 256 34 #include <typedefs.h> 35 35 36 36 static spinlock_t asid_usage_lock; … … 54 54 spinlock_lock(&asid_usage_lock); 55 55 56 for (i =0, j = 0; (i<ASIDS); i++) {56 for (i = ASID_START, j = ASID_START; i < ASIDS; i++) { 57 57 if (asid_usage[i] < min) { 58 58 j = i; … … 63 63 } 64 64 65 asid_usage[ i]++;65 asid_usage[j]++; 66 66 67 67 spinlock_unlock(&asid_usage_lock); … … 84 84 spinlock_lock(&asid_usage_lock); 85 85 86 ASSERT(asid != ASID_INVALID); 87 86 88 ASSERT(asid_usage[asid] > 0); 87 89 asid_usage[asid]--; … … 90 92 cpu_priority_restore(pri); 91 93 } 94 95 /** Find out whether ASID is used by more address spaces 96 * 97 * Find out whether ASID is used by more address spaces. 98 * 99 * @param asid ASID in question. 100 * 101 * @return True if 'asid' is used by more address spaces, false otherwise. 102 */ 103 bool asid_has_conflicts(asid_t asid) 104 { 105 bool has_conflicts = false; 106 pri_t pri; 107 108 ASSERT(asid != ASID_INVALID); 109 110 pri = cpu_priority_high(); 111 spinlock_lock(&asid_usage_lock); 112 113 if (asid_usage[asid] > 1) 114 has_conflicts = true; 115 116 spinlock_unlock(&asid_usage_lock); 117 cpu_priority_restore(pri); 118 119 return has_conflicts; 120 }
Note:
See TracChangeset
for help on using the changeset viewer.