cpu/x86/lapic: Do not inline some utility functions

They are not __always_inline and specially enable_lapic()
will become more complex to support X2APIC state changes.

Change-Id: Ic180fa8b36e419aba07e1754d4bf48c9dfddb2f3
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/55258
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-by: Wonkyu Kim <wonkyu.kim@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/cpu/x86/lapic/Makefile.inc b/src/cpu/x86/lapic/Makefile.inc
index ea16014..8e89d29 100644
--- a/src/cpu/x86/lapic/Makefile.inc
+++ b/src/cpu/x86/lapic/Makefile.inc
@@ -1,4 +1,3 @@
-ramstage-y += lapic.c
 ramstage-y += lapic_cpu_init.c
 ramstage-$(CONFIG_SMP) += secondary.S
 bootblock-$(CONFIG_UDELAY_LAPIC) += apic_timer.c
@@ -10,3 +9,9 @@
 romstage-y += boot_cpu.c
 ramstage-y += boot_cpu.c
 postcar-y += boot_cpu.c
+
+bootblock-y += lapic.c
+verstage_x86-y += lapic.c
+romstage-y += lapic.c
+ramstage-y += lapic.c
+postcar-y += lapic.c
diff --git a/src/cpu/x86/lapic/lapic.c b/src/cpu/x86/lapic/lapic.c
index 468a5dc..9f3cff5 100644
--- a/src/cpu/x86/lapic/lapic.c
+++ b/src/cpu/x86/lapic/lapic.c
@@ -1,10 +1,37 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
 #include <cpu/x86/lapic.h>
+#include <cpu/x86/lapic_def.h>
+#include <cpu/x86/msr.h>
 #include <console/console.h>
 #include <stdint.h>
 
-void lapic_virtual_wire_mode_init(void)
+void enable_lapic(void)
+{
+	msr_t msr;
+	msr = rdmsr(LAPIC_BASE_MSR);
+	msr.hi &= 0xffffff00;
+	msr.lo &= ~LAPIC_BASE_MSR_ADDR_MASK;
+	msr.lo |= LAPIC_DEFAULT_BASE;
+	msr.lo |= LAPIC_BASE_MSR_ENABLE;
+	wrmsr(LAPIC_BASE_MSR, msr);
+}
+
+void disable_lapic(void)
+{
+	msr_t msr;
+	msr = rdmsr(LAPIC_BASE_MSR);
+	msr.lo &= ~LAPIC_BASE_MSR_ENABLE;
+	wrmsr(LAPIC_BASE_MSR, msr);
+}
+
+/* See if I need to initialize the local APIC */
+static int need_lapic_init(void)
+{
+	return CONFIG(SMP) || CONFIG(IOAPIC);
+}
+
+static void lapic_virtual_wire_mode_init(void)
 {
 	/* this is so interrupts work. This is very limited scope --
 	 * linux will do better later, we hope ...
@@ -40,3 +67,11 @@
 	printk(BIOS_DEBUG, " apic_id: 0x%x ", lapicid());
 	printk(BIOS_INFO, "done.\n");
 }
+
+void setup_lapic(void)
+{
+	if (need_lapic_init())
+		lapic_virtual_wire_mode_init();
+	else
+		disable_lapic();
+}
diff --git a/src/include/cpu/x86/lapic.h b/src/include/cpu/x86/lapic.h
index cf048a8..a3d0fcb 100644
--- a/src/include/cpu/x86/lapic.h
+++ b/src/include/cpu/x86/lapic.h
@@ -116,25 +116,6 @@
 	do { } while (lapic_read(LAPIC_ICR) & LAPIC_ICR_BUSY);
 }
 
-static inline void enable_lapic(void)
-{
-	msr_t msr;
-	msr = rdmsr(LAPIC_BASE_MSR);
-	msr.hi &= 0xffffff00;
-	msr.lo &= ~LAPIC_BASE_MSR_ADDR_MASK;
-	msr.lo |= LAPIC_DEFAULT_BASE;
-	msr.lo |= LAPIC_BASE_MSR_ENABLE;
-	wrmsr(LAPIC_BASE_MSR, msr);
-}
-
-static inline void disable_lapic(void)
-{
-	msr_t msr;
-	msr = rdmsr(LAPIC_BASE_MSR);
-	msr.lo &= ~LAPIC_BASE_MSR_ENABLE;
-	wrmsr(LAPIC_BASE_MSR, msr);
-}
-
 static __always_inline unsigned int initial_lapicid(void)
 {
 	uint32_t lapicid;
@@ -168,20 +149,8 @@
 void stop_this_cpu(void);
 #endif
 
-void lapic_virtual_wire_mode_init(void);
-
-/* See if I need to initialize the local APIC */
-static inline int need_lapic_init(void)
-{
-	return CONFIG(SMP) || CONFIG(IOAPIC);
-}
-
-static inline void setup_lapic(void)
-{
-	if (need_lapic_init())
-		lapic_virtual_wire_mode_init();
-	else
-		disable_lapic();
-}
+void enable_lapic(void);
+void disable_lapic(void);
+void setup_lapic(void);
 
 #endif /* CPU_X86_LAPIC_H */