Index: kernel/arch/ia32/src/smp/apic.c
===================================================================
--- kernel/arch/ia32/src/smp/apic.c	(revision 0a79ad922d3450fc20e053cc4427007590d4c8ef)
+++ kernel/arch/ia32/src/smp/apic.c	(revision 99718a2ecc5019b587210e9cffa467236e5f2131)
@@ -76,4 +76,6 @@
 
 uint32_t apic_id_mask = 0;
+uint8_t bsp_l_apic = 0;
+
 static irq_t l_apic_timer_irq;
 
@@ -154,4 +156,17 @@
 }
 
+/** Get Local APIC ID.
+ *
+ * @return Local APIC ID.
+ *
+ */
+static uint8_t l_apic_id(void)
+{
+	l_apic_id_t idreg;
+	
+	idreg.value = l_apic[L_APIC_ID];
+	return idreg.apic_id;
+}
+
 /** Initialize APIC on BSP. */
 void apic_init(void)
@@ -208,4 +223,6 @@
 	l_apic_init();
 	l_apic_debug();
+	
+	bsp_l_apic = l_apic_id();
 }
 
@@ -460,33 +477,31 @@
 {
 #ifdef LAPIC_VERBOSE
-	printf("LVT on cpu%" PRIs ", LAPIC ID: %" PRIu8 "\n", CPU->id, l_apic_id());
+	printf("LVT on cpu%" PRIs ", LAPIC ID: %" PRIu8 "\n",
+	    CPU->id, l_apic_id());
 	
 	lvt_tm_t tm;
 	tm.value = l_apic[LVT_Tm];
-	printf("LVT Tm: vector=%hhd, %s, %s, %s\n", tm.vector, delivs_str[tm.delivs], mask_str[tm.masked], tm_mode_str[tm.mode]);
+	printf("LVT Tm: vector=%" PRIu8 ", %s, %s, %s\n",
+	    tm.vector, delivs_str[tm.delivs], mask_str[tm.masked],
+	    tm_mode_str[tm.mode]);
 	
 	lvt_lint_t lint;
 	lint.value = l_apic[LVT_LINT0];
-	printf("LVT LINT0: vector=%hhd, %s, %s, %s, irr=%d, %s, %s\n", tm.vector, delmod_str[lint.delmod], delivs_str[lint.delivs], intpol_str[lint.intpol], lint.irr, trigmod_str[lint.trigger_mode], mask_str[lint.masked]);
-	lint.value = l_apic[LVT_LINT1];	
-	printf("LVT LINT1: vector=%hhd, %s, %s, %s, irr=%d, %s, %s\n", tm.vector, delmod_str[lint.delmod], delivs_str[lint.delivs], intpol_str[lint.intpol], lint.irr, trigmod_str[lint.trigger_mode], mask_str[lint.masked]);	
+	printf("LVT LINT0: vector=%" PRIu8 ", %s, %s, %s, irr=%u, %s, %s\n",
+	    tm.vector, delmod_str[lint.delmod], delivs_str[lint.delivs],
+	    intpol_str[lint.intpol], lint.irr, trigmod_str[lint.trigger_mode],
+	    mask_str[lint.masked]);
+	
+	lint.value = l_apic[LVT_LINT1];
+	printf("LVT LINT1: vector=%" PRIu8 ", %s, %s, %s, irr=%u, %s, %s\n",
+	    tm.vector, delmod_str[lint.delmod], delivs_str[lint.delivs],
+	    intpol_str[lint.intpol], lint.irr, trigmod_str[lint.trigger_mode],
+	    mask_str[lint.masked]);
 	
 	lvt_error_t error;
 	error.value = l_apic[LVT_Err];
-	printf("LVT Err: vector=%hhd, %s, %s\n", error.vector, delivs_str[error.delivs], mask_str[error.masked]);
+	printf("LVT Err: vector=%" PRIu8 ", %s, %s\n", error.vector,
+	    delivs_str[error.delivs], mask_str[error.masked]);
 #endif
-}
-
-/** Get Local APIC ID.
- *
- * @return Local APIC ID.
- *
- */
-uint8_t l_apic_id(void)
-{
-	l_apic_id_t idreg;
-	
-	idreg.value = l_apic[L_APIC_ID];
-	return idreg.apic_id;
 }
 
Index: kernel/arch/ia32/src/smp/smp.c
===================================================================
--- kernel/arch/ia32/src/smp/smp.c	(revision 0a79ad922d3450fc20e053cc4427007590d4c8ef)
+++ kernel/arch/ia32/src/smp/smp.c	(revision 99718a2ecc5019b587210e9cffa467236e5f2131)
@@ -113,6 +113,4 @@
 	apic_init();
 	
-	uint8_t apic = l_apic_id();
-	
 	for (i = 0; i < config.cpu_count; i++) {
 		/*
@@ -128,7 +126,7 @@
 			continue;
 		
-		if (ops->cpu_apic_id(i) == apic) {
-			printf("%s: bad processor entry #%u, will not send IPI "
-			    "to myself\n", __FUNCTION__, i);
+		if (ops->cpu_apic_id(i) == bsp_l_apic) {
+			printf("kmp: bad processor entry #%u, will not send IPI "
+			    "to myself\n", i);
 			continue;
 		}
