📄 nand.lst
字号:
999 0684 0000000C jal gpioWrite 1000 0688 01000524 li $5,1 # 0x1 1001 243:/mnt/hgfs/boot/booter/source/nand.c **** 244:/mnt/hgfs/boot/booter/source/nand.c **** return bytes; 245:/mnt/hgfs/boot/booter/source/nand.c **** } 1002 .loc 1 245 0 1003 068c 21100002 move $2,$16GAS LISTING /tmp/cc4NTrNa.s page 23 1004 0690 2400BF8F lw $31,36($sp) 1005 0694 2000B48F lw $20,32($sp) 1006 0698 1C00B38F lw $19,28($sp) 1007 069c 1800B28F lw $18,24($sp) 1008 06a0 1400B18F lw $17,20($sp) 1009 06a4 1000B08F lw $16,16($sp) 1010 06a8 0800E003 j $31 1011 06ac 2800BD27 addiu $sp,$sp,40 1012 1013 $L84: 1014 .loc 1 228 0 1015 06b0 00004296 lhu $2,0($18) 1016 .loc 1 230 0 1017 06b4 02001026 addiu $16,$16,2 1018 .loc 1 229 0 1019 06b8 02005226 addiu $18,$18,2 1020 .loc 1 228 0 1021 06bc 200082A4 sh $2,32($4) 1022 .loc 1 218 0 1023 06c0 95010008 j $L92 1024 06c4 2A101302 slt $2,$16,$19 1025 1026 .set macro 1027 .set reorder 1028 $LFE13: 1029 .end nand_program 1030 .align 2 1031 .globl nand_read 1032 .ent nand_read 1033 .type nand_read, @function 1034 nand_read: 1035 $LFB14: 246:/mnt/hgfs/boot/booter/source/nand.c **** 247:/mnt/hgfs/boot/booter/source/nand.c **** int nand_read(char* dest, int size, int page, int offset) 248:/mnt/hgfs/boot/booter/source/nand.c **** { 1036 .loc 1 248 0 1037 .frame $sp,48,$31 # vars= 0, regs= 7/0, args= 16, gp= 0 1038 .mask 0x803f0000,-8 1039 .fmask 0x00000000,0 1040 .set noreorder 1041 .set nomacro 1042 1043 06c8 D0FFBD27 addiu $sp,$sp,-48 1044 $LCFI21: 1045 06cc 1C00B3AF sw $19,28($sp) 1046 $LCFI22: 1047 06d0 1800B2AF sw $18,24($sp) 1048 $LCFI23: 1049 06d4 1400B1AF sw $17,20($sp) 1050 $LCFI24: 1051 06d8 2198A000 move $19,$5 1052 06dc 21888000 move $17,$4 249:/mnt/hgfs/boot/booter/source/nand.c **** int bytes; 250:/mnt/hgfs/boot/booter/source/nand.c **** 251:/mnt/hgfs/boot/booter/source/nand.c **** gpioWrite(NAND_CE0, 0); 1053 .loc 1 251 0 1054 06e0 21280000 move $5,$0GAS LISTING /tmp/cc4NTrNa.s page 24 1055 06e4 15000424 li $4,21 # 0x15 252:/mnt/hgfs/boot/booter/source/nand.c **** 253:/mnt/hgfs/boot/booter/source/nand.c **** if (nand_device.page_size == 512) 1056 .loc 1 253 0 1057 06e8 0000123C lui $18,%hi(nand_device) 1058 .loc 1 248 0 1059 06ec 2000B4AF sw $20,32($sp) 1060 $LCFI25: 1061 06f0 1000B0AF sw $16,16($sp) 1062 $LCFI26: 1063 06f4 2800BFAF sw $31,40($sp) 1064 $LCFI27: 1065 06f8 2400B5AF sw $21,36($sp) 1066 $LCFI28: 1067 .loc 1 248 0 1068 06fc 21A0C000 move $20,$6 1069 .loc 1 251 0 1070 0700 0000000C jal gpioWrite 1071 0704 2180E000 move $16,$7 1072 1073 .loc 1 253 0 1074 0708 04004326 addiu $3,$18,%lo(nand_device) 1075 070c 0400648C lw $4,4($3) 1076 0710 00020224 li $2,512 # 0x200 254:/mnt/hgfs/boot/booter/source/nand.c **** { 255:/mnt/hgfs/boot/booter/source/nand.c **** if (offset < 256) 1077 .loc 1 255 0 1078 .loc 1 253 0 1079 0714 2F008210 beq $4,$2,$L111 1080 0718 0001022A slt $2,$16,256 1081 256:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_CMD = NAND_CMD_READ1; 257:/mnt/hgfs/boot/booter/source/nand.c **** else if (offset < 512) 258:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_CMD = NAND_CMD_READ2; 259:/mnt/hgfs/boot/booter/source/nand.c **** else 260:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_CMD = NAND_CMD_READ3; 261:/mnt/hgfs/boot/booter/source/nand.c **** } 262:/mnt/hgfs/boot/booter/source/nand.c **** else 263:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_CMD = NAND_CMD_READ1; 1082 .loc 1 263 0 1083 071c 0000153C lui $21,%hi(nand_virtual_address) 1084 $L115: 1085 0720 0000A28E lw $2,%lo(nand_virtual_address)($21) 1086 0724 000040A4 sh $0,0($2) 1087 $L100: 264:/mnt/hgfs/boot/booter/source/nand.c **** nand_set_column_address(offset); 1088 .loc 1 264 0 1089 0728 0000000C jal nand_set_column_address 1090 072c 21200002 move $4,$16 1091 265:/mnt/hgfs/boot/booter/source/nand.c **** nand_set_page_address(page); 1092 .loc 1 265 0 1093 0730 0000000C jal nand_set_page_address 1094 0734 21208002 move $4,$20 1095 266:/mnt/hgfs/boot/booter/source/nand.c **** 267:/mnt/hgfs/boot/booter/source/nand.c **** for(bytes = 0; bytes < size; )GAS LISTING /tmp/cc4NTrNa.s page 25 1096 .loc 1 267 0 1097 0738 1200601A blez $19,$L109 1098 073c 21800000 move $16,$0 1099 1100 0740 08000424 li $4,8 # 0x8 1101 0744 D8010008 j $L106 1102 0748 10000524 li $5,16 # 0x10 1103 1104 $L112: 268:/mnt/hgfs/boot/booter/source/nand.c **** { 269:/mnt/hgfs/boot/booter/source/nand.c **** switch(nand_device.data_width) 1105 .loc 1 269 0 1106 074c 2C004510 beq $2,$5,$L105 1107 0750 00000000 nop 1108 1109 $L101: 1110 .loc 1 267 0 1111 0754 2A101302 slt $2,$16,$19 270:/mnt/hgfs/boot/booter/source/nand.c **** { 271:/mnt/hgfs/boot/booter/source/nand.c **** case 8: 272:/mnt/hgfs/boot/booter/source/nand.c **** *((char*)dest) = NAND_REG_DATA; 273:/mnt/hgfs/boot/booter/source/nand.c **** dest += 1; 274:/mnt/hgfs/boot/booter/source/nand.c **** bytes += 1; 275:/mnt/hgfs/boot/booter/source/nand.c **** break; 276:/mnt/hgfs/boot/booter/source/nand.c **** case 16: 277:/mnt/hgfs/boot/booter/source/nand.c **** *((short*)dest) = NAND_REG_DATA; 278:/mnt/hgfs/boot/booter/source/nand.c **** dest += 2; 279:/mnt/hgfs/boot/booter/source/nand.c **** bytes += 2; 280:/mnt/hgfs/boot/booter/source/nand.c **** break; 281:/mnt/hgfs/boot/booter/source/nand.c **** } 282:/mnt/hgfs/boot/booter/source/nand.c **** } 283:/mnt/hgfs/boot/booter/source/nand.c **** 284:/mnt/hgfs/boot/booter/source/nand.c **** if (nand_device.page_size == 2048) 1112 .loc 1 284 0 1113 .loc 1 267 0 1114 0758 0B004010 beq $2,$0,$L114 1115 075c 04004226 addiu $2,$18,%lo(nand_device) 1116 1117 $L106: 1118 .loc 1 269 0 1119 0760 0400428E lw $2,%lo(nand_device)($18) 1120 .loc 1 272 0 1121 .loc 1 269 0 1122 0764 F9FF4414 bne $2,$4,$L112 1123 0768 0000A38E lw $3,%lo(nand_virtual_address)($21) 1124 1125 .loc 1 274 0 1126 076c 01001026 addiu $16,$16,1 1127 .loc 1 272 0 1128 0770 20006294 lhu $2,32($3) 1129 0774 000022A2 sb $2,0($17) 1130 .loc 1 267 0 1131 0778 2A101302 slt $2,$16,$19 1132 .loc 1 273 0 1133 .loc 1 267 0 1134 077c F8FF4014 bne $2,$0,$L106 1135 0780 01003126 addiu $17,$17,1GAS LISTING /tmp/cc4NTrNa.s page 26 1136 1137 $L109: 1138 .loc 1 284 0 1139 0784 04004226 addiu $2,$18,%lo(nand_device) 1140 $L114: 1141 0788 0400448C lw $4,4($2) 1142 078c 00080324 li $3,2048 # 0x800 285:/mnt/hgfs/boot/booter/source/nand.c **** NAND_REG_CMD = NAND_CMD_READ_COMFIRM; 1143 .loc 1 285 0 1144 .loc 1 284 0 1145 0790 20008310 beq $4,$3,$L113 1146 0794 0000A38E lw $3,%lo(nand_virtual_address)($21) 1147 286:/mnt/hgfs/boot/booter/source/nand.c **** 287:/mnt/hgfs/boot/booter/source/nand.c **** nand_wait_busy(); 1148 .loc 1 287 0 1149 0798 0000000C jal nand_wait_busy 1150 079c 00000000 nop 1151 288:/mnt/hgfs/boot/booter/source/nand.c **** 289:/mnt/hgfs/boot/booter/source/nand.c **** gpioWrite(NAND_CE0, 1); 1152 .loc 1 289 0 1153 07a0 15000424 li $4,21 # 0x15 1154 07a4 0000000C jal gpioWrite 1155 07a8 01000524 li $5,1 # 0x1 1156 290:/mnt/hgfs/boot/booter/source/nand.c **** 291:/mnt/hgfs/boot/booter/source/nand.c **** return bytes; 292:/mnt/hgfs/boot/booter/source/nand.c **** } 1157 .loc 1 292 0 1158 07ac 21100002 move $2,$16 1159 07b0 2800BF8F lw $31,40($sp) 1160 07b4 2400B58F lw $21,36($sp) 1161 07b8 2000B48F lw $20,32($sp) 1162 07bc 1C00B38F lw $19,28($sp) 1163 07c0 1800B28F lw $18,24($sp) 1164 07c4 1400B18F lw $17,20($sp) 1165 07c8 1000B08F lw $16,16($sp) 1166 07cc 0800E003 j $31 1167 07d0 3000BD27 addiu $sp,$sp,48 1168 1169 $L111: 1170 .loc 1 263 0 1171 .loc 1 255 0 1172 07d4 D2FF4014 bne $2,$0,$L115 1173 07d8 0000153C lui $21,%hi(nand_virtual_address) 1174 1175 .loc 1 257 0 1176 07dc 0002022A slt $2,$16,512 1177 .loc 1 260 0 1178 .loc 1 257 0 1179 07e0 1D004010 beq $2,$0,$L98 1180 07e4 0000A38E lw $3,%lo(nand_virtual_address)($21) 1181 1182 .loc 1 258 0 1183 07e8 0000153C lui $21,%hi(nand_virtual_address) 1184 07ec 0000A38E lw $3,%lo(nand_virtual_address)($21)GAS LISTING /tmp/cc4NTrNa.s page 27 1185 07f0 01000224 li $2,1 1186 .loc 1 260 0 1187 07f4 000062A4 sh $2,0($3) 1188 07f8 CA010008 j $L100 1189 07fc 00000000 nop 1190 1191 $L105: 1192 .loc 1 279 0 1193 0800 02001026 addiu $16,$16,2 1194 .loc 1 277 0 1195 0804 20006294 lhu $2,32($3) 1196 0808 000022A6 sh $2,0($17) 1197 .loc 1 278 0 1198 080c D5010008 j $L101 1199 0810 02003126 addiu $17,$17,2 1200 1201 $L113: 1202 .loc 1 285 0 1203 0814 30000224 li $2,48 1204 0818 000062A4 sh $2,0($3) 1205 .loc 1 287 0 1206 081c 0000000C jal nand_wait_busy 1207 0820 00000000 nop 1208 1209 .loc 1 289 0 1210 0824 15000424 li $4,21 # 0x15 1211 0828 0000000C jal gpioWrite 1212 082c 01000524 li $5,1 # 0x1 1213 1214 .loc 1 292 0 1215 0830 21100002 move $2,$16 1216 0834 2800BF8F lw $31,40($sp) 1217 0838 2400B58F lw $21,36($sp) 1218 083c 2000B48F lw $20,32($sp) 1219 0840 1C00B38F lw $19,28($sp) 1220 0844 1800B28F lw $18,24($sp) 1221 0848 1400B18F lw $17,20($sp) 1222 084c 1000B08F lw $16,16($sp) 1223 0850 0800E003 j $31 1224 0854 3000BD27 addiu $sp,$sp,48 1225 1226 $L98: 1227 .loc 1 260 0 1228 0858 50000224 li $2,80 1229 085c 000062A4 sh $2,0($3) 1230 0860 CA010008 j $L100 1231 0864 00000000 nop 1232 1233 .set macro 1234 .set reorder 1235 $LFE14: 1236 .end nand_read 1237 1238 .comm nand_virtual_address,4,4 1239 .local nand_irq_fired 1240 .comm nand_irq_fired,4,4 1241 .local nand_deviceGAS LISTING /tmp/cc4NTrNa.s page 28 1242 .comm nand_device,12,4 1243 .section .debug_frame,"",@progbits 1244 $Lframe0: 1245 0000 0C000000 .4byte $LECIE0-$LSCIE0 1246 $LSCIE0: 1247 0004 FFFFFFFF .4byte 0xffffffff 1248 0008 01 .byte 0x1 1249 0009 00 .ascii "\000" 1250 000a 01 .uleb128 0x1 1251 000b 04 .sleb128 4 1252 000c 1F .byte 0x1f 1253 000d 0C .byte 0xc 1254 000e 1D .uleb128 0x1d 1255 000f 00 .uleb128 0x0 1256 .align 2 1257 $LECIE0: 125
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -