diff --git a/Makefile b/Makefile
index 3b0864ae8e..df4a54e204 100644
--- a/Makefile
+++ b/Makefile
@@ -1402,14 +1402,18 @@ quiet_cmd_ldr = LD      $@
 cmd_ldr = $(LD) $(LDFLAGS_$(@F)) \
 	       $(filter-out FORCE,$^) -o $@
 
-u-boot.rom: u-boot-x86-16bit.bin u-boot.bin \
+u-boot.rom: u-boot-x86-start16.bin u-boot-x86-reset16.bin u-boot.bin \
 		$(if $(CONFIG_SPL_X86_16BIT_INIT),spl/u-boot-spl.bin) \
 		$(if $(CONFIG_TPL_X86_16BIT_INIT),tpl/u-boot-tpl.bin) \
 		$(if $(CONFIG_HAVE_REFCODE),refcode.bin) FORCE
 	$(call if_changed,binman)
 
-OBJCOPYFLAGS_u-boot-x86-16bit.bin := -O binary -j .start16 -j .resetvec
-u-boot-x86-16bit.bin: u-boot FORCE
+OBJCOPYFLAGS_u-boot-x86-start16.bin := -O binary -j .start16
+u-boot-x86-start16.bin: u-boot FORCE
+	$(call if_changed,objcopy)
+
+OBJCOPYFLAGS_u-boot-x86-reset16.bin := -O binary -j .resetvec
+u-boot-x86-reset16.bin: u-boot FORCE
 	$(call if_changed,objcopy)
 endif
 
diff --git a/arch/x86/dts/u-boot.dtsi b/arch/x86/dts/u-boot.dtsi
index daeb168b65..0e87b88e10 100644
--- a/arch/x86/dts/u-boot.dtsi
+++ b/arch/x86/dts/u-boot.dtsi
@@ -120,14 +120,23 @@
 	x86-start16-tpl {
 		offset = <CONFIG_SYS_X86_START16>;
 	};
+	x86-reset16-tpl {
+		offset = <CONFIG_RESET_VEC_LOC>;
+	};
 #elif defined(CONFIG_SPL)
 	x86-start16-spl {
 		offset = <CONFIG_SYS_X86_START16>;
 	};
+	x86-reset16-spl {
+		offset = <CONFIG_RESET_VEC_LOC>;
+	};
 #else
 	x86-start16 {
 		offset = <CONFIG_SYS_X86_START16>;
 	};
+	x86-reset16 {
+		offset = <CONFIG_RESET_VEC_LOC>;
+	};
 #endif
 };
 #endif
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index 7af6b120b6..0f3d89b215 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -229,9 +229,11 @@ ALL-y	+= $(obj)/boot.bin
 endif
 
 ifdef CONFIG_TPL_BUILD
-ALL-$(CONFIG_TPL_X86_16BIT_INIT) += $(obj)/u-boot-x86-16bit-tpl.bin
+ALL-$(CONFIG_TPL_X86_16BIT_INIT) += $(obj)/u-boot-x86-start16-tpl.bin \
+	$(obj)/u-boot-x86-reset16-tpl.bin
 else
-ALL-$(CONFIG_SPL_X86_16BIT_INIT) += $(obj)/u-boot-x86-16bit-spl.bin
+ALL-$(CONFIG_SPL_X86_16BIT_INIT) += $(obj)/u-boot-x86-start16-spl.bin \
+	$(obj)/u-boot-x86-reset16-spl.bin
 endif
 
 ALL-$(CONFIG_ARCH_ZYNQ)		+= $(obj)/boot.bin
@@ -337,12 +339,20 @@ OBJCOPYFLAGS_$(SPL_BIN)-nodtb.bin = $(SPL_OBJCFLAGS) -O binary \
 $(obj)/$(SPL_BIN)-nodtb.bin: $(obj)/$(SPL_BIN) FORCE
 	$(call if_changed,objcopy)
 
-OBJCOPYFLAGS_u-boot-x86-16bit-spl.bin := -O binary -j .start16 -j .resetvec
-$(obj)/u-boot-x86-16bit-spl.bin: $(obj)/u-boot-spl FORCE
+OBJCOPYFLAGS_u-boot-x86-start16-spl.bin := -O binary -j .start16
+$(obj)/u-boot-x86-start16-spl.bin: $(obj)/u-boot-spl FORCE
 	$(call if_changed,objcopy)
 
-OBJCOPYFLAGS_u-boot-x86-16bit-tpl.bin := -O binary -j .start16 -j .resetvec
-$(obj)/u-boot-x86-16bit-tpl.bin: $(obj)/u-boot-tpl FORCE
+OBJCOPYFLAGS_u-boot-x86-start16-tpl.bin := -O binary -j .start16
+$(obj)/u-boot-x86-start16-tpl.bin: $(obj)/u-boot-tpl FORCE
+	$(call if_changed,objcopy)
+
+OBJCOPYFLAGS_u-boot-x86-reset16-spl.bin := -O binary -j .resetvec
+$(obj)/u-boot-x86-reset16-spl.bin: $(obj)/u-boot-spl FORCE
+	$(call if_changed,objcopy)
+
+OBJCOPYFLAGS_u-boot-x86-reset16-tpl.bin := -O binary -j .resetvec
+$(obj)/u-boot-x86-reset16-tpl.bin: $(obj)/u-boot-tpl FORCE
 	$(call if_changed,objcopy)
 
 LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL)
diff --git a/tools/binman/README.entries b/tools/binman/README.entries
index 55e3fa0dcc..d17b3cb078 100644
--- a/tools/binman/README.entries
+++ b/tools/binman/README.entries
@@ -989,14 +989,15 @@ Entry: x86-start16: x86 16-bit start-up code for U-Boot
 -------------------------------------------------------
 
 Properties / Entry arguments:
-    - filename: Filename of u-boot-x86-16bit.bin (default
-        'u-boot-x86-16bit.bin')
+    - filename: Filename of u-boot-x86-start16.bin (default
+        'u-boot-x86-start16.bin')
 
 x86 CPUs start up in 16-bit mode, even if they are 32-bit CPUs. This code
-must be placed at a particular address. This entry holds that code. It is
-typically placed at offset CONFIG_SYS_X86_START16. The code is responsible
-for changing to 32-bit mode and jumping to U-Boot's entry point, which
-requires 32-bit mode (for 32-bit U-Boot).
+must be placed in the top 64KB of the ROM. The reset code jumps to it. This
+entry holds that code. It is typically placed at offset
+CONFIG_SYS_X86_START16. The code is responsible for changing to 32-bit mode
+and jumping to U-Boot's entry point, which requires 32-bit mode (for 32-bit
+U-Boot).
 
 For 64-bit U-Boot, the 'x86_start16_spl' entry type is used instead.
 
@@ -1006,16 +1007,17 @@ Entry: x86-start16-spl: x86 16-bit start-up code for SPL
 --------------------------------------------------------
 
 Properties / Entry arguments:
-    - filename: Filename of spl/u-boot-x86-16bit-spl.bin (default
-        'spl/u-boot-x86-16bit-spl.bin')
+    - filename: Filename of spl/u-boot-x86-start16-spl.bin (default
+        'spl/u-boot-x86-start16-spl.bin')
 
-x86 CPUs start up in 16-bit mode, even if they are 64-bit CPUs. This code
-must be placed at a particular address. This entry holds that code. It is
-typically placed at offset CONFIG_SYS_X86_START16. The code is responsible
-for changing to 32-bit mode and starting SPL, which in turn changes to
-64-bit mode and jumps to U-Boot (for 64-bit U-Boot).
+x86 CPUs start up in 16-bit mode, even if they are 32-bit CPUs. This code
+must be placed in the top 64KB of the ROM. The reset code jumps to it. This
+entry holds that code. It is typically placed at offset
+CONFIG_SYS_X86_START16. The code is responsible for changing to 32-bit mode
+and jumping to U-Boot's entry point, which requires 32-bit mode (for 32-bit
+U-Boot).
 
-For 32-bit U-Boot, the 'x86_start16' entry type is used instead.
+For 32-bit U-Boot, the 'x86-start16' entry type is used instead.
 
 
 
@@ -1023,15 +1025,17 @@ Entry: x86-start16-tpl: x86 16-bit start-up code for TPL
 --------------------------------------------------------
 
 Properties / Entry arguments:
-    - filename: Filename of tpl/u-boot-x86-16bit-tpl.bin (default
-        'tpl/u-boot-x86-16bit-tpl.bin')
+    - filename: Filename of tpl/u-boot-x86-start16-tpl.bin (default
+        'tpl/u-boot-x86-start16-tpl.bin')
 
-x86 CPUs start up in 16-bit mode, even if they are 64-bit CPUs. This code
-must be placed at a particular address. This entry holds that code. It is
-typically placed at offset CONFIG_SYS_X86_START16. The code is responsible
-for changing to 32-bit mode and starting TPL, which in turn jumps to SPL.
+x86 CPUs start up in 16-bit mode, even if they are 32-bit CPUs. This code
+must be placed in the top 64KB of the ROM. The reset code jumps to it. This
+entry holds that code. It is typically placed at offset
+CONFIG_SYS_X86_START16. The code is responsible for changing to 32-bit mode
+and jumping to U-Boot's entry point, which requires 32-bit mode (for 32-bit
+U-Boot).
 
-If TPL is not being used, the 'x86_start16_spl or 'x86_start16' entry types
+If TPL is not being used, the 'x86-start16-spl or 'x86-start16' entry types
 may be used instead.
 
 
diff --git a/tools/binman/etype/x86_start16.py b/tools/binman/etype/x86_start16.py
index 7d32ecd321..6736b692d5 100644
--- a/tools/binman/etype/x86_start16.py
+++ b/tools/binman/etype/x86_start16.py
@@ -12,14 +12,15 @@ class Entry_x86_start16(Entry_blob):
     """x86 16-bit start-up code for U-Boot
 
     Properties / Entry arguments:
-        - filename: Filename of u-boot-x86-16bit.bin (default
-            'u-boot-x86-16bit.bin')
+        - filename: Filename of u-boot-x86-start16.bin (default
+            'u-boot-x86-start16.bin')
 
     x86 CPUs start up in 16-bit mode, even if they are 32-bit CPUs. This code
-    must be placed at a particular address. This entry holds that code. It is
-    typically placed at offset CONFIG_SYS_X86_START16. The code is responsible
-    for changing to 32-bit mode and jumping to U-Boot's entry point, which
-    requires 32-bit mode (for 32-bit U-Boot).
+    must be placed in the top 64KB of the ROM. The reset code jumps to it. This
+    entry holds that code. It is typically placed at offset
+    CONFIG_SYS_X86_START16. The code is responsible for changing to 32-bit mode
+    and jumping to U-Boot's entry point, which requires 32-bit mode (for 32-bit
+    U-Boot).
 
     For 64-bit U-Boot, the 'x86_start16_spl' entry type is used instead.
     """
@@ -27,4 +28,4 @@ class Entry_x86_start16(Entry_blob):
         Entry_blob.__init__(self, section, etype, node)
 
     def GetDefaultFilename(self):
-        return 'u-boot-x86-16bit.bin'
+        return 'u-boot-x86-start16.bin'
diff --git a/tools/binman/etype/x86_start16_spl.py b/tools/binman/etype/x86_start16_spl.py
index d85909e7ae..c8c70639de 100644
--- a/tools/binman/etype/x86_start16_spl.py
+++ b/tools/binman/etype/x86_start16_spl.py
@@ -12,19 +12,20 @@ class Entry_x86_start16_spl(Entry_blob):
     """x86 16-bit start-up code for SPL
 
     Properties / Entry arguments:
-        - filename: Filename of spl/u-boot-x86-16bit-spl.bin (default
-            'spl/u-boot-x86-16bit-spl.bin')
+        - filename: Filename of spl/u-boot-x86-start16-spl.bin (default
+            'spl/u-boot-x86-start16-spl.bin')
 
-    x86 CPUs start up in 16-bit mode, even if they are 64-bit CPUs. This code
-    must be placed at a particular address. This entry holds that code. It is
-    typically placed at offset CONFIG_SYS_X86_START16. The code is responsible
-    for changing to 32-bit mode and starting SPL, which in turn changes to
-    64-bit mode and jumps to U-Boot (for 64-bit U-Boot).
+    x86 CPUs start up in 16-bit mode, even if they are 32-bit CPUs. This code
+    must be placed in the top 64KB of the ROM. The reset code jumps to it. This
+    entry holds that code. It is typically placed at offset
+    CONFIG_SYS_X86_START16. The code is responsible for changing to 32-bit mode
+    and jumping to U-Boot's entry point, which requires 32-bit mode (for 32-bit
+    U-Boot).
 
-    For 32-bit U-Boot, the 'x86_start16' entry type is used instead.
+    For 32-bit U-Boot, the 'x86-start16' entry type is used instead.
     """
     def __init__(self, section, etype, node):
         Entry_blob.__init__(self, section, etype, node)
 
     def GetDefaultFilename(self):
-        return 'spl/u-boot-x86-16bit-spl.bin'
+        return 'spl/u-boot-x86-start16-spl.bin'
diff --git a/tools/binman/etype/x86_start16_tpl.py b/tools/binman/etype/x86_start16_tpl.py
index 46ce169ae0..5261a8adf0 100644
--- a/tools/binman/etype/x86_start16_tpl.py
+++ b/tools/binman/etype/x86_start16_tpl.py
@@ -12,19 +12,21 @@ class Entry_x86_start16_tpl(Entry_blob):
     """x86 16-bit start-up code for TPL
 
     Properties / Entry arguments:
-        - filename: Filename of tpl/u-boot-x86-16bit-tpl.bin (default
-            'tpl/u-boot-x86-16bit-tpl.bin')
+        - filename: Filename of tpl/u-boot-x86-start16-tpl.bin (default
+            'tpl/u-boot-x86-start16-tpl.bin')
 
-    x86 CPUs start up in 16-bit mode, even if they are 64-bit CPUs. This code
-    must be placed at a particular address. This entry holds that code. It is
-    typically placed at offset CONFIG_SYS_X86_START16. The code is responsible
-    for changing to 32-bit mode and starting TPL, which in turn jumps to SPL.
+    x86 CPUs start up in 16-bit mode, even if they are 32-bit CPUs. This code
+    must be placed in the top 64KB of the ROM. The reset code jumps to it. This
+    entry holds that code. It is typically placed at offset
+    CONFIG_SYS_X86_START16. The code is responsible for changing to 32-bit mode
+    and jumping to U-Boot's entry point, which requires 32-bit mode (for 32-bit
+    U-Boot).
 
-    If TPL is not being used, the 'x86_start16_spl or 'x86_start16' entry types
+    If TPL is not being used, the 'x86-start16-spl or 'x86-start16' entry types
     may be used instead.
     """
     def __init__(self, section, etype, node):
         Entry_blob.__init__(self, section, etype, node)
 
     def GetDefaultFilename(self):
-        return 'tpl/u-boot-x86-16bit-tpl.bin'
+        return 'tpl/u-boot-x86-start16-tpl.bin'
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 77445814a7..04127faa6f 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -120,10 +120,10 @@ class TestFunctional(unittest.TestCase):
 
         TestFunctional._MakeInputFile('u-boot-br.bin', PPC_MPC85XX_BR_DATA)
 
-        TestFunctional._MakeInputFile('u-boot-x86-16bit.bin', X86_START16_DATA)
-        TestFunctional._MakeInputFile('spl/u-boot-x86-16bit-spl.bin',
+        TestFunctional._MakeInputFile('u-boot-x86-start16.bin', X86_START16_DATA)
+        TestFunctional._MakeInputFile('spl/u-boot-x86-start16-spl.bin',
                                       X86_START16_SPL_DATA)
-        TestFunctional._MakeInputFile('tpl/u-boot-x86-16bit-tpl.bin',
+        TestFunctional._MakeInputFile('tpl/u-boot-x86-start16-tpl.bin',
                                       X86_START16_TPL_DATA)
 
         TestFunctional._MakeInputFile('u-boot-x86-reset16.bin',
