📄 ax88796.lst
字号:
601 0228 DF93 push r29
602 /* prologue end (size=6) */
603 022a 7B01 movw r14,r22
232:ax88796.c **** unsigned int i;
233:ax88796.c ****
234:ax88796.c **** for(i=0;i<length;i++)
604 .stabn 68,0,234,.LM91-ax88796SendPacketData
605 .LM91:
606 .LBB5:
607 022c 00E0 ldi r16,lo8(0)
608 022e 10E0 ldi r17,hi8(0)
609 0230 0617 cp r16,r22
610 0232 1707 cpc r17,r23
611 0234 50F4 brsh .L22
612 0236 EC01 movw r28,r24
613 .L20:
235:ax88796.c **** ax88796Write(RDMAPORT, localBuffer[i]);
614 .stabn 68,0,235,.LM92-ax88796SendPacketData
615 .LM92:
616 0238 6991 ld r22,Y+
617 023a 80E1 ldi r24,lo8(16)
618 023c 0E94 0000 call ax88796Write
619 .stabn 68,0,234,.LM93-ax88796SendPacketData
620 .LM93:
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 16
621 0240 0F5F subi r16,lo8(-(1))
622 0242 1F4F sbci r17,hi8(-(1))
623 0244 0E15 cp r16,r14
624 0246 1F05 cpc r17,r15
625 0248 B8F3 brlo .L20
626 .L22:
236:ax88796.c **** }
627 .stabn 68,0,236,.LM94-ax88796SendPacketData
628 .LM94:
629 .LBE5:
630 /* epilogue: frame size=0 */
631 024a DF91 pop r29
632 024c CF91 pop r28
633 024e 1F91 pop r17
634 0250 0F91 pop r16
635 0252 FF90 pop r15
636 0254 EF90 pop r14
637 0256 0895 ret
638 /* epilogue end (size=7) */
639 /* function ax88796SendPacketData size 29 (16) */
640 .size ax88796SendPacketData, .-ax88796SendPacketData
641 .stabs "i:r(0,4)",64,0,232,16
642 .stabn 192,0,0,.LBB5-ax88796SendPacketData
643 .stabn 224,0,0,.LBE5-ax88796SendPacketData
644 .Lscope5:
645 .stabs "",36,0,0,.Lscope5-ax88796SendPacketData
646 .stabs "ax88796EndPacketSend:F(0,20)",36,0,239,ax88796EndPacketSend
647 .global ax88796EndPacketSend
648 .type ax88796EndPacketSend, @function
649 ax88796EndPacketSend:
237:ax88796.c ****
238:ax88796.c **** void ax88796EndPacketSend(void)
239:ax88796.c **** {
650 .stabn 68,0,239,.LM95-ax88796EndPacketSend
651 .LM95:
652 /* prologue: frame size=0 */
653 /* prologue end (size=0) */
240:ax88796.c **** //send the contents of the transmit buffer onto the network
241:ax88796.c **** ax88796Write(CR,0x24);
654 .stabn 68,0,241,.LM96-ax88796EndPacketSend
655 .LM96:
656 0258 64E2 ldi r22,lo8(36)
657 025a 80E0 ldi r24,lo8(0)
658 025c 0E94 0000 call ax88796Write
242:ax88796.c ****
243:ax88796.c **** // clear the remote DMA interrupt
244:ax88796.c **** ax88796Write(ISR, RDC);
659 .stabn 68,0,244,.LM97-ax88796EndPacketSend
660 .LM97:
661 0260 60E4 ldi r22,lo8(64)
662 0262 87E0 ldi r24,lo8(7)
663 0264 0E94 0000 call ax88796Write
245:ax88796.c **** }
664 .stabn 68,0,245,.LM98-ax88796EndPacketSend
665 .LM98:
666 /* epilogue: frame size=0 */
667 0268 0895 ret
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 17
668 /* epilogue end (size=1) */
669 /* function ax88796EndPacketSend size 9 (8) */
670 .size ax88796EndPacketSend, .-ax88796EndPacketSend
671 .Lscope6:
672 .stabs "",36,0,0,.Lscope6-ax88796EndPacketSend
673 .section .progmem.data,"a",@progbits
674 .type __c.0, @object
675 .size __c.0, 2
676 __c.0:
677 0000 4200 .string "B"
678 .type __c.1, @object
679 .size __c.1, 2
680 __c.1:
681 0002 4E00 .string "N"
682 .text
683 .stabs "ax88796BeginPacketRetreive:F(0,4)",36,0,249,ax88796BeginPacketRetreive
684 .global ax88796BeginPacketRetreive
685 .type ax88796BeginPacketRetreive, @function
686 ax88796BeginPacketRetreive:
246:ax88796.c ****
247:ax88796.c ****
248:ax88796.c **** unsigned int ax88796BeginPacketRetreive(void)
249:ax88796.c **** {
687 .stabn 68,0,249,.LM99-ax88796BeginPacketRetreive
688 .LM99:
689 /* prologue: frame size=4 */
690 026a AF92 push r10
691 026c BF92 push r11
692 026e CF92 push r12
693 0270 DF92 push r13
694 0272 EF92 push r14
695 0274 FF92 push r15
696 0276 0F93 push r16
697 0278 1F93 push r17
698 027a CF93 push r28
699 027c DF93 push r29
700 027e CDB7 in r28,__SP_L__
701 0280 DEB7 in r29,__SP_H__
702 0282 2497 sbiw r28,4
703 0284 0FB6 in __tmp_reg__,__SREG__
704 0286 F894 cli
705 0288 DEBF out __SP_H__,r29
706 028a 0FBE out __SREG__,__tmp_reg__
707 028c CDBF out __SP_L__,r28
708 /* prologue end (size=18) */
250:ax88796.c **** unsigned char writePagePtr;
251:ax88796.c **** unsigned char readPagePtr;
252:ax88796.c **** unsigned char bnryPagePtr;
253:ax88796.c **** unsigned char i;
254:ax88796.c ****
255:ax88796.c **** unsigned char pageheader[4];
256:ax88796.c **** unsigned int rxlen;
257:ax88796.c ****
258:ax88796.c **** // check for and handle an overflow
259:ax88796.c **** ax88796ProcessInterrupt();
709 .stabn 68,0,259,.LM100-ax88796BeginPacketRetreive
710 .LM100:
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 18
711 .LBB6:
712 028e 0E94 0000 call ax88796ProcessInterrupt
260:ax88796.c ****
261:ax88796.c **** // read CURR from page 1
262:ax88796.c **** ax88796Write(CR,(PS0|RD2|START));
713 .stabn 68,0,262,.LM101-ax88796BeginPacketRetreive
714 .LM101:
715 0292 62E6 ldi r22,lo8(98)
716 0294 80E0 ldi r24,lo8(0)
717 0296 0E94 0000 call ax88796Write
263:ax88796.c **** writePagePtr = ax88796Read(CURR);
718 .stabn 68,0,263,.LM102-ax88796BeginPacketRetreive
719 .LM102:
720 029a 87E0 ldi r24,lo8(7)
721 029c 0E94 0000 call ax88796Read
722 02a0 F82E mov r15,r24
264:ax88796.c **** // read the boundary register from page 0
265:ax88796.c **** ax88796Write(CR,(RD2|START));
723 .stabn 68,0,265,.LM103-ax88796BeginPacketRetreive
724 .LM103:
725 02a2 62E2 ldi r22,lo8(34)
726 02a4 80E0 ldi r24,lo8(0)
727 02a6 0E94 0000 call ax88796Write
266:ax88796.c **** bnryPagePtr = ax88796Read(BNRY);
728 .stabn 68,0,266,.LM104-ax88796BeginPacketRetreive
729 .LM104:
730 02aa 83E0 ldi r24,lo8(3)
731 02ac 0E94 0000 call ax88796Read
732 02b0 082F mov r16,r24
267:ax88796.c ****
268:ax88796.c **** // first packet is at page bnryPtr+1
269:ax88796.c **** readPagePtr = bnryPagePtr+1;
733 .stabn 68,0,269,.LM105-ax88796BeginPacketRetreive
734 .LM105:
735 02b2 C82E mov r12,r24
736 02b4 C394 inc r12
270:ax88796.c **** if(readPagePtr >= RXSTOP_INIT) readPagePtr = RXSTART_INIT;
737 .stabn 68,0,270,.LM106-ax88796BeginPacketRetreive
738 .LM106:
739 02b6 8FE5 ldi r24,lo8(95)
740 02b8 8C15 cp r24,r12
741 02ba 10F4 brsh .L25
742 02bc 56E4 ldi r21,lo8(70)
743 02be C52E mov r12,r21
744 .L25:
271:ax88796.c ****
272:ax88796.c **** // return if there is no packet in the buffer
273:ax88796.c **** if( readPagePtr == writePagePtr )
745 .stabn 68,0,273,.LM107-ax88796BeginPacketRetreive
746 .LM107:
747 02c0 CF14 cp r12,r15
748 02c2 19F4 brne .L26
274:ax88796.c **** {
275:ax88796.c **** return 0;
749 .stabn 68,0,275,.LM108-ax88796BeginPacketRetreive
750 .LM108:
751 02c4 80E0 ldi r24,lo8(0)
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 19
752 02c6 90E0 ldi r25,hi8(0)
753 02c8 87C0 rjmp .L24
754 .L26:
276:ax88796.c **** }
277:ax88796.c ****
278:ax88796.c **** // clear the packet received interrupt flag
279:ax88796.c **** ax88796Write(ISR, PRX);
755 .stabn 68,0,279,.LM109-ax88796BeginPacketRetreive
756 .LM109:
757 02ca 61E0 ldi r22,lo8(1)
758 02cc 87E0 ldi r24,lo8(7)
759 02ce 0E94 0000 call ax88796Write
280:ax88796.c ****
281:ax88796.c **** // if the boundary pointer is invalid,
282:ax88796.c **** // reset the contents of the buffer and exit
283:ax88796.c **** if( (bnryPagePtr < RXSTART_INIT) || (bnryPagePtr >= RXSTOP_INIT) )
760 .stabn 68,0,283,.LM110-ax88796BeginPacketRetreive
761 .LM110:
762 02d2 0654 subi r16,lo8(-(-70))
763 02d4 0A31 cpi r16,lo8(26)
764 02d6 C8F0 brlo .L27
284:ax88796.c **** {
285:ax88796.c **** ax88796Write(BNRY, RXSTART_INIT);
765 .stabn 68,0,285,.LM111-ax88796BeginPacketRetreive
766 .LM111:
767 02d8 66E4 ldi r22,lo8(70)
768 02da 83E0 ldi r24,lo8(3)
769 02dc 0E94 0000 call ax88796Write
286:ax88796.c **** ax88796Write(CR, (PS0|RD2|START));
770 .stabn 68,0,286,.LM112-ax88796BeginPacketRetreive
771 .LM112:
772 02e0 62E6 ldi r22,lo8(98)
773 02e2 80E0 ldi r24,lo8(0)
774 02e4 0E94 0000 call ax88796Write
287:ax88796.c **** ax88796Write(CURR, RXSTART_INIT+1);
775 .stabn 68,0,287,.LM113-ax88796BeginPacketRetreive
776 .LM113:
777 02e8 67E4 ldi r22,lo8(71)
778 02ea 87E0 ldi r24,lo8(7)
779 02ec 0E94 0000 call ax88796Write
288:ax88796.c **** ax88796Write(CR, (RD2|START));
780 .stabn 68,0,288,.LM114-ax88796BeginPacketRetreive
781 .LM114:
782 02f0 62E2 ldi r22,lo8(34)
783 02f2 80E0 ldi r24,lo8(0)
784 02f4 0E94 0000 call ax88796Write
289:ax88796.c ****
290:ax88796.c **** rprintf("B");
785 .stabn 68,0,290,.LM115-ax88796BeginPacketRetreive
786 .LM115:
787 02f8 80E0 ldi r24,lo8(__c.0)
788 02fa 90E0 ldi r25,hi8(__c.0)
789 02fc 9F93 push r25
790 02fe 8F93 push r24
791 0300 81E0 ldi r24,lo8(1)
792 0302 8F93 push r24
793 0304 0E94 0000 call rprintf1RamRom
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 20
291:ax88796.c **** return 0;
794 .stabn 68,0,291,.LM116-ax88796BeginPacketRetreive
795 .LM116:
796 0308 5FC0 rjmp .L43
797 .L27:
292:ax88796.c **** }
293:ax88796.c ****
294:ax88796.c **** // initiate DMA to transfer the RTL8019 packet header
295:ax88796.c **** ax88796Write(RBCR0, 4);
798 .stabn 68,0,295,.LM117-ax88796BeginPacketRetreive
799 .LM117:
800 030a 64E0 ldi r22,lo8(4)
801 030c 8AE0 ldi r24,lo8(10)
802 030e 0E94 0000 call ax88796Write
296:ax88796.c **** ax88796Write(RBCR1, 0);
803 .stabn 68,0,296,.LM118-ax88796BeginPacketRetreive
804 .LM118:
805 0312 60E0 ldi r22,lo8(0)
806 0314 8BE0 ldi r24,lo8(11)
807 0316 0E94 0000 call ax88796Write
297:ax88796.c **** ax88796Write(RSAR0, 0);
808 .stabn 68,0,297,.LM119-ax88796BeginPacketRetreive
809 .LM119:
810 031a 60E0 ldi r22,lo8(0)
811 031c 88E0 ldi r24,lo8(8)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -