📄 cache.lst
字号:
GAS LISTING /tmp/cc4oHvAg.s page 1 1 .section .mdebug.abi32 2 .previous 3 .section .debug_abbrev,"",@progbits 4 $Ldebug_abbrev0: 5 .section .debug_info,"",@progbits 6 $Ldebug_info0: 7 .section .debug_line,"",@progbits 8 $Ldebug_line0: 9 0000 E0000000 .text 9 02009800 9 00000101 9 FB0E0A00 9 01010101 10 $Ltext0: 11 .section .rodata.str1.4,"aMS",@progbits,1 12 .align 2 13 $LC0: 14 0000 25730A00 .ascii "%s\n\000" 15 .align 2 16 $LC1: 17 0004 44434143 .ascii "DCACHE\000" 17 484500 18 000b 00 .align 2 19 $LC7: 20 000c 4D525520 .ascii "MRU %d \000" 20 25642000 21 .align 2 22 $LC8: 23 0014 4E4D5255 .ascii "NMRU %d \000" 23 20256420 23 00 24 001d 000000 .align 2 25 $LC9: 26 0020 4C525520 .ascii "LRU %d \000" 26 25642000 27 .align 2 28 $LC12: 29 0028 0A00 .ascii "\n\000" 30 002a 0000 .align 2 31 $LC2: 32 002c 25303858 .ascii "%08X: \000" 32 3A2000 33 0033 00 .align 2 34 $LC3: 35 0034 57617920 .ascii "Way %d \000" 35 25642000 36 .align 2 37 $LC4: 38 003c 53657420 .ascii "Set %d \000" 38 25642000 39 .align 2 40 $LC5: 41 0044 5461673A .ascii "Tag: %08X \000" 41 20253038 41 58202000 42 .align 2 43 $LC6:GAS LISTING /tmp/cc4oHvAg.s page 2 44 0050 50412025 .ascii "PA %08X \000" 44 30385820 44 00 45 0059 000000 .align 2 46 $LC10: 47 005c 4C2000 .ascii "L \000" 48 005f 00 .align 2 49 $LC11: 50 0060 562000 .ascii "V \000" 51 0063 00 .text 52 .align 2 53 .globl cacheDump 54 .ent cacheDump 55 .type cacheDump, @function 56 cacheDump: 57 $LFB2: 58 .file 1 "/mnt/hgfs/boot/booter/source/cache.c" 1:/mnt/hgfs/boot/booter/source/cache.c **** /* 2:/mnt/hgfs/boot/booter/source/cache.c **** * Sample code to demonstrate CACHE manipulation 3:/mnt/hgfs/boot/booter/source/cache.c **** */ 4:/mnt/hgfs/boot/booter/source/cache.c **** #include "example.h" 5:/mnt/hgfs/boot/booter/source/cache.c **** 6:/mnt/hgfs/boot/booter/source/cache.c **** #define DCACHE 7:/mnt/hgfs/boot/booter/source/cache.c **** 8:/mnt/hgfs/boot/booter/source/cache.c **** #ifdef ICACHE 9:/mnt/hgfs/boot/booter/source/cache.c **** #define _CACHE "ICACHE" 10:/mnt/hgfs/boot/booter/source/cache.c **** #define COP "0x4" 11:/mnt/hgfs/boot/booter/source/cache.c **** #define TAG cp0RdITag 12:/mnt/hgfs/boot/booter/source/cache.c **** #define DATA cp0RdIData 13:/mnt/hgfs/boot/booter/source/cache.c **** #endif 14:/mnt/hgfs/boot/booter/source/cache.c **** 15:/mnt/hgfs/boot/booter/source/cache.c **** #ifdef DCACHE 16:/mnt/hgfs/boot/booter/source/cache.c **** #define _CACHE "DCACHE" 17:/mnt/hgfs/boot/booter/source/cache.c **** #define COP "0x5" 18:/mnt/hgfs/boot/booter/source/cache.c **** #define TAG cp0RdDTag 19:/mnt/hgfs/boot/booter/source/cache.c **** #define DATA cp0RdDData 20:/mnt/hgfs/boot/booter/source/cache.c **** #endif 21:/mnt/hgfs/boot/booter/source/cache.c **** 22:/mnt/hgfs/boot/booter/source/cache.c **** /********************************************************************/ 23:/mnt/hgfs/boot/booter/source/cache.c **** void 24:/mnt/hgfs/boot/booter/source/cache.c **** cacheDump (void) 25:/mnt/hgfs/boot/booter/source/cache.c **** { 59 .loc 1 25 0 60 .frame $sp,56,$31 # vars= 0, regs= 10/0, args= 16, gp= 0 61 .mask 0xc0ff0000,-4 62 .fmask 0x00000000,0 26:/mnt/hgfs/boot/booter/source/cache.c **** uint32 addr = 0x80000000; 27:/mnt/hgfs/boot/booter/source/cache.c **** int way, set, word; 28:/mnt/hgfs/boot/booter/source/cache.c **** uint32 tag; 29:/mnt/hgfs/boot/booter/source/cache.c **** 30:/mnt/hgfs/boot/booter/source/cache.c **** printf("%s\n", _CACHE); 63 .loc 1 30 0 64 0000 0000043C lui $4,%hi($LC0) 65 0004 0000053C lui $5,%hi($LC1) 66 .loc 1 25 0 67 0008 C8FFBD27 addiu $sp,$sp,-56 68 $LCFI0:GAS LISTING /tmp/cc4oHvAg.s page 3 69 .loc 1 30 0 70 000c 00008424 addiu $4,$4,%lo($LC0) 71 0010 0000A524 addiu $5,$5,%lo($LC1) 72 .loc 1 25 0 73 0014 3000BEAF sw $fp,48($sp) 74 $LCFI1: 75 0018 2C00B7AF sw $23,44($sp) 76 $LCFI2: 77 001c 2800B6AF sw $22,40($sp) 78 $LCFI3: 79 0020 2400B5AF sw $21,36($sp) 80 $LCFI4: 81 0024 2000B4AF sw $20,32($sp) 82 $LCFI5: 83 0028 1C00B3AF sw $19,28($sp) 84 $LCFI6: 85 002c 3400BFAF sw $31,52($sp) 86 $LCFI7: 87 0030 1800B2AF sw $18,24($sp) 88 $LCFI8: 89 0034 1400B1AF sw $17,20($sp) 90 $LCFI9: 91 0038 1000B0AF sw $16,16($sp) 92 $LCFI10: 31:/mnt/hgfs/boot/booter/source/cache.c **** 32:/mnt/hgfs/boot/booter/source/cache.c **** for (set = 0; set < 128; ++set) 93 .loc 1 32 0 94 .loc 1 30 0 95 .set noreorder 96 .set nomacro 97 003c 0000000C jal printf 98 0040 21980000 move $19,$0 99 .set macro 100 .set reorder 101 102 0044 00001E3C lui $fp,%hi($LC7) 103 0048 0000173C lui $23,%hi($LC8) 104 004c 0000163C lui $22,%hi($LC9) 105 0050 0000143C lui $20,%hi($LC12) 106 0054 0080153C li $21,-2147483648 # 0xffffffff80000000 33:/mnt/hgfs/boot/booter/source/cache.c **** { 34:/mnt/hgfs/boot/booter/source/cache.c **** for (way = 0; way < 4; ++way) 107 .loc 1 34 0 108 0058 21900000 move $18,$0 109 $L21: 110 005c 40891300 sll $17,$19,5 111 $LBB2: 35:/mnt/hgfs/boot/booter/source/cache.c **** { 36:/mnt/hgfs/boot/booter/source/cache.c **** addr = 0x80000000 + (way<<12) + (set<<5); 112 .loc 1 36 0 113 0060 00831200 sll $16,$18,12 114 $L20: 115 0064 21801102 addu $16,$16,$17 116 0068 21801502 addu $16,$16,$21 37:/mnt/hgfs/boot/booter/source/cache.c **** printf("%08X: ", addr); 117 .loc 1 37 0 118 006c 0000023C lui $2,%hi($LC2)GAS LISTING /tmp/cc4oHvAg.s page 4 119 0070 00004424 addiu $4,$2,%lo($LC2) 120 .set noreorder 121 .set nomacro 122 0074 0000000C jal printf 123 0078 21280002 move $5,$16 124 .set macro 125 .set reorder 126 38:/mnt/hgfs/boot/booter/source/cache.c **** printf("Way %d ", (addr & 0x00003000) >> 12); 127 .loc 1 38 0 128 007c 0000023C lui $2,%hi($LC3) 129 0080 00300532 andi $5,$16,0x3000 130 0084 00004424 addiu $4,$2,%lo($LC3) 131 .set noreorder 132 .set nomacro 133 0088 0000000C jal printf 134 008c 022B0500 srl $5,$5,12 135 .set macro 136 .set reorder 137 39:/mnt/hgfs/boot/booter/source/cache.c **** printf("Set %d ", (addr & 0x00000FE0) >> 5); 138 .loc 1 39 0 139 0090 0000023C lui $2,%hi($LC4) 140 0094 E00F0532 andi $5,$16,0xfe0 141 0098 42290500 srl $5,$5,5 142 .set noreorder 143 .set nomacro 144 009c 0000000C jal printf 145 00a0 00004424 addiu $4,$2,%lo($LC4) 146 .set macro 147 .set reorder 148 40:/mnt/hgfs/boot/booter/source/cache.c **** 41:/mnt/hgfs/boot/booter/source/cache.c **** asm volatile (" cache "COP",0(%0)" : : "r" (addr) ); 149 .loc 1 41 0 150 #APP 151 00a4 000005BE cache 0x5,0($16) 42:/mnt/hgfs/boot/booter/source/cache.c **** asm volatile (" nop"); 152 .loc 1 42 0 153 00a8 00000000 nop 43:/mnt/hgfs/boot/booter/source/cache.c **** tag = TAG(); 44:/mnt/hgfs/boot/booter/source/cache.c **** printf("Tag: %08X ", tag); 45:/mnt/hgfs/boot/booter/source/cache.c **** printf("PA %08X ", (tag & 0xFFFFF000) | (set<<5)); 154 .loc 1 45 0 155 #NO_APP 156 .loc 1 43 0 157 .set noreorder 158 .set nomacro 159 00ac 0000000C jal cp0RdDTag 160 00b0 40891300 sll $17,$19,5 161 .set macro 162 .set reorder 163 164 00b4 21804000 move $16,$2 165 .loc 1 44 0 166 00b8 0000023C lui $2,%hi($LC5) 167 00bc 00004424 addiu $4,$2,%lo($LC5)GAS LISTING /tmp/cc4oHvAg.s page 5 168 .set noreorder 169 .set nomacro 170 00c0 0000000C jal printf 171 00c4 21280002 move $5,$16 172 .set macro 173 .set reorder 174 175 .loc 1 45 0 176 00c8 00F00524 li $5,-4096 # 0xfffffffffffff000 177 00cc 0000023C lui $2,%hi($LC6) 178 00d0 24280502 and $5,$16,$5 179 00d4 00004424 addiu $4,$2,%lo($LC6) 180 .set noreorder 181 .set nomacro 182 00d8 0000000C jal printf 183 00dc 2528B100 or $5,$5,$17 184 .set macro 185 .set reorder 186 46:/mnt/hgfs/boot/booter/source/cache.c **** printf("MRU %d ", (tag & 0x00000C00) >> 10); 187 .loc 1 46 0 188 00e0 000C0532 andi $5,$16,0xc00 189 00e4 822A0500 srl $5,$5,10 190 .set noreorder 191 .set nomacro 192 00e8 0000000C jal printf 193 00ec 0000C427 addiu $4,$fp,%lo($LC7) 194 .set macro 195 .set reorder 196 47:/mnt/hgfs/boot/booter/source/cache.c **** printf("NMRU %d ", (tag & 0x00000300) >> 8); 197 .loc 1 47 0 198 00f0 00030532 andi $5,$16,0x300 199 00f4 022A0500 srl $5,$5,8 200 .set noreorder 201 .set nomacro 202 00f8 0000000C jal printf 203 00fc 0000E426 addiu $4,$23,%lo($LC8) 204 .set macro 205 .set reorder 206 48:/mnt/hgfs/boot/booter/source/cache.c **** printf("LRU %d ", (tag & 0x000000C0) >> 6); 207 .loc 1 48 0 208 0100 C0000532 andi $5,$16,0xc0 209 0104 0000C426 addiu $4,$22,%lo($LC9) 210 .set noreorder 211 .set nomacro 212 0108 0000000C jal printf 213 010c 82290500 srl $5,$5,6 214 .set macro 215 .set reorder 216 49:/mnt/hgfs/boot/booter/source/cache.c **** if (tag & 0x02) printf("L "); 217 .loc 1 49 0 218 0110 0000043C lui $4,%hi($LC10) 219 0114 02000232 andi $2,$16,0x2 220 $LBE2:GAS LISTING /tmp/cc4oHvAg.s page 6 221 .loc 1 34 0 222 0118 01005226 addiu $18,$18,1 223 $LBB3: 224 .loc 1 49 0 225 .set noreorder 226 .set nomacro 227 011c 20004014 bne $2,$0,$L17 228 0120 00008424 addiu $4,$4,%lo($LC10) 229 .set macro 230 .set reorder 231 50:/mnt/hgfs/boot/booter/source/cache.c **** if (tag & 0x01) printf("V ");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -