📄 ddma2.lst
字号:
93:/mnt/hgfs/boot/booter/source/ddma2.c **** { 195 .loc 1 93 0 196 .frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0 197 .mask 0x80030000,-8 198 .fmask 0x00000000,0 199 .set noreorder 200 .set nomacro 201 202 00ec E0FFBD27 addiu $sp,$sp,-32 203 $LCFI0: 204 00f0 1400B1AF sw $17,20($sp) 205 $LCFI1: 206 00f4 1000B0AF sw $16,16($sp) 207 $LCFI2: 208 00f8 21888000 move $17,$4 209 00fc 1800BFAF sw $31,24($sp) 210 $LCFI3: 211 .loc 1 93 0 94:/mnt/hgfs/boot/booter/source/ddma2.c **** CHANNEL_ID id; 95:/mnt/hgfs/boot/booter/source/ddma2.c **** /* Find an available channel for use */ 96:/mnt/hgfs/boot/booter/source/ddma2.c **** 97:/mnt/hgfs/boot/booter/source/ddma2.c **** id = ddma2_get_next_channel(); 212 .loc 1 97 0 213 0100 0000000C jal ddma2_get_next_channel 214 0104 2180A000 move $16,$5 215 98:/mnt/hgfs/boot/booter/source/ddma2.c **** 99:/mnt/hgfs/boot/booter/source/ddma2.c **** if(id != CHANNEL_INVALID) 100:/mnt/hgfs/boot/booter/source/ddma2.c **** { 101:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[id].avail = FALSE; 216 .loc 1 101 0 217 0108 40200200 sll $4,$2,1 218 010c 21208200 addu $4,$4,$2 219 0110 0000033C lui $3,%hi(channels) 220 0114 00210400 sll $4,$4,4 221 0118 00006324 addiu $3,$3,%lo(channels) 222 .loc 1 99 0 223 011c FFFF0524 li $5,-1 # 0xffffffffffffffff 224 .loc 1 101 0 225 .loc 1 99 0 226 0120 04004510 beq $2,$5,$L16 227 0124 21208300 addu $4,$4,$3 228 102:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[id].callback = callback; 103:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[id].callback_arg = callback_arg; 229 .loc 1 103 0 230 0128 1C0090AC sw $16,28($4) 231 .loc 1 102 0 232 012c 180091AC sw $17,24($4) 233 .loc 1 101 0 234 0130 040080AC sw $0,4($4)GAS LISTING /tmp/ccSUImwK.s page 7 235 $L16: 104:/mnt/hgfs/boot/booter/source/ddma2.c **** } 105:/mnt/hgfs/boot/booter/source/ddma2.c **** 106:/mnt/hgfs/boot/booter/source/ddma2.c **** return id; 107:/mnt/hgfs/boot/booter/source/ddma2.c **** } 236 .loc 1 107 0 237 0134 1800BF8F lw $31,24($sp) 238 0138 1400B18F lw $17,20($sp) 239 013c 1000B08F lw $16,16($sp) 240 0140 0800E003 j $31 241 0144 2000BD27 addiu $sp,$sp,32 242 243 .set macro 244 .set reorder 245 $LFE9: 246 .end ddma2_request_channel 247 .align 2 248 .globl ddma2_free_channel 249 .ent ddma2_free_channel 250 .type ddma2_free_channel, @function 251 ddma2_free_channel: 252 $LFB10: 108:/mnt/hgfs/boot/booter/source/ddma2.c **** 109:/mnt/hgfs/boot/booter/source/ddma2.c **** int ddma2_free_channel(CHANNEL_ID id) 110:/mnt/hgfs/boot/booter/source/ddma2.c **** { 253 .loc 1 110 0 254 .frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0 255 .mask 0x80030000,-8 256 .fmask 0x00000000,0 257 .set noreorder 258 .set nomacro 259 260 0148 E0FFBD27 addiu $sp,$sp,-32 261 $LCFI4: 262 014c 1800BFAF sw $31,24($sp) 263 $LCFI5: 264 0150 1400B1AF sw $17,20($sp) 265 $LCFI6: 266 0154 1000B0AF sw $16,16($sp) 267 $LCFI7: 111:/mnt/hgfs/boot/booter/source/ddma2.c **** ddma->inten &= ddma->inten & ~(1 << id); 268 .loc 1 111 0 269 0158 0000023C lui $2,%hi(ddma) 270 015c 0000468C lw $6,%lo(ddma)($2) 271 0160 01001124 li $17,1 # 0x1 272 0164 04109100 sll $2,$17,$4 273 0168 0C10C58C lw $5,4108($6) 274 016c 0C10C38C lw $3,4108($6) 275 0170 27100200 nor $2,$0,$2 276 0174 2428A200 and $5,$5,$2 277 0178 24186500 and $3,$3,$5 278 .loc 1 110 0 279 017c 21808000 move $16,$4 280 .loc 1 111 0 281 0180 0C10C3AC sw $3,4108($6) 112:/mnt/hgfs/boot/booter/source/ddma2.c **** 113:/mnt/hgfs/boot/booter/source/ddma2.c **** ddma2_disable_channel(id);GAS LISTING /tmp/ccSUImwK.s page 8 282 .loc 1 113 0 283 0184 0000000C jal ddma2_disable_channel 284 0188 00000000 nop 285 114:/mnt/hgfs/boot/booter/source/ddma2.c **** 115:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[id].avail = TRUE; 286 .loc 1 115 0 287 018c 40181000 sll $3,$16,1 288 0190 21187000 addu $3,$3,$16 289 0194 0000023C lui $2,%hi(channels) 290 0198 00004224 addiu $2,$2,%lo(channels) 291 019c 00190300 sll $3,$3,4 292 01a0 21186200 addu $3,$3,$2 293 01a4 040071AC sw $17,4($3) 116:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[id].d_head = NULL; 117:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[id].d_tail = NULL; 118:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[id].ptr->cfg = 0; 294 .loc 1 118 0 295 01a8 0000648C lw $4,0($3) 119:/mnt/hgfs/boot/booter/source/ddma2.c **** 120:/mnt/hgfs/boot/booter/source/ddma2.c **** return 0; 121:/mnt/hgfs/boot/booter/source/ddma2.c **** } 296 .loc 1 121 0 297 01ac 1800BF8F lw $31,24($sp) 298 01b0 1400B18F lw $17,20($sp) 299 01b4 1000B08F lw $16,16($sp) 300 01b8 21100000 move $2,$0 301 01bc 2000BD27 addiu $sp,$sp,32 302 .loc 1 116 0 303 01c0 0C0060AC sw $0,12($3) 304 .loc 1 118 0 305 01c4 000080AC sw $0,0($4) 306 .loc 1 117 0 307 .loc 1 121 0 308 01c8 0800E003 j $31 309 01cc 100060AC sw $0,16($3) 310 311 .set macro 312 .set reorder 313 $LFE10: 314 .end ddma2_free_channel 315 .align 2 316 .globl ddma2_irq_lock 317 .ent ddma2_irq_lock 318 .type ddma2_irq_lock, @function 319 ddma2_irq_lock: 320 $LFB11: 122:/mnt/hgfs/boot/booter/source/ddma2.c **** 123:/mnt/hgfs/boot/booter/source/ddma2.c **** unsigned long flags = 0; 124:/mnt/hgfs/boot/booter/source/ddma2.c **** 125:/mnt/hgfs/boot/booter/source/ddma2.c **** void inline ddma2_irq_lock(CHANNEL_ID id) 126:/mnt/hgfs/boot/booter/source/ddma2.c **** { 321 .loc 1 126 0 322 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 323 .mask 0x00000000,0 324 .fmask 0x00000000,0 325 .set noreorderGAS LISTING /tmp/ccSUImwK.s page 9 326 .set nomacro 327 328 .loc 1 126 0 329 01d0 0800E003 j $31 330 01d4 00000000 nop 331 332 .set macro 333 .set reorder 334 $LFE11: 335 .end ddma2_irq_lock 336 .align 2 337 .globl ddma2_irq_unlock 338 .ent ddma2_irq_unlock 339 .type ddma2_irq_unlock, @function 340 ddma2_irq_unlock: 341 $LFB12: 127:/mnt/hgfs/boot/booter/source/ddma2.c **** //spin_lock_irqsave(&channels[id].descriptor_lock, flags); 128:/mnt/hgfs/boot/booter/source/ddma2.c **** } 129:/mnt/hgfs/boot/booter/source/ddma2.c **** 130:/mnt/hgfs/boot/booter/source/ddma2.c **** void inline ddma2_irq_unlock(CHANNEL_ID id) 131:/mnt/hgfs/boot/booter/source/ddma2.c **** { 342 .loc 1 131 0 343 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 344 .mask 0x00000000,0 345 .fmask 0x00000000,0 346 .set noreorder 347 .set nomacro 348 349 .loc 1 131 0 350 01d8 0800E003 j $31 351 01dc 00000000 nop 352 353 .set macro 354 .set reorder 355 $LFE12: 356 .end ddma2_irq_unlock 357 .align 2 358 .globl ddma2_get_next_descriptor 359 .ent ddma2_get_next_descriptor 360 .type ddma2_get_next_descriptor, @function 361 ddma2_get_next_descriptor: 362 $LFB13: 132:/mnt/hgfs/boot/booter/source/ddma2.c **** //spin_unlock_irqrestore(&channels[id].descriptor_lock, flags); 133:/mnt/hgfs/boot/booter/source/ddma2.c **** } 134:/mnt/hgfs/boot/booter/source/ddma2.c **** 135:/mnt/hgfs/boot/booter/source/ddma2.c **** DDMA_DESCRIPTOR* ddma2_get_next_descriptor(CHANNEL_ID id) 136:/mnt/hgfs/boot/booter/source/ddma2.c **** { 363 .loc 1 136 0 364 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 365 .mask 0x00000000,0 366 .fmask 0x00000000,0 367 .set noreorder 368 .set nomacro 369 137:/mnt/hgfs/boot/booter/source/ddma2.c **** return (DDMA_DESCRIPTOR*) channels[id].ptr->des_ptr; 370 .loc 1 137 0 371 01e0 40100400 sll $2,$4,1GAS LISTING /tmp/ccSUImwK.s page 10 372 01e4 21104400 addu $2,$2,$4 373 01e8 0000033C lui $3,%hi(channels) 374 01ec 00006324 addiu $3,$3,%lo(channels) 375 01f0 00110200 sll $2,$2,4 376 01f4 21104300 addu $2,$2,$3 377 01f8 0000448C lw $4,0($2) 378 01fc 0400828C lw $2,4($4) 138:/mnt/hgfs/boot/booter/source/ddma2.c **** } 379 .loc 1 138 0 380 0200 0800E003 j $31 381 0204 00000000 nop 382 383 .set macro 384 .set reorder 385 $LFE13: 386 .end ddma2_get_next_descriptor 387 .align 2 388 .globl ddma2_set_status_pointer 389 .ent ddma2_set_status_pointer 390 .type ddma2_set_status_pointer, @function 391 ddma2_set_status_pointer: 392 $LFB14: 139:/mnt/hgfs/boot/booter/source/ddma2.c **** 140:/mnt/hgfs/boot/booter/source/ddma2.c **** void ddma2_set_status_pointer(CHANNEL_ID id, uint32* status) 141:/mnt/hgfs/boot/booter/source/ddma2.c **** { 393 .loc 1 141 0 394 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 395 .mask 0x00000000,0 396 .fmask 0x00000000,0 397 .set noreorder 398 .set nomacro 399 142:/mnt/hgfs/boot/booter/source/ddma2.c **** channels[id].ptr->stat_ptr = (uint32) status; 400 .loc 1 142 0 401 0208 40100400 sll $2,$4,1 402 020c 21104400 addu $2,$2,$4 403 0210 0000033C lui $3,%hi(channels) 404 0214 00110200 sll $2,$2,4 405 0218 00006324 addiu $3,$3,%lo(channels) 406 021c 21104300 addu $2,$2,$3 407 0220 0000448C lw $4,0($2) 408 0224 080085AC sw $5,8($4) 409 0228 0800E003 j $31 410 022c 00000000 nop 411 412 .set macro 413 .set reorder 414 $LFE14: 415 .end ddma2_set_status_pointer 416 .align 2 417 .globl ddma2_get_channel_status 418 .ent ddma2_get_channel_status 419 .type ddma2_get_channel_status, @function 420 ddma2_get_channel_status: 421 $LFB15: 143:/mnt/hgfs/boot/booter/source/ddma2.c **** } 144:/mnt/hgfs/boot/booter/source/ddma2.c **** GAS LISTING /tmp/ccSUImwK.s page 11 145:/mnt/hgfs/boot/booter/source/ddma2.c **** uint32 ddma2_get_channel_status(CHANNEL_ID id) 146:/mnt/hgfs/boot/booter/source/ddma2.c **** { 422 .loc 1 146 0 423 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 424 .mask 0x00000000,0 425 .fmask 0x00000000,0 426 .set noreorder 427 .set nomacro 428 147:/mnt/hgfs/boot/booter/source/ddma2.c **** return *((uint32*) KSEG1(channels[id].ptr->stat_ptr)); 429 .loc 1 147 0 430 0230 40100400 sll $2,$4,1 431 0234 21104400 addu $2,$2,$4 432 0238 0000033C lui $3,%hi(channels) 433 023c 00006324 addiu $3,$3,%lo(channels)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -