📄 peripheral_test.objdump
字号:
800442: 03 98 pfx %hi(0x60)
800444: 21 0c dec %g1
800446: 61 7c sext8 %g1
800448: 30 30 mov %l0,%g1
80044a: d0 14 cmpi %l0,0x6
80044c: ec 7e skps cc_ls
80044e: 6e 80 br 80052c <DoTimerMenu+0x1a8>
800450: 50 1c lsli %l0,0x2
800452: 22 9a pfx %hi(0x4440)
800454: 01 35 movi %g1,0x8
800456: 04 98 pfx %hi(0x80)
800458: 01 6c movhi %g1,0x0
80045a: 30 00 add %l0,%g1
80045c: 01 b0 ldp %g1,[%l0,0x0]
80045e: c1 7f jmp %g1
800460: 00 30 nop
{
case 'a':
printf("<space> to show timer, <Esc> to end\n");
800462: 1f 9a pfx %hi(0x43e0)
800464: 08 34 movi %o0,0x0
800466: 04 98 pfx %hi(0x80)
800468: 08 6c movhi %o0,0x0
80046a: d9 98 pfx %hi(0x1b20)
80046c: c1 37 movi %g1,0x1e
80046e: 02 98 pfx %hi(0x40)
800470: 01 6c movhi %g1,0x0
800472: e1 7f call %g1
800474: 00 30 nop
while(1)
800476: ff 9f pfx %hi(0xffe0)
800478: f0 37 movi %l0,0x1f
80047a: 0c 98 pfx %hi(0x180)
80047c: 52 36 movi %l2,0x12
80047e: 02 98 pfx %hi(0x40)
800480: 12 6c movhi %l2,0x0
{
long timerVal;
long timerPeriod;
timer->np_timersnapl = 0; // snapshot
800482: 01 34 movi %g1,0x0
800484: 81 ac stp [%l3,0x4],%g1
timerVal = (timer->np_timersnapl & 0x0ffff)
800486: 89 bc ldp %o1,[%l3,0x4]
800488: 09 3a and %o1,%l0
80048a: a2 bc ldp %g2,[%l3,0x5]
80048c: 02 1e lsli %g2,0x10
+ ((long)timer->np_timersnaph << 16);
timerPeriod = (timer->np_timerperiodl & 0x0ffff)
80048e: 4a bc ldp %o2,[%l3,0x2]
800490: 0a 3a and %o2,%l0
800492: 61 bc ldp %g1,[%l3,0x3]
800494: 01 1e lsli %g1,0x10
+ ((long)timer->np_timerperiodh << 16);
printf("Timer State Time=%8ld, Period = %8ld, Status=%d, Control=%d\n",
800496: 0b bc ldp %o3,[%l3,0x0]
800498: 2c bc ldp %o4,[%l3,0x1]
80049a: 20 9a pfx %hi(0x4400)
80049c: 08 35 movi %o0,0x8
80049e: 04 98 pfx %hi(0x80)
8004a0: 08 6c movhi %o0,0x0
8004a2: 2a 40 or %o2,%g1
8004a4: d9 98 pfx %hi(0x1b20)
8004a6: c1 37 movi %g1,0x1e
8004a8: 02 98 pfx %hi(0x40)
8004aa: 01 6c movhi %g1,0x0
8004ac: e1 7f call %g1
8004ae: 49 40 or %o1,%g2
timerVal,timerPeriod,
timer->np_timerstatus,
timer->np_timercontrol);
while((c = rGetChar()) < 0)
8004b0: f2 7f call %l2
8004b2: 00 30 nop
8004b4: 11 31 mov %l1,%o0
8004b6: 11 74 ext8s %l1,0x0
8004b8: 21 32 mov %g1,%l1
8004ba: 01 74 ext8s %g1,0x0
8004bc: 61 7c sext8 %g1
8004be: 01 14 cmpi %g1,0x0
8004c0: e6 7e skps cc_ge
8004c2: f6 87 br 8004b0 <DoTimerMenu+0x12c>
8004c4: 00 30 nop
;
if(c == 27) goto menu;
8004c6: 61 17 cmpi %g1,0x1b
8004c8: e3 7e skps cc_ne
8004ca: 6b 87 br 8003a2 <DoTimerMenu+0x1e>
8004cc: 00 30 nop
if(c != ' ') goto menuSwitch;
8004ce: 01 98 pfx %hi(0x20)
8004d0: 01 14 cmpi %g1,0x0
8004d2: e3 7e skps cc_ne
8004d4: d6 87 br 800482 <DoTimerMenu+0xfe>
8004d6: 21 32 mov %g1,%l1
8004d8: b4 87 br 800442 <DoTimerMenu+0xbe>
8004da: 00 30 nop
}
case 'b':
timer->np_timercontrol = (timer->np_timercontrol & 3)
8004dc: 21 bc ldp %g1,[%l3,0x1]
8004de: 00 98 pfx %hi(0x0)
8004e0: 61 38 and %g1,0x3
8004e2: 81 04 addi %g1,0x4
8004e4: 21 ac stp [%l3,0x1],%g1
+ np_timercontrol_start_mask;
break;
8004e6: 22 80 br 80052c <DoTimerMenu+0x1a8>
8004e8: 00 30 nop
case 'c':
timer->np_timercontrol = (timer->np_timercontrol & 3)
8004ea: 21 bc ldp %g1,[%l3,0x1]
8004ec: 00 98 pfx %hi(0x0)
8004ee: 61 38 and %g1,0x3
8004f0: 01 05 addi %g1,0x8
8004f2: 21 ac stp [%l3,0x1],%g1
+ np_timercontrol_stop_mask;
break;
8004f4: 1b 80 br 80052c <DoTimerMenu+0x1a8>
8004f6: 00 30 nop
case 'd':
timer->np_timercontrol = timer->np_timercontrol
8004f8: 21 bc ldp %g1,[%l3,0x1]
8004fa: 00 98 pfx %hi(0x0)
8004fc: 41 40 or %g1,0x2
8004fe: 21 ac stp [%l3,0x1],%g1
| np_timercontrol_cont_mask;
break;
800500: 15 80 br 80052c <DoTimerMenu+0x1a8>
800502: 00 30 nop
case 'e':
timer->np_timercontrol = timer->np_timercontrol
800504: 21 bc ldp %g1,[%l3,0x1]
800506: 00 98 pfx %hi(0x0)
800508: 41 3c andn %g1,0x2
80050a: 21 ac stp [%l3,0x1],%g1
& ~np_timercontrol_cont_mask;
break;
80050c: 0f 80 br 80052c <DoTimerMenu+0x1a8>
80050e: 00 30 nop
MenuCase('f',DoEnableTimerInterrupt);
800510: 15 98 pfx %hi(0x2a0)
800512: 81 36 movi %g1,0x14
800514: 02 98 pfx %hi(0x40)
800516: 01 6c movhi %g1,0x0
800518: e1 7f call %g1
80051a: 00 30 nop
80051c: 07 80 br 80052c <DoTimerMenu+0x1a8>
80051e: 00 30 nop
MenuCase('g',DoDisableTimerInterrupt);
800520: 16 98 pfx %hi(0x2c0)
800522: 41 37 movi %g1,0x1a
800524: 02 98 pfx %hi(0x40)
800526: 01 6c movhi %g1,0x0
800528: e1 7f call %g1
80052a: 00 30 nop
}
if(c != 'q')
80052c: 21 32 mov %g1,%l1
80052e: 01 74 ext8s %g1,0x0
800530: 61 7c sext8 %g1
800532: 03 98 pfx %hi(0x60)
800534: 21 16 cmpi %g1,0x11
800536: e2 7e skps cc_eq
800538: 34 87 br 8003a2 <DoTimerMenu+0x1e>
80053a: 00 30 nop
goto menu;
}
80053c: df 7f ret
80053e: a0 7d restore
00800540 <MyTimerISR>:
typedef struct
{
long interruptCount; // increment with each interrupt
np_timer *timer;
} TimerISRContext;
static TimerISRContext gC = {0,0};
void MyTimerISR(int context)
{
800540: 17 78 save %sp,0x17
800542: 10 33 mov %l0,%i0
TimerISRContext *c;
c = (TimerISRContext *)context;
c->interruptCount++;
800544: 09 b0 ldp %o1,[%l0,0x0]
800546: 29 04 inc %o1
800548: 09 a0 stp [%l0,0x0],%o1
printf("(timer #%d!)",c->interruptCount);
80054a: 23 9a pfx %hi(0x4460)
80054c: 88 34 movi %o0,0x4
80054e: 04 98 pfx %hi(0x80)
800550: 08 6c movhi %o0,0x0
800552: d9 98 pfx %hi(0x1b20)
800554: c1 37 movi %g1,0x1e
800556: 02 98 pfx %hi(0x40)
800558: 01 6c movhi %g1,0x0
80055a: e1 7f call %g1
80055c: 00 30 nop
c->timer->np_timerstatus = 0; // write anything to clear the IRQ
80055e: 30 b0 ldp %l0,[%l0,0x1]
800560: 01 34 movi %g1,0x0
800562: 01 a0 stp [%l0,0x0],%g1
}
800564: df 7f ret
800566: a0 7d restore
00800568 <DoEnableTimerInterrupt>:
// Turn on interrupts: enable interrupt bit, and
// install a user ISR
void DoEnableTimerInterrupt(void)
{
800568: 17 78 save %sp,0x17
gC.timer = na_timer1;
80056a: 4e 9a pfx %hi(0x49c0)
80056c: 10 35 movi %l0,0x8
80056e: 04 98 pfx %hi(0x80)
800570: 10 6c movhi %l0,0x0
800572: 49 98 pfx %hi(0x920)
800574: 01 34 movi %g1,0x0
800576: 04 98 pfx %hi(0x80)
800578: 01 6e movhi %g1,0x10
80057a: 21 a0 stp [%l0,0x1],%g1
nr_installuserisr(na_timer1_irq,MyTimerISR,(long)&gC);
80057c: 28 36 movi %o0,0x11
80057e: 15 98 pfx %hi(0x2a0)
800580: 09 34 movi %o1,0x0
800582: 02 98 pfx %hi(0x40)
800584: 09 6c movhi %o1,0x0
800586: d3 98 pfx %hi(0x1a60)
800588: e1 35 movi %g1,0xf
80058a: 02 98 pfx %hi(0x40)
80058c: 01 6c movhi %g1,0x0
80058e: e1 7f call %g1
800590: 0a 32 mov %o2,%l0
gC.timer->np_timercontrol = gC.timer->np_timercontrol | np_timercontrol_ito_mask;
800592: 30 b0 ldp %l0,[%l0,0x1]
800594: 21 b0 ldp %g1,[%l0,0x1]
800596: 00 98 pfx %hi(0x0)
800598: 21 40 or %g1,0x1
80059a: 21 a0 stp [%l0,0x1],%g1
printf("\n\nTimer interrupt enabled.\n\n");
80059c: 23 9a pfx %hi(0x4460)
80059e: 88 36 movi %o0,0x14
8005a0: 04 98 pfx %hi(0x80)
8005a2: 08 6c movhi %o0,0x0
8005a4: d9 98 pfx %hi(0x1b20)
8005a6: c1 37 movi %g1,0x1e
8005a8: 02 98 pfx %hi(0x40)
8005aa: 01 6c movhi %g1,0x0
8005ac: e1 7f call %g1
8005ae: 00 30 nop
}
8005b0: df 7f ret
8005b2: a0 7d restore
008005b4 <DoDisableTimerInterrupt>:
void DoDisableTimerInterrupt(void)
{
8005b4: 17 78 save %sp,0x17
gC.timer = na_timer1;
8005b6: 4e 9a pfx %hi(0x49c0)
8005b8: 10 35 movi %l0,0x8
8005ba: 04 98 pfx %hi(0x80)
8005bc: 10 6c movhi %l0,0x0
8005be: 49 98 pfx %hi(0x920)
8005c0: 01 34 movi %g1,0x0
8005c2: 04 98 pfx %hi(0x80)
8005c4: 01 6e movhi %g1,0x10
8005c6: 21 a0 stp [%l0,0x1],%g1
nr_installuserisr(na_timer1_irq,0,0);
8005c8: 28 36 movi %o0,0x11
8005ca: 09 34 movi %o1,0x0
8005cc: d3 98 pfx %hi(0x1a60)
8005ce: e1 35 movi %g1,0xf
8005d0: 02 98 pfx %hi(0x40)
8005d2: 01 6c movhi %g1,0x0
8005d4: e1 7f call %g1
8005d6: 0a 34 movi %o2,0x0
gC.timer->np_timercontrol = gC.timer->np_timercontrol & ~np_timercontrol_ito_mask;
8005d8: 30 b0 ldp %l0,[%l0,0x1]
8005da: 21 b0 ldp %g1,[%l0,0x1]
8005dc: 00 98 pfx %hi(0x0)
8005de: 21 3c andn %g1,0x1
8005e0: 21 a0 stp [%l0,0x1],%g1
printf("\n\nTimer interrupt disabled.\n\n");
8005e2: 24 9a pfx %hi(0x4480)
8005e4: 88 36 movi %o0,0x14
8005e6: 04 98 pfx %hi(0x80)
8005e8: 08 6c movhi %o0,0x0
8005ea: d9 98 pfx %hi(0x1b20)
8005ec: c1 37 movi %g1,0x1e
8005ee: 02 98 pfx %hi(0x40)
8005f0: 01 6c movhi %g1,0x0
8005f2: e1 7f call %g1
8005f4: 00 30 nop
}
8005f6: df 7f ret
8005f8: a0 7d restore
008005fa <DoRapidPeripheralWrites>:
8005fa: 17 78 save %sp,0x17
8005fc: 1a 80 br 800632 <pastStringData00141>
8005fe: 00 30 nop
00800600 <stringData00141>:
800600: 54 68 ext16d %l4,%g2
800602: 69 73 usr0 %o1,%i3
800604: 20 74 ext8s %g0,0x1
800606: 65 73 usr0 %g5,%i3
800608: 74 20 lsr %l4,%g3
80060a: 65 78 save %sp,0x65
80060c: 65 63 sts8s [%sp,0x365],%r0
80060e: 75 74 ext8s %l5,0x3
800610: 65 73 usr0 %g5,%i3
800612: 20 61 sts8s [%sp,0x120],%r0
800614: 20 76 st8s [%g0],%r0,0x1
800616: 65 72 usr0 %g5,%l3
800618: 79 20 lsr %i1,%g3
80061a: 73 65 sts16s [%sp,0xb9],%r0
80061c: 72 69 ext16d %l2,%o3
80061e: 65 73 usr0 %g5,%i3
800620: 20 6f movhi %g0,0x19
800622: 66 20 lsr %g6,%g3
800624: 69 6e movhi %o1,0x13
800626: 73 74 ext8s %l3,0x3
800628: 72 75 *unknown*
80062a: 63 74 ext8s %g3,0x3
80062c: 69 6f movhi %o1,0x1b
80062e: 6e 73 usr0 %sp,%i3
...
00800632 <pastStringData00141>:
800632: 30 98 pfx %hi(0x600)
800634: 08 34 movi %o0,0x0
800636: 04 98 pfx %hi(0x80)
800638: 08 6c movhi %o0,0x0
80063a: f6 98 pfx %hi(0x1ec0)
80063c: 87 37 movi %g7,0x1c
80063e: 02 98 pfx %hi(0x40)
800640: 07 6c movhi %g7,0x0
800642: e7 7f call %g7
800644: 00 30 nop
800646: f6 98 pfx %hi(0x1ec0)
800648: 87 35 movi %g7,0xc
80064a: 02 98 pfx %hi(0x40)
80064c: 07 6c movhi %g7,0x0
80064e: e7 7f call %g7
800650: 00 30 nop
800652: 1a 80 br 800688 <pastStringData00151>
800654: 00 30 nop
00800656 <stringData00151>:
800656: 63 6f movhi %g3,0x1b
800658: 6e 73 usr0 %sp,%i3
80065a: 69 73 usr0 %o1,%i3
80065c: 74 69 ext16d %l4,%o3
80065e: 6e 67 sts16s [%sp,0x1b7],%r0
800660: 20 6d movhi %g0,0x9
800662: 61 6e movhi %g1,0x13
800664: 79 20 lsr %i1,%g3
800666: 6d 61 sts8s [%sp,0x16d],%r0
800668: 6e 79 trap 0x2e
80066a: 20 74 ext8s %g0,0x1
80066c: 69 6e movhi %o1,0x13
80066e: 79 20 lsr %i1,%g3
800670: 55 41 or %l5,%o2
800672: 52 54 skp1 %l2,0x2
800674: 20 74 ext8s %g0,0x1
800676: 72 61 sts8s [%sp,0x172],%r0
800678: 6e 73 usr0 %sp,%i3
80067a: 6d 69 ext16d %o5,%o3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -