📄 irq.lst
字号:
564 565 $LBE21: 566 .loc 1 494 0 567 032c 0000023C lui $2,%hi(irqDispatch) 568 $L76: 569 0330 80181000 sll $3,$16,2 570 0334 00004224 addiu $2,$2,%lo(irqDispatch) 571 0338 21186200 addu $3,$3,$2 572 033c C2000008 j $L56 573 0340 000060AC sw $0,0($3) 574 575 $L66: 576 $LBB22: 577 .loc 1 478 0 578 0344 D8FF0326 addiu $3,$16,-40 579 .loc 1 480 0GAS LISTING /tmp/ccsUu95n.s page 20 580 0348 04186400 sll $3,$4,$3 581 .loc 1 483 0 582 034c 540043AC sw $3,84($2) 583 .loc 1 484 0 584 0350 4C0043AC sw $3,76($2) 585 .loc 1 485 0 586 0354 440043AC sw $3,68($2) 587 .loc 1 488 0 588 0358 740043AC sw $3,116($2) 589 .loc 1 491 0 590 035c 6C0043AC sw $3,108($2) 591 .loc 1 494 0 592 0360 BE000008 j $L75 593 0364 0000023C lui $2,%hi(irqDispatch) 594 595 $L71: 596 $LBE22: 597 $LBB23: 598 .loc 1 432 0 599 0368 0000000C jal cp0RdStatus 600 036c 00000000 nop 601 602 .loc 1 434 0 603 0370 FFFD0424 li $4,-513 # 0xfffffffffffffdff 604 $LBE23: 605 $LBB24: 606 .loc 1 450 0 607 0374 0000000C jal cp0WrStatus 608 0378 24204400 and $4,$2,$4 609 610 .loc 1 494 0 611 037c CC000008 j $L76 612 0380 0000023C lui $2,%hi(irqDispatch) 613 614 $L72: 615 $LBE24: 616 $LBB25: 617 .loc 1 440 0 618 0384 0000000C jal cp0RdStatus 619 0388 00000000 nop 620 621 .loc 1 442 0 622 038c FFBF0424 li $4,-16385 # 0xffffffffffffbfff 623 $LBE25: 624 $LBB26: 625 .loc 1 450 0 626 0390 0000000C jal cp0WrStatus 627 0394 24204400 and $4,$2,$4 628 629 .loc 1 494 0 630 0398 CC000008 j $L76 631 039c 0000023C lui $2,%hi(irqDispatch) 632 633 $L73: 634 .loc 1 448 0 635 03a0 0000000C jal cp0RdStatus 636 03a4 00000000 nopGAS LISTING /tmp/ccsUu95n.s page 21 637 638 .loc 1 450 0 639 03a8 FFFF043C li $4,-65536 # 0xffffffffffff0000 640 03ac FF7F8434 ori $4,$4,0x7fff 641 03b0 0000000C jal cp0WrStatus 642 03b4 24204400 and $4,$2,$4 643 644 .loc 1 494 0 645 03b8 CC000008 j $L76 646 03bc 0000023C lui $2,%hi(irqDispatch) 647 648 $LBE26: 649 .set macro 650 .set reorder 651 $LFE3: 652 .end cpuIrqDisable 653 .align 2 654 .globl cpuIrqInit 655 .ent cpuIrqInit 656 .type cpuIrqInit, @function 657 cpuIrqInit: 658 $LFB4: 496:/mnt/hgfs/boot/booter/source/irq.c **** 497:/mnt/hgfs/boot/booter/source/irq.c **** /********************************************************************/ 498:/mnt/hgfs/boot/booter/source/irq.c **** void 499:/mnt/hgfs/boot/booter/source/irq.c **** cpuIrqInit (void) 500:/mnt/hgfs/boot/booter/source/irq.c **** { 659 .loc 1 500 0 660 .frame $sp,24,$31 # vars= 0, regs= 1/0, args= 16, gp= 0 661 .mask 0x80000000,-8 662 .fmask 0x00000000,0 663 .set noreorder 664 .set nomacro 665 501:/mnt/hgfs/boot/booter/source/irq.c **** extern uint32 asmIrqHandler[]; 502:/mnt/hgfs/boot/booter/source/irq.c **** extern uint32 asmIrqHandlerEnd[]; 503:/mnt/hgfs/boot/booter/source/irq.c **** 504:/mnt/hgfs/boot/booter/source/irq.c **** uint32 *v = (uint32 *)0x80000200; 666 .loc 1 504 0 667 03c0 0080023C li $2,-2147483648 # 0xffffffff80000000 668 .loc 1 500 0 669 03c4 E8FFBD27 addiu $sp,$sp,-24 670 $LCFI9: 671 .loc 1 504 0 672 03c8 00024834 ori $8,$2,0x200 673 03cc 0000033C lui $3,%hi(irqDispatch) 674 03d0 0000023C lui $2,%hi(irqArgument) 675 .loc 1 500 0 676 03d4 1000BFAF sw $31,16($sp) 677 $LCFI10: 678 03d8 00006724 addiu $7,$3,%lo(irqDispatch) 679 03dc 20014624 addiu $6,$2,%lo(irqArgument) 505:/mnt/hgfs/boot/booter/source/irq.c **** uint32 *p, *q; 506:/mnt/hgfs/boot/booter/source/irq.c **** int irq; 507:/mnt/hgfs/boot/booter/source/irq.c **** 508:/mnt/hgfs/boot/booter/source/irq.c **** /* 509:/mnt/hgfs/boot/booter/source/irq.c **** * NULL dispatch tableGAS LISTING /tmp/ccsUu95n.s page 22 510:/mnt/hgfs/boot/booter/source/irq.c **** */ 511:/mnt/hgfs/boot/booter/source/irq.c **** for (irq = 0; irq < 64; ++irq) 680 .loc 1 511 0 681 03e0 21280000 move $5,$0 682 $L81: 512:/mnt/hgfs/boot/booter/source/irq.c **** { 513:/mnt/hgfs/boot/booter/source/irq.c **** irqDispatch[irq] = NULL; 683 .loc 1 513 0 684 03e4 80100500 sll $2,$5,2 685 .loc 1 511 0 686 03e8 0100A524 addiu $5,$5,1 514:/mnt/hgfs/boot/booter/source/irq.c **** irqArgument[irq] = NULL; 687 .loc 1 514 0 688 03ec 21204600 addu $4,$2,$6 689 .loc 1 511 0 690 03f0 4000A328 slt $3,$5,64 691 .loc 1 513 0 692 03f4 21104700 addu $2,$2,$7 693 03f8 000040AC sw $0,0($2) 694 .loc 1 514 0 695 .loc 1 511 0 696 03fc F9FF6014 bne $3,$0,$L81 697 0400 000080AC sw $0,0($4) 698 515:/mnt/hgfs/boot/booter/source/irq.c **** } 516:/mnt/hgfs/boot/booter/source/irq.c **** 517:/mnt/hgfs/boot/booter/source/irq.c **** /* 518:/mnt/hgfs/boot/booter/source/irq.c **** * Install simple IRQ handler. 519:/mnt/hgfs/boot/booter/source/irq.c **** */ 520:/mnt/hgfs/boot/booter/source/irq.c **** p = asmIrqHandler; 699 .loc 1 520 0 700 0404 0000023C lui $2,%hi(asmIrqHandler) 521:/mnt/hgfs/boot/booter/source/irq.c **** q = asmIrqHandlerEnd; 701 .loc 1 521 0 702 0408 0000033C lui $3,%hi(asmIrqHandlerEnd) 703 .loc 1 520 0 704 040c 00004424 addiu $4,$2,%lo(asmIrqHandler) 705 .loc 1 521 0 706 0410 00006524 addiu $5,$3,%lo(asmIrqHandlerEnd) 707 $L82: 522:/mnt/hgfs/boot/booter/source/irq.c **** do 523:/mnt/hgfs/boot/booter/source/irq.c **** { 524:/mnt/hgfs/boot/booter/source/irq.c **** *v++ = *p++; 708 .loc 1 524 0 709 0414 0000828C lw $2,0($4) 710 0418 04008424 addiu $4,$4,4 525:/mnt/hgfs/boot/booter/source/irq.c **** } while (p < q); 711 .loc 1 525 0 712 041c 2B188500 sltu $3,$4,$5 713 .loc 1 524 0 714 0420 000002AD sw $2,0($8) 715 .loc 1 525 0 716 0424 FBFF6014 bne $3,$0,$L82 717 0428 04000825 addiu $8,$8,4 718 526:/mnt/hgfs/boot/booter/source/irq.c **** dcacheFlush(); 719 .loc 1 526 0GAS LISTING /tmp/ccsUu95n.s page 23 720 042c 0000000C jal dcacheFlush 721 0430 00000000 nop 722 527:/mnt/hgfs/boot/booter/source/irq.c **** icacheFlush(); 723 .loc 1 527 0 724 0434 0000000C jal icacheFlush 725 0438 00000000 nop 726 528:/mnt/hgfs/boot/booter/source/irq.c **** 529:/mnt/hgfs/boot/booter/source/irq.c **** /* 530:/mnt/hgfs/boot/booter/source/irq.c **** * Point Status[BEV] into RAM at 0x80000000 531:/mnt/hgfs/boot/booter/source/irq.c **** */ 532:/mnt/hgfs/boot/booter/source/irq.c **** cp0WrStatus(cp0RdStatus() & ~STATUS_BEV); 727 .loc 1 532 0 728 043c 0000000C jal cp0RdStatus 729 0440 00000000 nop 730 731 0444 BFFF043C li $4,-4259840 # 0xffffffffffbf0000 732 0448 FFFF8434 ori $4,$4,0xffff 733 044c 0000000C jal cp0WrStatus 734 0450 24204400 and $4,$2,$4 735 533:/mnt/hgfs/boot/booter/source/irq.c **** 534:/mnt/hgfs/boot/booter/source/irq.c **** /* 535:/mnt/hgfs/boot/booter/source/irq.c **** * Point interrupt vector to 0x80000200 536:/mnt/hgfs/boot/booter/source/irq.c **** */ 537:/mnt/hgfs/boot/booter/source/irq.c **** cp0WrCause(cp0RdCause() | CAUSE_IV); 736 .loc 1 537 0 737 0454 0000000C jal cp0RdCause 738 0458 00000000 nop 739 740 045c 8000043C li $4,8388608 # 0x800000 741 0460 0000000C jal cp0WrCause 742 0464 25204400 or $4,$2,$4 743 538:/mnt/hgfs/boot/booter/source/irq.c **** 539:/mnt/hgfs/boot/booter/source/irq.c **** /* 540:/mnt/hgfs/boot/booter/source/irq.c **** * Set IC0 to known state (no IRQs allowed) 541:/mnt/hgfs/boot/booter/source/irq.c **** */ 542:/mnt/hgfs/boot/booter/source/irq.c **** 543:/mnt/hgfs/boot/booter/source/irq.c **** /* config[012]: interrupts disabled */ 544:/mnt/hgfs/boot/booter/source/irq.c **** ic0->cfg0clr = ~0; 545:/mnt/hgfs/boot/booter/source/irq.c **** ic0->cfg1clr = ~0; 546:/mnt/hgfs/boot/booter/source/irq.c **** ic0->cfg2clr = ~0; 547:/mnt/hgfs/boot/booter/source/irq.c **** 548:/mnt/hgfs/boot/booter/source/irq.c **** /* source_set: Irq fro peripheral signal */ 549:/mnt/hgfs/boot/booter/source/irq.c **** ic0->srcset = ~0; 550:/mnt/hgfs/boot/booter/source/irq.c **** 551:/mnt/hgfs/boot/booter/source/irq.c **** /* assign_request: Irq onto request 0 */ 552:/mnt/hgfs/boot/booter/source/irq.c **** ic0->assignset = ~0; 553:/mnt/hgfs/boot/booter/source/irq.c **** 554:/mnt/hgfs/boot/booter/source/irq.c **** /* mask: all irqs asked off */ 555:/mnt/hgfs/boot/booter/source/irq.c **** ic0->maskclr = ~0; 556:/mnt/hgfs/boot/booter/source/irq.c **** 557:/mnt/hgfs/boot/booter/source/irq.c **** /* wakeup: no irqs wakeup */ 558:/mnt/hgfs/boot/booter/source/irq.c **** ic0->wakeclr = ~0; 559:/mnt/hgfs/boot/booter/source/irq.c **** GAS LISTING /tmp/ccsUu95n.s page 24 560:/mnt/hgfs/boot/booter/source/irq.c **** /* rising_edge: ack all previous irqs */ 561:/mnt/hgfs/boot/booter/source/irq.c **** ic0->risingclr = ~0; 562:/mnt/hgfs/boot/booter/source/irq.c **** 563:/mnt/hgfs/boot/booter/source/irq.c **** /* falling_edge: ack all previous irqs */ 564:/mnt/hgfs/boot/booter/source/irq.c **** ic0->fallingclr = ~0; 565:/mnt/hgfs/boot/booter/source/irq.c **** 566:/mnt/hgfs/boot/booter/source/irq.c **** 567:/mnt/hgfs/boot/booter/source/irq.c **** /* 568:/mnt/hgfs/boot/booter/source/irq.c **** * Set IC1 to known state (no IRQs allowed) 569:/mnt/hgfs/boot/booter/source/irq.c **** */ 570:/mnt/hgfs/boot/booter/source/irq.c **** 571:/mnt/hgfs/boot/booter/source/irq.c **** /* config[012]: interrupts disabled */ 572:/mnt/hgfs/boot/booter/source/irq.c **** ic1->cfg0clr = ~0; 573:/mnt/hgfs/boot/booter/source/irq.c **** ic1->cfg1clr = ~0; 574:/mnt/hgfs/boot/booter/source/irq.c **** ic1->cfg2clr = ~0; 575:/mnt/hgfs/boot/booter/source/irq.c **** 576:/mnt/hgfs/boot/booter/source/irq.c **** /* source_set: Irq fro peripheral signal */ 577:/mnt/hgfs/boot/booter/source/irq.c **** ic1->srcset = ~0; 578:/mnt/hgfs/boot/booter/sou
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -