} else if (deliveryMode == DeliveryMode::INIT && !pendingInit) {
             pendingUnmaskableInt = pendingInit = true;
             initVector = vector;
+        } else if (deliveryMode == DeliveryMode::SIPI && !pendingStartup) {
+            pendingUnmaskableInt = pendingStartup = true;
+            startupVector = vector;
         }
     } 
     cpu->wakeup();
     pendingNmi(false), nmiVector(0),
     pendingExtInt(false), extIntVector(0),
     pendingInit(false), initVector(0),
+    pendingStartup(false), startupVector(0),
     pendingUnmaskableInt(false)
 {
     pioSize = PageBytes;
         } else if (pendingInit) {
             DPRINTF(LocalApic, "Generated INIT fault object.\n");
             return new InitInterrupt(initVector);
+        } else if (pendingStartup) {
+            DPRINTF(LocalApic, "Generating SIPI fault object.\n");
+            return new StartupInterrupt(startupVector);
         } else {
             panic("pendingUnmaskableInt set, but no unmaskable "
                     "ints were pending.\n");
         } else if (pendingInit) {
             DPRINTF(LocalApic, "Init sent to core.\n");
             pendingInit = false;
+        } else if (pendingStartup) {
+            DPRINTF(LocalApic, "SIPI sent to core.\n");
+            pendingStartup = false;
         }
-        if (!(pendingSmi || pendingNmi || pendingInit))
+        if (!(pendingSmi || pendingNmi || pendingInit || pendingStartup))
             pendingUnmaskableInt = false;
     } else if (pendingExtInt) {
         pendingExtInt = false;
 
             SMI = 2,
             NMI = 4,
             INIT = 5,
+            SIPI = 6,
             ExtInt = 7,
             NumModes
         };
 
         static const char * const names[NumModes] = {
             "Fixed", "LowestPriority", "SMI", "Reserved",
-            "NMI", "INIT", "Reserved", "ExtInt"
+            "NMI", "INIT", "Startup", "ExtInt"
         };
 
         static inline bool
         isReserved(int mode)
         {
-            return mode == 3 || mode == 6;
+            return mode == 3;
         }
     }