Changeset f8ddd17 in mainline for kernel/arch/sparc64/src/mm/cache.c
- Timestamp:
- 2006-12-09T20:20:50Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b82a13c
- Parents:
- 9ab9c2ec
- File:
-
- 1 edited
-
kernel/arch/sparc64/src/mm/cache.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/src/mm/cache.c
r9ab9c2ec rf8ddd17 32 32 /** 33 33 * @file 34 * @brief D-cache shootdown algorithm.35 34 */ 36 35 37 36 #include <arch/mm/cache.h> 38 37 39 #ifdef CONFIG_SMP40 41 #include <smp/ipi.h>42 #include <arch/interrupt.h>43 #include <synch/spinlock.h>44 #include <arch.h>45 #include <debug.h>46 47 /**48 * This spinlock is used by the processors to synchronize during the D-cache49 * shootdown.50 */51 SPINLOCK_INITIALIZE(dcachelock);52 53 /** Initialize the D-cache shootdown sequence.54 *55 * Start the shootdown sequence by sending out an IPI and wait until all56 * processors spin on the dcachelock spinlock.57 */58 void dcache_shootdown_start(void)59 {60 int i;61 62 CPU->arch.dcache_active = 0;63 spinlock_lock(&dcachelock);64 65 ipi_broadcast(IPI_DCACHE_SHOOTDOWN);66 67 busy_wait:68 for (i = 0; i < config.cpu_count; i++)69 if (cpus[i].arch.dcache_active)70 goto busy_wait;71 }72 73 /** Finish the D-cache shootdown sequence. */74 void dcache_shootdown_finalize(void)75 {76 spinlock_unlock(&dcachelock);77 CPU->arch.dcache_active = 1;78 }79 80 /** Process the D-cache shootdown IPI. */81 void dcache_shootdown_ipi_recv(void)82 {83 ASSERT(CPU);84 85 CPU->arch.dcache_active = 0;86 spinlock_lock(&dcachelock);87 spinlock_unlock(&dcachelock);88 89 dcache_flush();90 91 CPU->arch.dcache_active = 1;92 }93 94 #endif /* CONFIG_SMP */95 96 38 /** @} 97 39 */
Note:
See TracChangeset
for help on using the changeset viewer.
