Changeset 9f63a83 in mainline for kernel/arch/sparc64/src/mm/cache_asm.S
- Timestamp:
- 2007-01-19T12:21:27Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 718d600
- Parents:
- 81cfefa
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/src/mm/cache_asm.S
r81cfefa r9f63a83 29 29 #include <arch/arch.h> 30 30 31 #define DCACHE_SIZE (16 *1024)31 #define DCACHE_SIZE (16 * 1024) 32 32 #define DCACHE_LINE_SIZE 32 33 33 34 #define DCACHE_TAG_SHIFT 2 35 36 .register %g2, #scratch 37 .register %g3, #scratch 38 39 /** Flush the whole D-cache. */ 34 40 .global dcache_flush 35 41 dcache_flush: … … 43 49 membar #Sync 44 50 51 /** Flush only D-cache lines of one virtual color. 52 * 53 * @param o0 Virtual color to be flushed. 54 */ 55 .global dcache_flush_color 56 dcache_flush_color: 57 mov (DCACHE_SIZE / DCACHE_LINE_SIZE) / 2, %g1 58 set DCACHE_SIZE / 2, %g2 59 sllx %g2, %o0, %g2 60 sub %g2, DCACHE_LINE_SIZE, %g2 61 0: stxa %g0, [%g2] ASI_DCACHE_TAG 62 membar #Sync 63 subcc %g1, 1, %g1 64 bnz,pt %xcc, 0b 65 sub %g2, DCACHE_LINE_SIZE, %g2 66 retl 67 nop 68 69 /** Flush only D-cache lines of one virtual color and one tag. 70 * 71 * @param o0 Virtual color to lookup the tag. 72 * @param o1 Tag of the cachelines to be flushed. 73 */ 74 .global dcache_flush_tag 75 dcache_flush_tag: 76 mov (DCACHE_SIZE / DCACHE_LINE_SIZE) / 2, %g1 77 set DCACHE_SIZE / 2, %g2 78 sllx %g2, %o0, %g2 79 sub %g2, DCACHE_LINE_SIZE, %g2 80 0: ldxa [%g2] ASI_DCACHE_TAG, %g3 81 srlx %g3, DCACHE_TAG_SHIFT, %g3 82 cmp %g3, %o1 83 bnz 1f 84 nop 85 stxa %g0, [%g2] ASI_DCACHE_TAG 86 membar #Sync 87 1: subcc %g1, 1, %g1 88 bnz,pt %xcc, 0b 89 sub %g2, DCACHE_LINE_SIZE, %g2 90 retl 91 nop
Note:
See TracChangeset
for help on using the changeset viewer.