aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/x86/reset16.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/x86/reset16.S')
-rw-r--r--src/cpu/x86/reset16.S14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cpu/x86/reset16.S b/src/cpu/x86/reset16.S
new file mode 100644
index 0000000000..38580146b4
--- /dev/null
+++ b/src/cpu/x86/reset16.S
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+ .section ".reset", "ax", %progbits
+ .code16
+.globl _start
+_start:
+ .byte 0xe9
+ .int _start16bit - ( . + 2 )
+ /* Note: The above jump is hand coded to work around bugs in binutils.
+ * 5 byte are used for a 3 byte instruction. This works because x86
+ * is little endian and allows us to use supported 32bit relocations
+ * instead of the weird 16 bit relocations that binutils does not
+ * handle consistently between versions because they are used so rarely.
+ */