diff --git a/drivers/lguest/Makefile b/drivers/lguest/Makefile
index 2db98c233e5424d2449ddb0a0339bfd7f91e3b58..a4567c99991b8b70ad00a70f1b7f494a578fd0f3 100644
--- a/drivers/lguest/Makefile
+++ b/drivers/lguest/Makefile
@@ -3,8 +3,10 @@ obj-$(CONFIG_LGUEST_GUEST) += lguest_bus.o
 
 # Host requires the other files, which can be a module.
 obj-$(CONFIG_LGUEST)	+= lg.o
-lg-y := core.o hypercalls.o page_tables.o interrupts_and_traps.o \
-	segments.o io.o lguest_user.o switcher.o
+lg-y = core.o hypercalls.o page_tables.o interrupts_and_traps.o \
+	segments.o io.o lguest_user.o
+
+lg-$(CONFIG_X86_32) += x86/switcher_32.o
 
 Preparation Preparation!: PREFIX=P
 Guest: PREFIX=G
diff --git a/drivers/lguest/switcher.S b/drivers/lguest/x86/switcher_32.S
similarity index 99%
rename from drivers/lguest/switcher.S
rename to drivers/lguest/x86/switcher_32.S
index 7c9c230cc845f184973e6eebea5beb9a41568735..a3d23f79cba47142445ed0882ae9d1a909f61c51 100644
--- a/drivers/lguest/switcher.S
+++ b/drivers/lguest/x86/switcher_32.S
@@ -48,7 +48,7 @@
 #include <linux/linkage.h>
 #include <asm/asm-offsets.h>
 #include <asm/page.h>
-#include "lg.h"
+#include "../lg.h"
 
 // We mark the start of the code to copy
 // It's placed in .text tho it's never run here