diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c
index 007ae860346fa32dc88b445c78c8fd4b7a6919e1..f0dafedc254fb5d0ca3973946539babf7a75d267 100644
--- a/arch/sandbox/cpu/cpu.c
+++ b/arch/sandbox/cpu/cpu.c
@@ -49,18 +49,6 @@ unsigned long __attribute__((no_instrument_function)) timer_get_us(void)
 	return os_get_nsec() / 1000;
 }
 
-int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
-{
-	if (flag & (BOOTM_STATE_OS_GO | BOOTM_STATE_OS_FAKE_GO)) {
-		bootstage_mark(BOOTSTAGE_ID_RUN_OS);
-		printf("## Transferring control to Linux (at address %08lx)...\n",
-		       images->ep);
-		reset_cpu(0);
-	}
-
-	return 0;
-}
-
 int cleanup_before_linux(void)
 {
 	return 0;
diff --git a/arch/sandbox/lib/Makefile b/arch/sandbox/lib/Makefile
index 75b135cfc0ef0a254e47a5a2441b99ff6eb17698..96761e27f7a38a80a20176d85ca3c2f2242cc65a 100644
--- a/arch/sandbox/lib/Makefile
+++ b/arch/sandbox/lib/Makefile
@@ -9,3 +9,4 @@
 
 obj-y	+= interrupts.o
 obj-$(CONFIG_PCI)	+= pci_io.o
+obj-$(CONFIG_CMD_BOOTM) += bootm.o
diff --git a/arch/sandbox/lib/bootm.c b/arch/sandbox/lib/bootm.c
new file mode 100644
index 0000000000000000000000000000000000000000..8ddf4ef30d1d919c743d2cf44e83ddc65845f5eb
--- /dev/null
+++ b/arch/sandbox/lib/bootm.c
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
+{
+	if (flag & (BOOTM_STATE_OS_GO | BOOTM_STATE_OS_FAKE_GO)) {
+		bootstage_mark(BOOTSTAGE_ID_RUN_OS);
+		printf("## Transferring control to Linux (at address %08lx)...\n",
+		       images->ep);
+		reset_cpu(0);
+	}
+
+	return 0;
+}