diff options
| author | Frans Kaashoek <kaashoek@mit.edu> | 2016-08-19 07:20:08 -0400 | 
|---|---|---|
| committer | Frans Kaashoek <kaashoek@mit.edu> | 2016-08-19 07:20:08 -0400 | 
| commit | 7a77375d64675a6d05b47531ebb24205a3f36483 (patch) | |
| tree | e9089629d85bbeecdcb396e014cd2d2b0a43b6a5 | |
| parent | 1fc87f367c9b3a1125f55e0751909af1e7dfbb8a (diff) | |
| download | xv6-labs-7a77375d64675a6d05b47531ebb24205a3f36483.tar.gz xv6-labs-7a77375d64675a6d05b47531ebb24205a3f36483.tar.bz2 xv6-labs-7a77375d64675a6d05b47531ebb24205a3f36483.zip | |
x
| -rw-r--r-- | lapic.c | 12 | 
1 files changed, 6 insertions, 6 deletions
| @@ -25,7 +25,7 @@    #define DEASSERT   0x00000000    #define LEVEL      0x00008000   // Level triggered    #define BCAST      0x00080000   // Send to all APICs, including self. - /#define BUSY       0x00001000 +  #define BUSY       0x00001000    #define FIXED      0x00000000  #define ICRHI   (0x0310/4)   // Interrupt Command [63:32]  #define TIMER   (0x0320/4)   // Local Vector Table 0 (TIMER) @@ -53,19 +53,19 @@ lapicw(int index, int value)  void  lapicinit(void)  { -  if(!lapic)  +  if(!lapic)      return;    // Enable local APIC; set spurious interrupt vector.    lapicw(SVR, ENABLE | (T_IRQ0 + IRQ_SPURIOUS));    // The timer repeatedly counts down at bus frequency -  // from lapic[TICR] and then issues an interrupt.   +  // from lapic[TICR] and then issues an interrupt.    // If xv6 cared more about precise timekeeping,    // TICR would be calibrated using an external time source.    lapicw(TDCR, X1);    lapicw(TIMER, PERIODIC | (T_IRQ0 + IRQ_TIMER)); -  lapicw(TICR, 10000000);  +  lapicw(TICR, 10000000);    // Disable logical interrupt lines.    lapicw(LINT0, MASKED); @@ -141,7 +141,7 @@ lapicstartap(uchar apicid, uint addr)  {    int i;    ushort *wrv; -   +    // "The BSP must initialize CMOS shutdown code to 0AH    // and the warm reset vector (DWORD based at 40:67) to point at    // the AP startup code prior to the [universal startup algorithm]." @@ -158,7 +158,7 @@ lapicstartap(uchar apicid, uint addr)    microdelay(200);    lapicw(ICRLO, INIT | LEVEL);    microdelay(100);    // should be 10ms, but too slow in Bochs! -   +    // Send startup IPI (twice!) to enter code.    // Regular hardware is supposed to only accept a STARTUP    // when it is in the halted state due to an INIT.  So the second | 
