Changeset 22f7769 in mainline for arch/mips32/src
- Timestamp:
- 2005-10-17T23:31:41Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4b2c872d
- Parents:
- 75eacab
- Location:
- arch/mips32/src
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/mips32/src/drivers/arc.c
r75eacab r22f7769 176 176 { 177 177 __u32 cnt; 178 pri_t pri;178 ipl_t ipl; 179 179 180 180 /* TODO: Should be spinlock? */ 181 pri = cpu_priority_high();181 ipl = interrupts_disable(); 182 182 arc_entry->write(1, &ch, 1, &cnt); 183 cpu_priority_restore(pri);183 interrupts_restore(ipl); 184 184 185 185 } -
arch/mips32/src/exception.c
r75eacab r22f7769 47 47 * NOTE ON OPERATION ORDERING 48 48 * 49 * On entry, cpu_priority_high() must be called before49 * On entry, interrupts_disable() must be called before 50 50 * exception bit is cleared. 51 51 */ 52 52 53 cpu_priority_high();53 interrupts_disable(); 54 54 cp0_status_write(cp0_status_read() & ~ (cp0_status_exl_exception_bit | 55 55 cp0_status_um_bit)); -
arch/mips32/src/interrupt.c
r75eacab r22f7769 53 53 } 54 54 55 pri_t cpu_priority_high(void) 55 /** Disable interrupts. 56 * 57 * @return Old interrupt priority level. 58 */ 59 ipl_t interrupts_disable(void) 56 60 { 57 pri_t pri = (pri_t) cp0_status_read();58 cp0_status_write( pri& ~cp0_status_ie_enabled_bit);59 return pri;61 ipl_t ipl = (ipl_t) cp0_status_read(); 62 cp0_status_write(ipl & ~cp0_status_ie_enabled_bit); 63 return ipl; 60 64 } 61 65 62 pri_t cpu_priority_low(void) 66 /** Enable interrupts. 67 * 68 * @return Old interrupt priority level. 69 */ 70 ipl_t interrupts_enable(void) 63 71 { 64 pri_t pri = (pri_t) cp0_status_read();65 cp0_status_write( pri| cp0_status_ie_enabled_bit);66 return pri;72 ipl_t ipl = (ipl_t) cp0_status_read(); 73 cp0_status_write(ipl | cp0_status_ie_enabled_bit); 74 return ipl; 67 75 } 68 76 69 void cpu_priority_restore(pri_t pri) 77 /** Restore interrupt priority level. 78 * 79 * @param ipl Saved interrupt priority level. 80 */ 81 void interrupts_restore(ipl_t ipl) 70 82 { 71 cp0_status_write(cp0_status_read() | ( pri& cp0_status_ie_enabled_bit));83 cp0_status_write(cp0_status_read() | (ipl & cp0_status_ie_enabled_bit)); 72 84 } 73 85 74 pri_t cpu_priority_read(void) 86 /** Read interrupt priority level. 87 * 88 * @return Current interrupt priority level. 89 */ 90 ipl_t interrupts_read(void) 75 91 { 76 92 return cp0_status_read(); -
arch/mips32/src/mips32.c
r75eacab r22f7769 53 53 { 54 54 /* It is not assumed by default */ 55 cpu_priority_high();55 interrupts_disable(); 56 56 57 57 init_arc(); -
arch/mips32/src/mm/asid.c
r75eacab r22f7769 45 45 asid_t asid_get(void) 46 46 { 47 pri_t pri;47 ipl_t ipl; 48 48 int i, j; 49 49 count_t min; … … 51 51 min = (unsigned) -1; 52 52 53 pri = cpu_priority_high();53 ipl = interrupts_disable(); 54 54 spinlock_lock(&asid_usage_lock); 55 55 … … 66 66 67 67 spinlock_unlock(&asid_usage_lock); 68 cpu_priority_restore(pri);68 interrupts_restore(ipl); 69 69 70 70 return i; … … 79 79 void asid_put(asid_t asid) 80 80 { 81 pri_t pri;81 ipl_t ipl; 82 82 83 pri = cpu_priority_high();83 ipl = interrupts_disable(); 84 84 spinlock_lock(&asid_usage_lock); 85 85 … … 90 90 91 91 spinlock_unlock(&asid_usage_lock); 92 cpu_priority_restore(pri);92 interrupts_restore(ipl); 93 93 } 94 94 … … 104 104 { 105 105 bool has_conflicts = false; 106 pri_t pri;106 ipl_t ipl; 107 107 108 108 ASSERT(asid != ASID_INVALID); 109 109 110 pri = cpu_priority_high();110 ipl = interrupts_disable(); 111 111 spinlock_lock(&asid_usage_lock); 112 112 … … 115 115 116 116 spinlock_unlock(&asid_usage_lock); 117 cpu_priority_restore(pri);117 interrupts_restore(ipl); 118 118 119 119 return has_conflicts; -
arch/mips32/src/mm/tlb.c
r75eacab r22f7769 316 316 { 317 317 entry_hi_t hi; 318 pri_t pri;318 ipl_t ipl; 319 319 int i; 320 320 321 321 ASSERT(asid != ASID_INVALID); 322 322 323 pri = cpu_priority_high();323 ipl = interrupts_disable(); 324 324 325 325 for (i = 0; i < TLB_SIZE; i++) { … … 337 337 } 338 338 339 cpu_priority_restore(pri);339 interrupts_restore(ipl); 340 340 } 341 341 -
arch/mips32/src/mm/vm.c
r75eacab r22f7769 42 42 { 43 43 entry_hi_t hi; 44 pri_t pri;44 ipl_t ipl; 45 45 46 46 hi.value = cp0_entry_hi_read(); 47 47 48 pri = cpu_priority_high();48 ipl = interrupts_disable(); 49 49 spinlock_lock(&vm->lock); 50 50 hi.asid = vm->asid; 51 51 cp0_entry_hi_write(hi.value); 52 52 spinlock_lock(&vm->unlock); 53 cpu_priority_restore(pri);53 interrupts_restore(ipl); 54 54 }
Note:
See TracChangeset
for help on using the changeset viewer.