aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/i386/core/stack16.S13
-rw-r--r--src/arch/i386/prefix/dskprefix.S4
-rw-r--r--src/arch/i386/prefix/romprefix.S4
3 files changed, 21 insertions, 0 deletions
diff --git a/src/arch/i386/core/stack16.S b/src/arch/i386/core/stack16.S
new file mode 100644
index 0000000..3380a08
--- /dev/null
+++ b/src/arch/i386/core/stack16.S
@@ -0,0 +1,13 @@
+ .arch i386
+
+/****************************************************************************
+ * Internal stack
+ ****************************************************************************
+ */
+ .section ".stack16"
+ .align 8
+ .globl _stack16
+_stack16:
+ .space 4096
+ .globl _estack16
+_estack16:
diff --git a/src/arch/i386/prefix/dskprefix.S b/src/arch/i386/prefix/dskprefix.S
index 9b1ebaa..1a48716 100644
--- a/src/arch/i386/prefix/dskprefix.S
+++ b/src/arch/i386/prefix/dskprefix.S
@@ -350,6 +350,10 @@ msg1end:
start_runtime:
call install
+ /* Set up real-mode stack */
+ movw %bx, %ss
+ movw $_estack16, %sp
+
/* Jump to .text16 segment */
pushw %ax
pushw $1f
diff --git a/src/arch/i386/prefix/romprefix.S b/src/arch/i386/prefix/romprefix.S
index ced0f49..5200169 100644
--- a/src/arch/i386/prefix/romprefix.S
+++ b/src/arch/i386/prefix/romprefix.S
@@ -139,6 +139,10 @@ exec_vector:
call install
+ /* Set up real-mode stack */
+ movw %bx, %ss
+ movw $_estack16, %sp
+
/* Jump to .text16 segment */
pushw %ax
pushw $1f