📄 ax88796.lst
字号:
401 .stabn 68,0,154,.LM58-ax88796Read
402 .LM58:
403 .LBB3:
404 0172 85B3 in r24,53-0x20
405 0174 807E andi r24,lo8(-32)
406 0176 892B or r24,r25
407 0178 85BB out 53-0x20,r24
155:ax88796.c ****
156:ax88796.c **** // assert read
157:ax88796.c **** cbi(AX88796_CONTROL_PORT, AX88796_CONTROL_READPIN);
408 .stabn 68,0,157,.LM59-ax88796Read
409 .LM59:
410 017a AD98 cbi 53-0x20,5
158:ax88796.c **** asm volatile ("nop");
411 .stabn 68,0,158,.LM60-ax88796Read
412 .LM60:
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 11
413 /* #APP */
414 017c 0000 nop
159:ax88796.c ****
160:ax88796.c **** // read in the data
161:ax88796.c **** byte = inb( AX88796_DATA_PIN );
415 .stabn 68,0,161,.LM61-ax88796Read
416 .LM61:
417 /* #NOAPP */
418 017e 89B3 in r24,57-0x20
162:ax88796.c **** asm volatile ("nop");
419 .stabn 68,0,162,.LM62-ax88796Read
420 .LM62:
421 /* #APP */
422 0180 0000 nop
163:ax88796.c ****
164:ax88796.c **** // negate read
165:ax88796.c **** sbi(AX88796_CONTROL_PORT, AX88796_CONTROL_READPIN) ;
423 .stabn 68,0,165,.LM63-ax88796Read
424 .LM63:
425 /* #NOAPP */
426 0182 AD9A sbi 53-0x20,5
166:ax88796.c ****
167:ax88796.c **** return byte;
427 .stabn 68,0,167,.LM64-ax88796Read
428 .LM64:
429 0184 9927 clr r25
168:ax88796.c **** }
430 .stabn 68,0,168,.LM65-ax88796Read
431 .LM65:
432 .LBE3:
433 /* epilogue: frame size=0 */
434 0186 0895 ret
435 /* epilogue end (size=1) */
436 /* function ax88796Read size 14 (13) */
437 .size ax88796Read, .-ax88796Read
438 .stabs "byte:r(4,1)",64,0,151,24
439 .stabn 192,0,0,.LBB3-ax88796Read
440 .stabn 224,0,0,.LBE3-ax88796Read
441 .Lscope2:
442 .stabs "",36,0,0,.Lscope2-ax88796Read
443 .stabs "ax88796SetupPorts:F(0,20)",36,0,173,ax88796SetupPorts
444 .global ax88796SetupPorts
445 .type ax88796SetupPorts, @function
446 ax88796SetupPorts:
169:ax88796.c **** #endif
170:ax88796.c ****
171:ax88796.c ****
172:ax88796.c **** void ax88796SetupPorts(void)
173:ax88796.c **** {
447 .stabn 68,0,173,.LM66-ax88796SetupPorts
448 .LM66:
449 /* prologue: frame size=0 */
450 /* prologue end (size=0) */
174:ax88796.c **** #if MEMORY_MAPPED_NIC == 1
175:ax88796.c **** // enable external SRAM interface - no wait states
176:ax88796.c **** sbi(MCUSR, SRE);
177:ax88796.c **** #else
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 12
178:ax88796.c **** // set address port to output
179:ax88796.c **** outb(AX88796_ADDRESS_DDR, AX88796_ADDRESS_MASK);
451 .stabn 68,0,179,.LM67-ax88796SetupPorts
452 .LM67:
453 0188 8FE1 ldi r24,lo8(31)
454 018a 84BB out 52-0x20,r24
180:ax88796.c ****
181:ax88796.c **** // set data port to input with pull-ups
182:ax88796.c **** outb(AX88796_DATA_DDR, 0x00);
455 .stabn 68,0,182,.LM68-ax88796SetupPorts
456 .LM68:
457 018c 1ABA out 58-0x20,__zero_reg__
183:ax88796.c **** outb(AX88796_DATA_PORT, 0xFF);
458 .stabn 68,0,183,.LM69-ax88796SetupPorts
459 .LM69:
460 018e 8FEF ldi r24,lo8(-1)
461 0190 8BBB out 59-0x20,r24
184:ax88796.c ****
185:ax88796.c **** // initialize the control port read and write pins to de-asserted
186:ax88796.c **** sbi( AX88796_CONTROL_PORT, AX88796_CONTROL_READPIN );
462 .stabn 68,0,186,.LM70-ax88796SetupPorts
463 .LM70:
464 0192 AD9A sbi 53-0x20,5
187:ax88796.c **** sbi( AX88796_CONTROL_PORT, AX88796_CONTROL_WRITEPIN );
465 .stabn 68,0,187,.LM71-ax88796SetupPorts
466 .LM71:
467 0194 AE9A sbi 53-0x20,6
188:ax88796.c **** // set the read and write pins to output
189:ax88796.c **** sbi( AX88796_CONTROL_DDR, AX88796_CONTROL_READPIN );
468 .stabn 68,0,189,.LM72-ax88796SetupPorts
469 .LM72:
470 0196 A59A sbi 52-0x20,5
190:ax88796.c **** sbi( AX88796_CONTROL_DDR, AX88796_CONTROL_WRITEPIN );
471 .stabn 68,0,190,.LM73-ax88796SetupPorts
472 .LM73:
473 0198 A69A sbi 52-0x20,6
191:ax88796.c **** #endif
192:ax88796.c **** // set reset pin to output
193:ax88796.c **** sbi( AX88796_RESET_DDR, AX88796_RESET_PIN );
474 .stabn 68,0,193,.LM74-ax88796SetupPorts
475 .LM74:
476 019a 8A9A sbi 49-0x20,2
194:ax88796.c **** }
477 .stabn 68,0,194,.LM75-ax88796SetupPorts
478 .LM75:
479 /* epilogue: frame size=0 */
480 019c 0895 ret
481 /* epilogue end (size=1) */
482 /* function ax88796SetupPorts size 11 (10) */
483 .size ax88796SetupPorts, .-ax88796SetupPorts
484 .Lscope3:
485 .stabs "",36,0,0,.Lscope3-ax88796SetupPorts
486 .stabs "ax88796BeginPacketSend:F(0,20)",36,0,198,ax88796BeginPacketSend
487 .stabs "packetLength:P(0,4)",64,0,197,16
488 .global ax88796BeginPacketSend
489 .type ax88796BeginPacketSend, @function
490 ax88796BeginPacketSend:
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 13
195:ax88796.c ****
196:ax88796.c ****
197:ax88796.c **** void ax88796BeginPacketSend(unsigned int packetLength)
198:ax88796.c **** {
491 .stabn 68,0,198,.LM76-ax88796BeginPacketSend
492 .LM76:
493 /* prologue: frame size=0 */
494 019e 0F93 push r16
495 01a0 1F93 push r17
496 01a2 CF93 push r28
497 01a4 DF93 push r29
498 /* prologue end (size=4) */
499 01a6 EC01 movw r28,r24
199:ax88796.c **** unsigned int sendPacketLength;
200:ax88796.c **** sendPacketLength = (packetLength>=ETHERNET_MIN_PACKET_LENGTH) ?
500 .stabn 68,0,200,.LM77-ax88796BeginPacketSend
501 .LM77:
502 .LBB4:
503 01a8 8C01 movw r16,r24
504 01aa CC97 sbiw r24,60
505 01ac 10F4 brsh .L11
506 01ae CCE3 ldi r28,lo8(60)
507 01b0 D0E0 ldi r29,hi8(60)
508 .L11:
201:ax88796.c **** packetLength : ETHERNET_MIN_PACKET_LENGTH ;
202:ax88796.c ****
203:ax88796.c **** //start the NIC
204:ax88796.c **** ax88796Write(CR,0x22);
509 .stabn 68,0,204,.LM78-ax88796BeginPacketSend
510 .LM78:
511 01b2 62E2 ldi r22,lo8(34)
512 01b4 80E0 ldi r24,lo8(0)
513 01b6 0E94 0000 call ax88796Write
205:ax88796.c ****
206:ax88796.c **** // still transmitting a packet - wait for it to finish
207:ax88796.c **** while( ax88796Read(CR) & 0x04 );
514 .stabn 68,0,207,.LM79-ax88796BeginPacketSend
515 .LM79:
516 .L12:
517 01ba 80E0 ldi r24,lo8(0)
518 01bc 0E94 0000 call ax88796Read
519 01c0 82FD sbrc r24,2
520 01c2 FBCF rjmp .L12
208:ax88796.c ****
209:ax88796.c **** //load beginning page for transmit buffer
210:ax88796.c **** ax88796Write(TPSR,TXSTART_INIT);
521 .stabn 68,0,210,.LM80-ax88796BeginPacketSend
522 .LM80:
523 01c4 60E4 ldi r22,lo8(64)
524 01c6 84E0 ldi r24,lo8(4)
525 01c8 0E94 0000 call ax88796Write
211:ax88796.c ****
212:ax88796.c **** //set start address for remote DMA operation
213:ax88796.c **** ax88796Write(RSAR0,0x00);
526 .stabn 68,0,213,.LM81-ax88796BeginPacketSend
527 .LM81:
528 01cc 60E0 ldi r22,lo8(0)
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 14
529 01ce 88E0 ldi r24,lo8(8)
530 01d0 0E94 0000 call ax88796Write
214:ax88796.c **** ax88796Write(RSAR1,0x40);
531 .stabn 68,0,214,.LM82-ax88796BeginPacketSend
532 .LM82:
533 01d4 60E4 ldi r22,lo8(64)
534 01d6 89E0 ldi r24,lo8(9)
535 01d8 0E94 0000 call ax88796Write
215:ax88796.c ****
216:ax88796.c **** //clear the packet stored interrupt
217:ax88796.c **** ax88796Write(ISR, PTX);
536 .stabn 68,0,217,.LM83-ax88796BeginPacketSend
537 .LM83:
538 01dc 62E0 ldi r22,lo8(2)
539 01de 87E0 ldi r24,lo8(7)
540 01e0 0E94 0000 call ax88796Write
218:ax88796.c ****
219:ax88796.c **** //load data byte count for remote DMA
220:ax88796.c **** ax88796Write(RBCR0, (unsigned char)(packetLength));
541 .stabn 68,0,220,.LM84-ax88796BeginPacketSend
542 .LM84:
543 01e4 602F mov r22,r16
544 01e6 8AE0 ldi r24,lo8(10)
545 01e8 0E94 0000 call ax88796Write
221:ax88796.c **** ax88796Write(RBCR1, (unsigned char)(packetLength>>8));
546 .stabn 68,0,221,.LM85-ax88796BeginPacketSend
547 .LM85:
548 01ec 812F mov r24,r17
549 01ee 9927 clr r25
550 01f0 682F mov r22,r24
551 01f2 8BE0 ldi r24,lo8(11)
552 01f4 0E94 0000 call ax88796Write
222:ax88796.c ****
223:ax88796.c **** ax88796Write(TBCR0, (unsigned char)(sendPacketLength));
553 .stabn 68,0,223,.LM86-ax88796BeginPacketSend
554 .LM86:
555 01f8 6C2F mov r22,r28
556 01fa 85E0 ldi r24,lo8(5)
557 01fc 0E94 0000 call ax88796Write
224:ax88796.c **** ax88796Write(TBCR1, (unsigned char)((sendPacketLength)>>8));
558 .stabn 68,0,224,.LM87-ax88796BeginPacketSend
559 .LM87:
560 0200 8D2F mov r24,r29
561 0202 9927 clr r25
562 0204 682F mov r22,r24
563 0206 86E0 ldi r24,lo8(6)
564 0208 0E94 0000 call ax88796Write
225:ax88796.c ****
226:ax88796.c **** //do remote write operation
227:ax88796.c **** ax88796Write(CR,0x12);
565 .stabn 68,0,227,.LM88-ax88796BeginPacketSend
566 .LM88:
567 020c 62E1 ldi r22,lo8(18)
568 020e 80E0 ldi r24,lo8(0)
569 0210 0E94 0000 call ax88796Write
228:ax88796.c **** }
570 .stabn 68,0,228,.LM89-ax88796BeginPacketSend
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 15
571 .LM89:
572 .LBE4:
573 /* epilogue: frame size=0 */
574 0214 DF91 pop r29
575 0216 CF91 pop r28
576 0218 1F91 pop r17
577 021a 0F91 pop r16
578 021c 0895 ret
579 /* epilogue end (size=5) */
580 /* function ax88796BeginPacketSend size 65 (56) */
581 .size ax88796BeginPacketSend, .-ax88796BeginPacketSend
582 .stabs "sendPacketLength:r(0,4)",64,0,199,28
583 .stabn 192,0,0,.LBB4-ax88796BeginPacketSend
584 .stabn 224,0,0,.LBE4-ax88796BeginPacketSend
585 .Lscope4:
586 .stabs "",36,0,0,.Lscope4-ax88796BeginPacketSend
587 .stabs "ax88796SendPacketData:F(0,20)",36,0,231,ax88796SendPacketData
588 .stabs "localBuffer:P(1,1)=*(0,11)",64,0,230,24
589 .stabs "length:P(0,4)",64,0,230,14
590 .global ax88796SendPacketData
591 .type ax88796SendPacketData, @function
592 ax88796SendPacketData:
229:ax88796.c ****
230:ax88796.c **** void ax88796SendPacketData(unsigned char * localBuffer, unsigned int length)
231:ax88796.c **** {
593 .stabn 68,0,231,.LM90-ax88796SendPacketData
594 .LM90:
595 /* prologue: frame size=0 */
596 021e EF92 push r14
597 0220 FF92 push r15
598 0222 0F93 push r16
599 0224 1F93 push r17
600 0226 CF93 push r28
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -